#!/usr/bin/env bash _dokku_complete_goals_fetch() { dokku --quiet help --all | awk '/^ /{ print $1 }' | sort > "/var/cache/dokku-completion" } _dokku_complete_verify() { declare desc="shows bash completion" declare COMMAND="$1" local COMMANDS="" if [[ ! -f "/var/cache/dokku-completion" ]] || [[ -s "/var/cache/dokku-completion" ]]; then _dokku_complete_goals_fetch fi _dokku_complete_goals=$(cat "/var/cache/dokku-completion") while read -r fn; do if [[ -z "$COMMAND" ]] || [[ "$fn" == $COMMAND* ]]; then COMMANDS="${COMMANDS};${fn}" fi done <<< "$_dokku_complete_goals" echo "${COMMANDS#";"}" } have dokku && _dokku_complete() { local cur prev _get_comp_words_by_ref -n : cur opts=$(_dokku_complete_verify "${cur}") COMPREPLY=($(IFS=";" compgen -W "$opts" -- "$cur")) __ltrim_colon_completions "$cur" } && complete -F _dokku_complete dokku if [[ ! -f "/var/cache/dokku-completion" ]] || [[ -s "/var/cache/dokku-completion" ]]; then have dokku && export -f _dokku_complete_goals_fetch && nohup bash -c _dokku_complete_goals_fetch >/dev/null 2>&1 & fi