From b79ef12b4ead615df9b94596dde5e208aaf7b5a3 Mon Sep 17 00:00:00 2001 From: teutat3s Date: Wed, 6 Mar 2024 18:51:29 +0100 Subject: [PATCH] fix: add completion for tailscale --- users/teutat3s/home.nix | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/users/teutat3s/home.nix b/users/teutat3s/home.nix index 53a14004..41df0be0 100644 --- a/users/teutat3s/home.nix +++ b/users/teutat3s/home.nix @@ -86,6 +86,47 @@ in { source ${config.age.secrets.environment-secrets.path} source ${flake.inputs.tritonshell.packages.${pkgs.system}.triton-utils}/bin/ttp.sh + _tailscale() + { + local cur prev words cword + _init_completion -n = || return + + if [[ $cword -eq 1 ]]; then + SUBCOMMANDS=$(tailscale --help 2>&1 | awk '/SUBCOMMANDS/{ f = 1; next } /FLAGS/{ f = 0 } f{print $1}') + SUBCOMMANDS="$SUBCOMMANDS debug" + FLAGS="-h --help --socket" + COMPREPLY=( $(compgen -W "$SUBCOMMANDS $FLAGS" -- "$cur" )) + return + else + subcmd="''${COMP_WORDS[1]}" + if [[ "$cur" = *=* ]]; then + COMPREPLY=( $(compgen -W 'false' -- "''${cur#*=}") ) + return + elif [[ "$cur" = -* ]]; then + FLAGS=$(tailscale "$subcmd" --help 2>&1 | awk '/FLAGS/{ f = 1; next } f' | grep -oE -- '--[^ ]+[=]?' | tr -d ',') + FLAGS="$FLAGS --help" + COMPREPLY=( $(compgen -W "$FLAGS" -- "$cur" )) + return + else + case "$subcmd" in + "ping"|"ssh") + IP_AND_HOSTNAME=$(tailscale status 2>&1 | awk '{print $1"\n"$2}') + COMPREPLY=( $(compgen -W "$IP_AND_HOSTNAME" -- "$cur" )) + ;; + "debug") + SUBCOMMANDS="" + if [[ $cword -eq 2 ]]; then + SUBCOMMANDS=$(tailscale "$subcmd" --help 2>&1 | awk '/SUBCOMMANDS/{ f = 1; next } /FLAGS/{ f = 0 } f{print $1}') + fi + FLAGS=$(tailscale "$subcmd" --help 2>&1 | awk '/FLAGS/{ f = 1; next } f' | grep -oE -- '--[^ ]+[=]?' | tr -d ',') + COMPREPLY=( $(compgen -W "$SUBCOMMANDS $FLAGS" -- "$cur" )) + ;; + esac + fi + fi + } + + complete -F _tailscale tailscale complete -C ${pkgs.consul}/bin/consul consul complete -C ${pkgs.nomad}/bin/nomad nomad complete -C ${pkgs.vault}/bin/vault vault