diff --git a/fish/completions/user/ksecret.fish b/fish/completions/user/ksecret.fish new file mode 100644 index 0000000..51a57f9 --- /dev/null +++ b/fish/completions/user/ksecret.fish @@ -0,0 +1,21 @@ +# Vervollständige Secret-Namen aus aktuellem oder gegebenem Namespace +function __ksecret_list_secrets + set -l ns (commandline -opc | grep -oE '\-n\s+\S+' | awk '{print $2}') + if test -n "$ns" + kubectl get secrets -n $ns -o json | jq -r '.items[].metadata.name' + else + kubectl get secrets -o json | jq -r '.items[].metadata.name' + end +end + +# Vervollständige Namespace-Namen +function __ksecret_list_namespaces + kubectl get ns -o json | jq -r '.items[].metadata.name' +end + +# Vervollständigung für secret-name (erstes Argument) +complete -c ksecret -n '__fish_use_subcommand' -a '(__ksecret_list_secrets)' -f -d "Secret name" + +# Vervollständigung für -n (Namespace-Flag) +complete -c ksecret -s n -l namespace -x -a '(__ksecret_list_namespaces)' -d "Namespace" + diff --git a/fish/config.fish b/fish/config.fish index 4a968ab..5e3a2c4 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -22,3 +22,15 @@ zoxide init fish | source alias rm "trash -v" alias ll "eza -l" alias ls "eza" + +for f in ~/.config/fish/functions/user/*.fish + source $f +end + +for f in ~/.config/fish/completions/user/*.fish + source $f +end + +# Enable starship +starship init fish | source + diff --git a/fish/fish_plugins b/fish/fish_plugins new file mode 100644 index 0000000..d1e0a6f --- /dev/null +++ b/fish/fish_plugins @@ -0,0 +1,4 @@ +jorgebucaran/fisher +patrickf1/fzf.fish +jorgebucaran/nvm.fish +jethrokuan/z diff --git a/fish/functions/user/ksecret.fish b/fish/functions/user/ksecret.fish new file mode 100644 index 0000000..ff64727 --- /dev/null +++ b/fish/functions/user/ksecret.fish @@ -0,0 +1,48 @@ +function ksecret + set -l namespace "" + set -l secret_name "" + + # Manuelles Argument-Parsen + while set -q argv[1] + switch $argv[1] + case -n + if not set -q argv[2] + echo "Error: Missing namespace after -n" >&2 + return 1 + end + set namespace $argv[2] + set argv $argv[3..-1] + case --help -h + echo "Usage: ksecret [-n ]" + return 0 + case '*' + if test -z "$secret_name" + set secret_name $argv[1] + set argv $argv[2..-1] + else + echo "Error: Unknown argument $argv[1]" >&2 + return 1 + end + end + end + + if test -z "$secret_name" + echo "Error: secret name is required" >&2 + return 1 + end + + if test -n "$namespace" + if not kubectl get namespace "$namespace" > /dev/null 2>&1 + echo "Error: Namespace '$namespace' does not exist" >&2 + return 1 + end + kubectl get secret $secret_name -n $namespace -o json | jq -r ' + .data | to_entries[] | "\(.key): \(.value | @base64d)" + ' + else + kubectl get secret $secret_name -o json | jq -r ' + .data | to_entries[] | "\(.key): \(.value | @base64d)" + ' + end +end +