From 987edf71035b123c86a6394505e370043aa20c74 Mon Sep 17 00:00:00 2001 From: up-n-atom Date: Wed, 13 Sep 2023 22:02:33 -0400 Subject: [PATCH] Support multiple radios in disable wifi radio --- xmo-remote-client.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/xmo-remote-client.py b/xmo-remote-client.py index c354e70..dd5a9bf 100755 --- a/xmo-remote-client.py +++ b/xmo-remote-client.py @@ -133,17 +133,21 @@ async def set_dns_servers(client: SagemcomClient, dns_servers: tuple[IPv4Address @cli.command() -@click.option('--radio') +@click.option('-r', '--radio', multiple=True) @click.pass_obj -async def disable_wifi_radio(client: SagemcomClient, radio: str) -> None: +async def disable_wifi_radio(client: SagemcomClient, radio: Any) -> None: try: value = await client.get_value_by_xpath('Device/WiFi/Radios') - radios = {radio['Alias'] for radio in value if 'Alias' in radio} - if radio is None: - radio = click.prompt('Choose radio', type=click.Choice(radios), show_choices=True) - elif not radio in radios: - raise click.BadParameter(f"radio {radio} does not exist") - await client.set_value_by_xpath(f"Device/WiFi/Radios/Radio[Alias='{radio}']/Enable", False) + active_radios = {radio['Alias'] for radio in value if 'Alias' in radio and \ + 'Enable' in radio and radio['Enable']} + if radio is None or not len(radio): + radio = click.prompt('Choose radio', type=click.Choice(active_radios), show_choices=True), + radios = set(radio) - active_radios + if len(radios): + raise click.BadParameter("Invalid radio(s) {0}".format(", ".join(radios))) + radios = set(radio) & active_radios + for alias in radios: + await client.set_value_by_xpath(f"Device/WiFi/Radios/Radio[Alias='{alias}']/Enable", False) except Exception as e: click.echo(e, err=True) raise click.Abort()