From: Nils Winkler Date: Tue, 13 Nov 2012 13:16:21 +0000 (+0100) Subject: Added completion (show, help, enable, disable) for the bash-it function X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=4261f3d8ecdc3e7cf400064d33907dc6f927b58b;p=common%2Fbash_it.git Added completion (show, help, enable, disable) for the bash-it function --- diff --git a/completion/available/bash-it.completion.bash b/completion/available/bash-it.completion.bash new file mode 100644 index 0000000..83ddfbc --- /dev/null +++ b/completion/available/bash-it.completion.bash @@ -0,0 +1,135 @@ +#!/usr/bin/env bash + +_bash-it-comp-enable-disable() +{ + local enable_disable_args="alias plugin completion" + COMPREPLY=( $(compgen -W "${enable_disable_args}" -- ${cur}) ) +} + +_bash-it-comp-list-available-not-enabled() +{ + subdirectory="$1" + + local available_things=$(for f in `ls -1 $BASH_IT/$subdirectory/available/*.bash`; + do + if [ ! -e $BASH_IT/$subdirectory/enabled/$(basename $f) ] + then + basename $f | cut -d'.' -f1 + fi + done) + + COMPREPLY=( $(compgen -W "all ${available_things}" -- ${cur}) ) +} + +_bash-it-comp-list-enabled() +{ + subdirectory="$1" + + local enabled_things=$(for f in `ls -1 $BASH_IT/$subdirectory/enabled/*.bash`; + do + basename $f | cut -d'.' -f1 + done) + + COMPREPLY=( $(compgen -W "all ${enabled_things}" -- ${cur}) ) +} + +_bash-it-comp-list-available() +{ + subdirectory="$1" + + local enabled_things=$(for f in `ls -1 $BASH_IT/$subdirectory/available/*.bash`; + do + basename $f | cut -d'.' -f1 + done) + + COMPREPLY=( $(compgen -W "${enabled_things}" -- ${cur}) ) +} + +_bash-it-comp() +{ + local cur prev opts prevprev + COMPREPLY=() + cur="${COMP_WORDS[COMP_CWORD]}" + prev="${COMP_WORDS[COMP_CWORD-1]}" + + opts="help show enable disable" + + case "${prev}" in + show) + local show_args="plugins aliases completions" + COMPREPLY=( $(compgen -W "${show_args}" -- ${cur}) ) + return 0 + ;; + help) + local help_args="plugins aliases" + COMPREPLY=( $(compgen -W "${help_args}" -- ${cur}) ) + return 0 + ;; + enable) + _bash-it-comp-enable-disable + return 0 + ;; + disable) + _bash-it-comp-enable-disable + return 0 + ;; + aliases) + prevprev="${COMP_WORDS[COMP_CWORD-2]}" + + case "${prevprev}" in + help) + _bash-it-comp-list-available aliases + return 0 + ;; + esac + ;; + alias) + prevprev="${COMP_WORDS[COMP_CWORD-2]}" + + case "${prevprev}" in + enable) + _bash-it-comp-list-available-not-enabled aliases + return 0 + ;; + disable) + _bash-it-comp-list-enabled aliases + return 0 + ;; + esac + ;; + plugin) + prevprev="${COMP_WORDS[COMP_CWORD-2]}" + + case "${prevprev}" in + enable) + _bash-it-comp-list-available-not-enabled plugins + return 0 + ;; + disable) + _bash-it-comp-list-enabled plugins + return 0 + ;; + esac + ;; + completion) + prevprev="${COMP_WORDS[COMP_CWORD-2]}" + + case "${prevprev}" in + enable) + _bash-it-comp-list-available-not-enabled completion + return 0 + ;; + disable) + _bash-it-comp-list-enabled completion + return 0 + ;; + esac + ;; + esac + + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + + return 0 +} + +complete -F _bash-it-comp bash-it