Source code for gatenet.cli.commands.wifi

"""
wifi.py — Implements the 'wifi' CLI command for Wi-Fi SSID scanning.
"""
[docs] def cmd_wifi(args): """ Wi-Fi SSID scanning CLI command. Scans for available Wi-Fi networks and displays SSID, signal, and security in the selected output format. Args: args (argparse.Namespace): output_format (str, optional): Output style. One of 'table', 'plain', or 'json'. color (bool, optional): Enable colorized output. Default is True. verbosity (str or int, optional): Verbosity level. One of 'debug', 'info', 0, or 1. Default is 'info'. interface (str, optional): WiFi interface to scan. Example: .. code-block:: bash gatenet wifi --output plain --color false --interface en0 Returns: None """ output_format = getattr(args, 'output_format', getattr(args, 'output', 'table')) interface = getattr(args, 'interface', None) """ Wi-Fi SSID scanning CLI command. Args: args: argparse.Namespace with 'output' attribute. Scans for available Wi-Fi networks and displays SSID, signal, and security in the selected output format. """ from gatenet.utils import scan_wifi_networks from rich.console import Console from rich.table import Table import json console = Console() console.print("[bold blue][wifi] Scanning for Wi-Fi SSIDs...[/bold blue]") networks = scan_wifi_networks(interface) if not networks: console.print("[bold red]No Wi-Fi networks found.[/bold red]") raise SystemExit(1) if "error" in networks[0]: console.print(f"[bold red][wifi] Error: {networks[0]['error']}[/bold red]") raise SystemExit(1) if output_format == "json": console.print_json(json.dumps(networks)) elif output_format == "plain": for net in networks: ssid = net.get("ssid", "") signal = net.get("signal", "") security = net.get("security", "") print(f"{ssid}\t{signal}\t{security}") else: table = Table(title="Wi-Fi Networks", show_lines=True) table.add_column("SSID", style="cyan") table.add_column("Signal", style="green") table.add_column("Security", style="magenta") for net in networks: table.add_row( net.get("ssid", ""), net.get("signal", ""), net.get("security", "") ) console.print(table)