diff options
Diffstat (limited to 'bash-completion/importare')
-rw-r--r-- | bash-completion/importare | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/bash-completion/importare b/bash-completion/importare new file mode 100644 index 000000000..d9a139af1 --- /dev/null +++ b/bash-completion/importare @@ -0,0 +1,159 @@ +# Bash completion function for importare +# vim: set et sw=4 sts=4 ts=4 ft=sh : + +# NOTE: This is still a work in progress, don't expect it to work well or +# properly right now. + +_importare() { + local cur prev opts action + + local action_opts general_opts source_opts + local install_opts deplist_opts all_opts + + COMPREPLY=() + cur=${COMP_WORDS[COMP_CWORD]} + prev=${COMP_WORDS[COMP_CWORD-1]} + + action_opts="--install -i \ + --version -V \ + --help -h" + general_opts="--log-level \ + --no-colour \ + --no-color \ + --environment -E" + source_opts="--location -l" + deplist_opts="--dl-reinstall \ + --dl-reinstall-scm \ + --dl-upgrade \ + --dl-new-slots \ + --dl-downgrade \ + --dl-deps-default \ + --dl-installed-deps-pre \ + --dl-installed-deps-runtime \ + --dl-installed-deps-post \ + --dl-uninstalled-deps-pre \ + --dl-uninstalled-deps-runtime \ + --dl-uninstalled-deps-post \ + --dl-uninstalled-deps-suggested \ + --dl-suggested \ + --dl-circular \ + --dl-blocks \ + --dl-override-masks \ + --dl-fall-back" + install_opts="--pretend -p \ + --destinations -d \ + --no-config-protection \ + --show-reasons \ + --show-use-descriptions \ + --continue-on-failure \ + ${source_opts} \ + ${deplist_opts}" + + all_opts="${action_opts} ${general_opts} ${source_opts} ${deplist_opts} ${install_opts} ${install_opts}" + + local x + for x in "${COMP_WORDS[@]}" ; do + case "${x}" in + --install|-i) + action="install" + break + ;; + --version|-V|--help|-h) + action="info" + break + ;; + esac + done + + case "${cur}" in + -*) + local opts= + [[ -z "${action}" ]] && action="all" + opts="${action}_opts" + + COMPREPLY=($(compgen -W "${general_opts} ${!opts}" -- "${cur}")) + return 0 + ;; + *) + case "${prev}" in + ## Enum operators + --log-level|-L) + COMPREPLY=($(compgen -W "debug qa warning silent" -- "${cur}")) + return 0 + ;; + --show-reasons) + COMPREPLY=($(compgen -W "none summary full" -- "${cur}")) + return 0 + ;; + --show-use-descriptions) + COMPREPLY=($(compgen -W "none new changed all" -- "${cur}")) + return 0 + ;; + --continue-on-failure) + COMPREPLY=($(compgen -W "if-fetch-only never if-satisfied always" -- "${cur}")) + return 0 + ;; + + --location|-l) + _filedir -d + return 0 + ;; + + --dl-reinstall) + COMPREPLY=($(compgen -W "never always if-use-changed" -- "${cur}")) + return 0 + ;; + --dl-reinstall-scm) + COMPREPLY=($(compgen -W "never always daily weekly" -- "${cur}")) + return 0 + ;; + --dl-upgrade) + COMPREPLY=($(compgen -W "always as-needed" -- "${cur}")) + return 0 + ;; + --dl-new-slots) + COMPREPLY=($(compgen -W "always as-needed" -- "${cur}")) + return 0 + ;; + --dl-downgrade) + COMPREPLY=($(compgen -W "as-needed warning error" -- "${cur}")) + return 0 + ;; + --dl-deps-default|--dl-installed-deps-pre|--dl-installed-deps-runtime|--dl-installed-deps-post|--dl-uninstalled-deps-pre|--dl-uninstalled-deps-runtime|--dl-uninstalled-deps-post|--dl-uninstalled-deps-suggested) + COMPREPLY=($(compgen -W "pre pre-or-post post try-post discard" -- "${cur}")) + return 0 + ;; + + --dl-suggested) + COMPREPLY=($(compgen -W "show install discard" -- "${cur}")) + return 0 + ;; + --dl-circular) + COMPREPLY=($(compgen -W "error discard" -- "${cur}")) + return 0 + ;; + --dl-blocks) + COMPREPLY=($(compgen -W "accumulate error discard" -- "${cur}")) + return 0 + ;; + --dl-override-masks) + COMPREPLY=($(compgen -W "tilde-keyword unkeyworded profile repository license" -- "${cur}")) + return 0 + ;; + --dl-fall-back) + COMPREPLY=($(compgen -W "as-needed-except-targets as-needed never" -- "${cur}")) + return 0 + ;; + *) + case "${action}" in + --install|-i) + return 0 + ;; + esac + ;; + esac + ;; + esac +} + +complete -o filenames -F _importare importare |