# Bash completion function for reconcilio # 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. _reconcilio() { local cur prev opts local action_opts general_opts deplist_opts local linkage_opts install_opts all_opts COMPREPLY=() cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} action_opts="--fix-linkage \ --version -V \ --help -h" general_opts="--log-level \ --no-colour \ --no-color \ --environment -E \ --exact \ --resume-command-template \ --compact \ --no-compact" 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 \ --no-config-protection \ --fetch -f \ --no-safe-resume \ --show-reasons \ --show-use-descriptions \ --show-package-descriptions \ --continue-on-failure \ ${deplist_opts}" linkage_opts="--library \ ${install_opts}" all_opts="${action_opts} ${general_opts} ${linkage_opts} ${install_opts} ${deplist_opts}" local x for x in "${COMP_WORDS[@]}" ; do case "${x}" in --fix-linkage) action="linkage" 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 ;; --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 --fix-linkage) return 0 ;; esac ;; esac ;; esac } complete -F _reconcilio reconcilio