diff --git a/share/completions/connmanctl.fish b/share/completions/connmanctl.fish new file mode 100644 index 000000000..df97de307 --- /dev/null +++ b/share/completions/connmanctl.fish @@ -0,0 +1,49 @@ +function __fish_print_connman_services + # connmanctl services follows this pattern (to be interpreted as a regex): + # "[\* ][A ][ORacd ] service_name +identification_string" + # where [\* ] indicates whether a service is a favorite + # [A ] indicates whether a service is in autoconnect mode + # [ORacd ] indicates the current status of the service: online, ready, association, configuration, disconnect or idle + connmanctl services | string replace -r '.{4}(.*) +(.*)' '$2\t$1' +end + +function __fish_print_connman_technologies + connmanctl technologies | string match '*Type*' | string replace -r ' Type = (.*)' '$1' +end + +function __fish_print_connman_vpnconnections + # formatting of the vpn connections: + # " [RCF ] service_name +identification_string" + # where [RCF ] indicates the current status which can be: ready, configuration, failure or idle + connmanctl vpnconnections | string replace -r '.{4}(.*) +(.*)' '$2\t$1' +end + +# connmanctl does not accept options before commands, so requiring the commands to be in second position is okay +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "state" -d "Shows if the system is online or offline" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "technologies" -d "Display technologies" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "clock" -d "Get System Clock Properties" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "enable" -d "Enables given technology or offline mode" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] enable" -a "(__fish_print_connman_technologies) offline" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "disable" -d "Disables given technology or offline mode" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] disable" -a "(__fish_print_connman_technologies) offline" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "tether" -d "Enable, disable tethering, set SSID and passphrase for wifi" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] tether" -a "(__fish_print_connman_technologies)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 3; and contains -- (commandline -opc)[2] tether" -a "on off" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "services" -d "Display services" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] services" -a "(__fish_print_connman_services)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "peers" -d "Display peers" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "scan" -d "Scans for new services for given technology" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] scan" -a "(__fish_print_connman_technologies)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "connect" -d "Connect a given service or peer" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] connect" -a "(__fish_print_connman_services)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "disconnect" -d "Disconnect a given service or peer" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] disconnect" -a "(__fish_print_connman_services)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "config" -d "Set service configuration options" +complete -f -c connmanctl -n "test (count (commandline -opc)) -ge 2; and contains -- (commandline -opc)[2] config" -a "(__fish_print_connman_services)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "monitor" -d "Monitor signals from interfaces" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "vpnconnections" -d "Display VPN connections" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] vpnconnections" -a "(__fish_print_connman_vpnconnections)" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "session" -d "Enable or disable a session" +complete -f -c connmanctl -n "test (count (commandline -opc)) -eq 2; and contains -- (commandline -opc)[2] session" -a "on off connect disconnect config" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "peer_service" -d "(Un)Register a Peer Service" +complete -f -c connmanctl -n "test (count (commandline -opc)) -lt 2" -a "help" -d "Show help"