# 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 \ --compact \ --no-compact" source_opts="--location -l" metadata_opts="--description -D \ --build-dependency -B \ --run-dependency -R \ --preserve-metadata -P" 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 \ --show-package-descriptions \ --continue-on-failure \ --skip-phase \ --abort-at-phase \ --skip-until-phase \ --change-phases-for \ ${source_opts} \ ${metadata_opts} \ ${deplist_opts}" all_opts="${action_opts} ${general_opts} ${source_opts} ${metadata_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) 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 ;; --show-package-descriptions) COMPREPLY=($(compgen -W "none new all" -- "${cur}")) return 0 ;; --continue-on-failure) COMPREPLY=($(compgen -W "if-fetch-only never if-satisfied if-independent always" -- "${cur}")) return 0 ;; --change-phases-for) COMPREPLY=($(compgen -W "all first last" -- "${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|--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 "none tilde-keyword unkeyworded 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