Added completion (show, help, enable, disable) for the bash-it function
authorNils Winkler <nils@nilswinkler.com>
Tue, 13 Nov 2012 13:16:21 +0000 (14:16 +0100)
committerNils Winkler <nils@nilswinkler.com>
Tue, 13 Nov 2012 13:16:21 +0000 (14:16 +0100)
completion/available/bash-it.completion.bash [new file with mode: 0644]

diff --git a/completion/available/bash-it.completion.bash b/completion/available/bash-it.completion.bash
new file mode 100644 (file)
index 0000000..83ddfbc
--- /dev/null
@@ -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