Selaa lähdekoodia

Create a bash completion script.

Just adding it to the repo, but it still needs to be dealt with during install.
Probably put it in $ZT_HOME and then symlink to the proper place for the distro?

searches $ZT_HOME/networks.d/ for network IDs
searches HISTORY for 16 digit numbers that look like network IDs.
Travis LaDuke 6 vuotta sitten
vanhempi
commit
c92e030a4b
1 muutettua tiedostoa jossa 57 lisäystä ja 0 poistoa
  1. 57 0
      zerotier-cli-completion.bash

+ 57 - 0
zerotier-cli-completion.bash

@@ -0,0 +1,57 @@
+#compdef zerotier-cli
+#autoload
+
+
+_get_network_ids ()
+{
+    if [[ "$OSTYPE" == "darwin"* ]]; then
+        COMPREPLY=($(compgen -W "$(ls -1 /Library/Application\ Support/ZeroTier/One/networks.d | cut -c 1-16)" -- ${cur}))
+    else
+        COMPREPLY=($(compgen -W "$(ls -1 /var/lib/zerotier-one/networks.d | cut -c 1-16)" -- ${cur}))
+    fi
+}
+
+_get_network_ids_from_history ()
+{
+    COMPREPLY=($(compgen -W "$(fc -l -1000 -1 | sed -n 's/.*\([[:xdigit:]]\{16\}\).*/\1/p')" -- ${cur}))
+}
+
+_zerotier-cli_completions()
+{
+    local cur prev
+
+    cur=${COMP_WORDS[COMP_CWORD]}
+    prev=${COMP_WORDS[COMP_CWORD-1]}
+
+    case ${COMP_CWORD} in
+        1)
+            COMPREPLY=($(compgen -W "info listpeers peers listnetworks join leave set get listmoons orbit deorbit" -- ${cur}))
+            ;;
+        2)
+            case ${prev} in
+                leave)
+                    _get_network_ids
+                    ;;
+                join)
+                    _get_network_ids_from_history
+                    ;;
+                set)
+                    _get_network_ids
+                    ;;
+                get)
+                    _get_network_ids
+                    ;;
+                *)
+                    COMPREPLY=()
+                    ;;
+            esac
+            ;;
+        *)
+            COMPREPLY=()
+            ;;
+    esac
+}
+
+complete -F _zerotier-cli_completions zerotier-cli
+
+