diff options
| author | 魏曹先生 <1992414357@qq.com> | 2025-11-23 14:22:03 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2025-11-23 14:22:03 +0800 |
| commit | 272d67c53bb7b16e421f55f8c9c3e068b3f7e2d9 (patch) | |
| tree | 2a3bf52107fdaf5e0196a402028d703f70819b25 /scripts/completions/bash/completion_jvv.sh | |
| parent | c92c3bfa5d61a49d5d3ff1cda836c23887670249 (diff) | |
Move bash completion scripts to dedicated directory
Diffstat (limited to 'scripts/completions/bash/completion_jvv.sh')
| -rwxr-xr-x | scripts/completions/bash/completion_jvv.sh | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/scripts/completions/bash/completion_jvv.sh b/scripts/completions/bash/completion_jvv.sh new file mode 100755 index 0000000..ce5668b --- /dev/null +++ b/scripts/completions/bash/completion_jvv.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# The JustEnoughVCS CommandLine Completion + +_jvv_completion() { + local cur prev words cword + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + words=("${COMP_WORDS[@]}") + cword=$COMP_CWORD + + # Current + local cmd="${words[0]}" + local subcmd="${words[1]}" + local subsubcmd="${words[2]}" + + # Subcommands + local base_commands="create init here member service listen members -c -i -H -m -l -M" + + # Subcommands - Member + local member_commands="register remove list help + - ls" + + # Subcommands - Service + local service_commands="listen help" + + # Completion subcommands + if [[ $cword -eq 1 ]]; then + COMPREPLY=($(compgen -W "$base_commands" -- "$cur")) + return 0 + fi + + # Completion member + if [[ "$subcmd" == "member" || "$subcmd" == "-m" ]]; then + if [[ $cword -eq 2 ]]; then + COMPREPLY=($(compgen -W "$member_commands" -- "$cur")) + return 0 + fi + + case "$subsubcmd" in + "remove"|"-") + if [[ $cword -eq 3 ]]; then + # Use jvv member list --raw + local members + members=$($cmd member list --raw 2>/dev/null) + COMPREPLY=($(compgen -W "$members" -- "$cur")) + fi + ;; + esac + return 0 + fi + + # Completion service + if [[ "$subcmd" == "service" ]]; then + if [[ $cword -eq 2 ]]; then + COMPREPLY=($(compgen -W "$service_commands" -- "$cur")) + return 0 + fi + return 0 + fi + + # aliases + case "$subcmd" in + "-m") + if [[ $cword -eq 2 ]]; then + COMPREPLY=($(compgen -W "$member_commands" -- "$cur")) + fi + ;; + "listen"|"-l") + # listen command has no arguments to complete + ;; + "members"|"-M") + # members command has no arguments to complete + ;; + esac +} + +# Register completion function +complete -F _jvv_completion jvv |
