#compdef ghcup local request local completions local word local index=$((CURRENT - 1)) request=(--bash-completion-enriched --bash-completion-index $index) for arg in ${words[@]}; do request=(${request[@]} --bash-completion-word $arg) done IFS=$'\n' completions=($( ghcup "${request[@]}" )) for word in $completions; do local -a parts # Split the line at a tab if there is one. IFS=$'\t' parts=($( echo $word )) if [[ -n $parts[2] ]]; then if [[ $word[1] == "-" ]]; then local desc=("$parts[1] ($parts[2])") compadd -d desc -- $parts[1] else local desc=($(print -f "%-019s -- %s" $parts[1] $parts[2])) compadd -l -d desc -- $parts[1] fi else compadd -f -- $word fi done