# Complétion bash pour « git deploy » et « git hotfix ». # Complète le 1er argument avec les remotes, le 2e avec les branches locales, # le tout lu en direct depuis le dépôt courant. # # À sourcer dans ~/.bashrc APRÈS la complétion git, par ex. : # source /chemin/vers/src/bin/deploy-completion.bash _deploy_complete_positional() { local i args=() cur="${COMP_WORDS[COMP_CWORD]}" # Recense les arguments positionnels déjà saisis (hors options et valeur de -m) for ((i = 2; i < COMP_CWORD; i++)); do case "${COMP_WORDS[i-1]}" in -m|--message) continue ;; esac case "${COMP_WORDS[i]}" in -*) continue ;; esac args+=("${COMP_WORDS[i]}") done case "${#args[@]}" in 0) COMPREPLY=($(compgen -W "$(git remote 2>/dev/null)" -- "$cur")) ;; 1) COMPREPLY=($(compgen -W "$(git for-each-ref --format='%(refname:short)' refs/heads/ 2>/dev/null)" -- "$cur")) ;; *) COMPREPLY=() ;; esac } # Hooks reconnus par la complétion git pour les sous-commandes personnalisées. _git_deploy() { _deploy_complete_positional; } _git_hotfix() { _deploy_complete_positional; }