diff options
| author | xyb | 2018-01-09 02:40:06 -0500 | 
|---|---|---|
| committer | Andrew Janke | 2018-01-09 09:00:11 -0500 | 
| commit | f5c68a6fe3ede2d83aaa331853a1ff6f0edeffb9 (patch) | |
| tree | 9122f17e863bdb79d72dfe28512cc1ff9b2d7dee | |
| parent | 9ed1ed3c0577a20b0144cb83501838b2b8c681ae (diff) | |
| download | brew-f5c68a6fe3ede2d83aaa331853a1ff6f0edeffb9.tar.bz2 | |
Pull in "brew cask" completions from xyb.
| -rw-r--r-- | completions/bash/brew-cask | 182 | 
1 files changed, 182 insertions, 0 deletions
| diff --git a/completions/bash/brew-cask b/completions/bash/brew-cask new file mode 100644 index 000000000..369f0dc74 --- /dev/null +++ b/completions/bash/brew-cask @@ -0,0 +1,182 @@ +# 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 | 
