##################################################################### command -v compdef >/dev/null 2>&1 || return 0 ##################################################################### for CLI in kubectl helm flux do eval "_${CLI[1]}() { local SUBSESSION=0 echo \${words[2]} | grep -q '^[0-9]\\+$' && SUBSESSION=\${words[2]} local PASSTHROUGH_WORDS=($CLI) [[ \$CURRENT -gt 2 ]] && echo \${words[2]} | grep -qv '^[0-9]\\+$' && { local KUBECONTEXT=\$(k \$SUBSESSION meta get context) local NAMESPACE=\$(k \$SUBSESSION meta get namespace) [ \$KUBECONTEXT ] \ && PASSTHROUGH_WORDS+=($([[ $CLI =~ ^helm$ ]] && echo '--kube-context' || echo '--context') \$KUBECONTEXT) \ ; [ \$NAMESPACE ] \ && PASSTHROUGH_WORDS+=(--namespace \$NAMESPACE) \ ; } local DELIMIT_COUNT=0 local WORD for WORD in \${words[@]:1} do case \$WORD in [0-9]* ) continue ;; -- ) echo \$words | grep -q 'exec' && ((DELIMIT_COUNT+=1)) [[ \$DELIMIT_COUNT -eq 0 ]] && ((DELIMIT_COUNT+=1)) && continue ;; esac PASSTHROUGH_WORDS+=(\"\$WORD\") done echo \"\$words\" | grep -q '\\s\\+$' && PASSTHROUGH_WORDS+=(' ') words=\"\$PASSTHROUGH_WORDS\" _$CLI } " compdef _${CLI[1]} ${CLI[1]} done