diff options
| author | Andrew Janke | 2018-01-09 02:49:55 -0500 | 
|---|---|---|
| committer | Andrew Janke | 2018-01-09 09:00:11 -0500 | 
| commit | bf574012bcb39d1f9aca36c5a2b9d8e91a312de2 (patch) | |
| tree | 6b4b9f77d41e00665ff032198028f74218e715d5 | |
| parent | f5c68a6fe3ede2d83aaa331853a1ff6f0edeffb9 (diff) | |
| download | brew-bf574012bcb39d1f9aca36c5a2b9d8e91a312de2.tar.bz2 | |
bash completion: integrate xyb's cask bash completion with core brew completion
| -rw-r--r-- | completions/bash/brew | 168 | ||||
| -rw-r--r-- | completions/bash/brew-cask | 182 | 
2 files changed, 168 insertions, 182 deletions
| diff --git a/completions/bash/brew b/completions/bash/brew index 60c272f73..d85a58c4d 100644 --- a/completions/bash/brew +++ b/completions/bash/brew @@ -539,6 +539,173 @@ _brew_uses() {    __brew_complete_formulae  } +__brew_caskcomp_words_include () +{ +    local i=1 +    while [[ $i -lt $COMP_CWORD ]]; do +        if [[ "${COMP_WORDS[i]}" = "$1" ]]; then +            return 0 +        fi +        i=$((++i)) +    done +    return 1 +} + +# Find the previous non-switch word +__brew_caskcomp_prev () +{ +    local idx=$((COMP_CWORD - 1)) +    local prv="${COMP_WORDS[idx]}" +    while [[ $prv == -* ]]; do +        idx=$((--idx)) +        prv="${COMP_WORDS[idx]}" +    done +    echo "$prv" +} + +__brew_caskcomp () +{ +    # break $1 on space, tab, and newline characters, +    # and turn it into a newline separated list of words +    local list s sep=$'\n' IFS=$' '$'\t'$'\n' +    local cur="${COMP_WORDS[COMP_CWORD]}" + +    for s in $1; do +        __brew_caskcomp_words_include "$s" && continue +        list="$list$s$sep" +    done + +    IFS=$sep +    COMPREPLY=($(compgen -W "$list" -- "$cur")) +} + +# Don't use __brew_caskcomp() in any of the __brew_cask_complete_foo functions, as +# it is too slow and is not worth it just for duplicate elimination. +__brew_cask_complete_formulae () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    local lib=$(brew --repository)/Library +    local taps=${lib}/Taps +    local casks=${lib}/Taps/caskroom/homebrew-cask/Casks +    local ff=$(\ls ${casks} 2>/dev/null | sed 's/\.rb//g') + +    COMPREPLY=($(compgen -W "$ff" -- "$cur")) +} + +__brew_cask_complete_installed () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    local inst=$(brew cask list -1) +    COMPREPLY=($(compgen -W "$inst" -- "$cur")) +} + +__brew_cask_complete_caskroom () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    local caskroom_dir=/opt/homebrew-cask/Caskroom/ +    local files=$(\ls ${caskroom_dir} 2>/dev/null) +    COMPREPLY=($(compgen -W "$files" -- "$cur")) +} + +_brew_cask_cleanup () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    case "$cur" in +    -*) +        __brew_caskcomp "--force" +        return +        ;; +    esac +    __brew_cask_complete_installed +} + +_brew_cask_fetch () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    local prv=$(__brew_caskcomp_prev) +    case "$cur" in +    -*) +        __brew_caskcomp "--force" +        return +        ;; +    esac +    __brew_cask_complete_formulae +} + +_brew_cask_list () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" + +    case "$cur" in +    -*) +        __brew_caskcomp "-1 -l --versions" +        return +        ;; +    esac + +    __brew_cask_complete_installed +} + +_brew_cask_uninstall () +{ +    local cur="${COMP_WORDS[COMP_CWORD]}" +    case "$cur" in +    -*) +        __brew_caskcomp "--force" +        return +        ;; +    esac +    __brew_cask_complete_installed +} + +_brew_cask () +{ +    local i=1 cmd + +    # find the subcommand +    while [[ $i -lt $COMP_CWORD ]]; do +        local s="${COMP_WORDS[i]}" +        case "$s" in +        --*) +            cmd="$s" +            break +            ;; +        -*) +            ;; +        cask) +            ;; +        *) +            cmd="$s" +            break +            ;; +        esac +        i=$((++i)) +    done + +    if [[ $i -eq $COMP_CWORD ]]; then +        __brew_caskcomp "abv audit cat cleanup create doctor edit fetch home info install list ls remove rm search uninstall zap -S --force --caskroom --verbose --appdir --colorpickerdir --prefpanedir --qlplugindir --fontdir --servicedir --input_methoddir --internet_plugindir --screen_saverdir --no-binaries --binarydir --debug" +        return +    fi + +    # subcommands have their own completion functions +    case "$cmd" in +      audit)                  __brew_cask_complete_formulae ;; +      cat)                    __brew_cask_complete_formulae ;; +      cleanup)                _brew_cask_cleanup ;; +      doctor)                 ;; +      edit)                   __brew_cask_complete_formulae ;; +      fetch)                  _brew_cask_fetch ;; +      home)                   __brew_cask_complete_formulae ;; +      info|abv)               __brew_cask_complete_formulae ;; +      install|instal)         __brew_cask_complete_formulae ;; +      list|ls)                _brew_cask_list ;; +      search)                 ;; +      uninstall|remove|rm)    _brew_cask_uninstall ;; +      zap)                    __brew_cask_complete_caskroom ;; +      *)                      ;; +    esac +} +  _brew() {    local i=1 cmd @@ -578,6 +745,7 @@ _brew() {      analytics)                  _brew_analytics ;;      audit)                      __brew_complete_formulae ;;      bottle)                     _brew_bottle ;; +    cask)                       _brew_cask ;;      cat)                        __brew_complete_formulae ;;      cleanup)                    _brew_cleanup ;;      create)                     _brew_create ;; diff --git a/completions/bash/brew-cask b/completions/bash/brew-cask deleted file mode 100644 index 369f0dc74..000000000 --- a/completions/bash/brew-cask +++ /dev/null @@ -1,182 +0,0 @@ -# Bash completion script for brew-cask(1) - -__brew_caskcomp_words_include () -{ -    local i=1 -    while [[ $i -lt $COMP_CWORD ]]; do -        if [[ "${COMP_WORDS[i]}" = "$1" ]]; then -            return 0 -        fi -        i=$((++i)) -    done -    return 1 -} - -# Find the previous non-switch word -__brew_caskcomp_prev () -{ -    local idx=$((COMP_CWORD - 1)) -    local prv="${COMP_WORDS[idx]}" -    while [[ $prv == -* ]]; do -        idx=$((--idx)) -        prv="${COMP_WORDS[idx]}" -    done -    echo "$prv" -} - -__brew_caskcomp () -{ -    # break $1 on space, tab, and newline characters, -    # and turn it into a newline separated list of words -    local list s sep=$'\n' IFS=$' '$'\t'$'\n' -    local cur="${COMP_WORDS[COMP_CWORD]}" - -    for s in $1; do -        __brew_caskcomp_words_include "$s" && continue -        list="$list$s$sep" -    done - -    IFS=$sep -    COMPREPLY=($(compgen -W "$list" -- "$cur")) -} - -# Don't use __brew_caskcomp() in any of the __brew_cask_complete_foo functions, as -# it is too slow and is not worth it just for duplicate elimination. -__brew_cask_complete_formulae () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    local lib=$(brew --repository)/Library -    local taps=${lib}/Taps -    local casks=${lib}/Taps/caskroom/homebrew-cask/Casks -    local ff=$(\ls ${casks} 2>/dev/null | sed 's/\.rb//g') - -    COMPREPLY=($(compgen -W "$ff" -- "$cur")) -} - -__brew_cask_complete_installed () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    local inst=$(brew-cask list -1) -    COMPREPLY=($(compgen -W "$inst" -- "$cur")) -} - -__brew_cask_complete_caskroom () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    local caskroom_dir=/opt/homebrew-cask/Caskroom/ -    local files=$(\ls ${caskroom_dir} 2>/dev/null) -    COMPREPLY=($(compgen -W "$files" -- "$cur")) -} - -_brew_cask_cleanup () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    case "$cur" in -    -*) -        __brew_caskcomp "--force" -        return -        ;; -    esac -    __brew_cask_complete_installed -} - -_brew_cask_fetch () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    local prv=$(__brew_caskcomp_prev) -    case "$cur" in -    -*) -        __brew_caskcomp "--force" -        return -        ;; -    esac -    __brew_cask_complete_formulae -} - -_brew_cask_list () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" - -    case "$cur" in -    -*) -        __brew_caskcomp "-1 -l --versions" -        return -        ;; -    esac - -    __brew_cask_complete_installed -} - -_brew_cask_uninstall () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    case "$cur" in -    -*) -        __brew_caskcomp "--force" -        return -        ;; -    esac -    __brew_cask_complete_installed -} - -_brew_cask_update () -{ -    local cur="${COMP_WORDS[COMP_CWORD]}" -    case "$cur" in -    -*) -        __brew_caskcomp "--rebase --verbose" -        return -        ;; -    esac -} - -_brew_cask () -{ -    local i=1 cmd - -    # find the subcommand -    while [[ $i -lt $COMP_CWORD ]]; do -        local s="${COMP_WORDS[i]}" -        case "$s" in -        --*) -            cmd="$s" -            break -            ;; -        -*) -            ;; -        *) -            cmd="$s" -            break -            ;; -        esac -        i=$((++i)) -    done - -    if [[ $i -eq $COMP_CWORD ]]; then -        __brew_caskcomp "abv alfred audit cat cleanup create doctor edit fetch home info install list ls remove rm search uninstall update zap -S --force --caskroom --verbose --appdir --colorpickerdir --prefpanedir --qlplugindir --fontdir --servicedir --input_methoddir --internet_plugindir --screen_saverdir --no-binaries --binarydir --debug" -        return -    fi - -    # subcommands have their own completion functions -    case "$cmd" in -    audit)                  __brew_cask_complete_formulae ;; -    cat|edit|home)          __brew_cask_complete_formulae ;; -    cleanup)                _brew_cask_cleanup ;; -    fetch)                  _brew_cask_fetch ;; -    info|abv)               __brew_cask_complete_formulae ;; -    install|instal)         __brew_cask_complete_formulae ;; -    list|ls)                _brew_cask_list ;; -    uninstall|remove|rm)    _brew_cask_uninstall ;; -    update)                 _brew_cask_update ;; -    zap)                    __brew_cask_complete_caskroom ;; -    *)                      ;; -    esac -} - -# keep around for compatibility -_brew_cask_to_completion () -{ -    _brew_cask -} - -complete -o bashdefault -o default -F _brew_cask brew-cask | 
