# /usr/share/bash-completion/completions/salsa # Bash command completion for ‘salsa(1)’. # Documentation: ‘bash(1)’, section “Programmable Completion”. shopt -s progcomp _salsa_completion () { COMPREPLY=() local cur="${COMP_WORDS[COMP_CWORD]}" local prev="${COMP_WORDS[COMP_CWORD-1]}" local opts="" # Source: ./lib/Devscripts/Config.pm:sub parse_command_line opts+=" --help" # Source: ./lib/Devscripts/Output.pm:sub ds_prompt opts+=" --info" # Source: ./lib/Devscripts/Config.pm:[...]$ARGV[0] opts+=" --conf-file --no-conf" # Source: ./lib/Devscripts/Salsa/Config.pm:use constant keys # Note: '!' == '-- --no-', '|' # Headings: $ grep '^ #' ./lib/Devscripts/Salsa/Config.pm # General salsa opts+=" --chdir --cache-file --no-cache --path" # Responses opts+=" --yes --no-yes --no-fail" # Output opts+=" --verbose --no-verbose --debug --info" # General GitLab opts+=" --user --user-id --group --group-id --token --token-file" # List/search opts+=" --all --all-archived --archived --no-archived" opts+=" --skip --skip-file --no-skip" # Features opts+=" --analytics --auto-devops --container --environments" opts+=" --feature-flags --forks --infrastructure --issues --jobs --lfs" opts+=" --monitor --mr --packages --pages --releases --repo --service-desk" opts+=" --request-access --requirements --security-compliance " opts+=" --snippets --wiki" # Branding opts+=" --avatar-path --desc --no-desc --desc-pattern" # Notification opts+=" --email --no-email --disable-email --no-disable-email" opts+=" --email-recipient --irc-channel --irker --no-irker --disable-irker" opts+=" --no-disable-irker --irker-host --irker-port --kgb --no-kgb" opts+=" --disable-kgb --no-disable-kgb --kgb-options --tagpending" opts+=" --no-tagpending --disable-tagpending --no-disable-tagpending" # Branch opts+=" --rename-head --no-rename-head --source-branch --dest-branch" opts+=" --enable-remove-source-branch --no-enable-remove-source-branch" opts+=" --disable-remove-source-branch --no-disable-remove-source-branch" # Merge requests opts+=" --mr-allow-squash --no-mr-allow-squash --mr-desc --mr-dst-branch" opts+=" --mr-dst-project --mr-remove-source-branch" opts+=" --no-mr-remove-source-branch --mr-src-branch --mr-src-project" opts+=" --mr-title" # CI opts+=" --build-timeout --ci-config-path" # Pipeline schedules opts+=" --schedule-desc --schedule-ref --schedule-cron --schedule-tz" opts+=" --schedule-enable --no-schedule-enable --schedule-disable" opts+=" --no-schedule-disable --schedule-run --no-schedule-run" opts+=" --schedule-delete --no-schedule-delete" # Manage other GitLab instances opts+=" --api-url --git-server-url --irker-server-url --kgb-server-url" opts+=" --tagpending-server-url # Source: ./lib/Devscripts/Salsa.pm:sub run -> $ ls ./lib/Devscripts/Salsa/*.pm # Skipping: Config Hooks Repo -> `with "Devscripts::Salsa::";` # Then filter from: ./lib/Devscripts/Salsa.pm:use constant cmd_aliases -> Preferred terminology local commands="" # Headings: $ grep '^=head' ./scripts/salsa.pl # Managing users and groups commands+=" add_user join list_groups update_user whoami" # Managing projects commands+=" checkout fork forks last_ci_status merge_request" commands+=" merge_requests pipeline_schedule pipeline_schedules" commands+=" protect_branch protected_branches push push_repo" commands+=" rename_branch update_safe" # Other commands+=" purge_cache" # Aliases source: ./lib/Devscripts/Salsa.pm:use constant cmd_aliases -> Preferred terminology commands+=" check_projects create_project delete_project delete_user" commands+=" list_projects list_users search_groups search_projects " commands+=" search_users update_projects" # Disable completion for the arguments which require variables afterwards case "${prev}" in --api-url) ;& --desc-pattern) ;& --irc-channel) ;& --path) ;& --group-id) ;& --user-id) COMPREPLY=() ;; *) if [[ "$cur" == -* ]]; then COMPREPLY=( $( compgen -W "$opts" -- $cur ) ) else COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) fi ;; esac return 0 } complete -F _salsa_completion salsa