# Helper function loading various enable-able files function _load_bash_it_files() { file_type="$1" if [ ! -d "${BASH_IT}/${file_type}/enabled" ] then continue fi FILES="${BASH_IT}/${file_type}/enabled/*.bash" for config_file in $FILES do if [ -e "${config_file}" ]; then source $config_file fi done } # Function for reloading aliases function reload_aliases() { _load_bash_it_files "aliases" } # Function for reloading auto-completion function reload_completion() { _load_bash_it_files "completion" } # Function for reloading plugins function reload_plugins() { _load_bash_it_files "plugins" } bash-it-aliases () { about 'summarizes available bash_it aliases' group 'lib' _bash-it-describe "aliases" "an" "alias" "Alias" } bash-it-completions () { about 'summarizes available bash_it completions' group 'lib' _bash-it-describe "completion" "a" "completion" "Completion" } bash-it-plugins () { about 'summarizes available bash_it plugins' group 'lib' _bash-it-describe "plugins" "a" "plugin" "Plugin" } _bash-it-describe () { about 'summarizes available bash_it plugins' group 'lib' file_type="$1" preposition="$2" command_suffix="$3" column_header="$4" typeset f typeset enabled printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description' for f in $BASH_IT/$file_type/available/*.bash do if [ -e $BASH_IT/$file_type/enabled/$(basename $f) ]; then enabled='x' else enabled=' ' fi printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$command_suffix)" done printf '\n%s\n' "to enable $preposition $command_suffix, do:" printf '%s\n' "$ enable-$command_suffix <$command_suffix name> -or- $ enable-$command_suffix all" printf '\n%s\n' "to disable $preposition $command_suffix, do:" printf '%s\n' "$ disable-$command_suffix <$command_suffix name> -or- $ disable-$command_suffix all" } disable-plugin () { about 'disables bash_it plugin' param '1: plugin name' example '$ disable-plugin rvm' group 'lib' _disable-thing "plugins" "plugin" $1 } disable-alias () { about 'disables bash_it alias' param '1: alias name' example '$ disable-alias git' group 'lib' _disable-thing "aliases" "alias" $1 } disable-completion () { about 'disables bash_it completion' param '1: completion name' example '$ disable-completion git' group 'lib' _disable-thing "completion" "completion" $1 } _disable-thing () { file_type="$1" command_suffix="$2" file_entity="$3" if [ -z "$file_entity" ]; then reference "disable-$command_suffix" return fi if [ "$file_entity" = "all" ]; then typeset f $command_suffix for f in $BASH_IT/$file_type/available/*.bash do plugin=$(basename $f) if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then rm $BASH_IT/$file_type/enabled/$(basename $plugin) fi done else typeset plugin=$(command ls $BASH_IT/$file_type/enabled/$file_entity.*bash 2>/dev/null | head -1) if [ -z "$plugin" ]; then printf '%s\n' "sorry, that does not appear to be an enabled $command_suffix." return fi rm $BASH_IT/$file_type/enabled/$(basename $plugin) fi printf '%s\n' "$file_entity disabled." } enable-plugin () { about 'enables bash_it plugin' param '1: plugin name' example '$ enable-plugin rvm' group 'lib' _enable-thing "plugins" "plugin" $1 } enable-alias () { about 'enables bash_it alias' param '1: alias name' example '$ enable-alias git' group 'lib' _enable-thing "aliases" "alias" $1 } enable-completion () { about 'enables bash_it completion' param '1: completion name' example '$ enable-completion git' group 'lib' _enable-thing "completion" "completion" $1 } _enable-thing () { file_type="$1" command_suffix="$2" file_entity="$3" if [ -z "$file_entity" ]; then reference "enable-$command_suffix" return fi if [ "$file_entity" = "all" ]; then typeset f $command_suffix for f in $BASH_IT/$file_type/available/*.bash do plugin=$(basename $f) if [ ! -h $BASH_IT/$file_type/enabled/$plugin ]; then ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin fi done else typeset plugin=$(command ls $BASH_IT/$file_type/available/$file_entity.*bash 2>/dev/null | head -1) if [ -z "$plugin" ]; then printf '%s\n' "sorry, that does not appear to be an available $command_suffix." return fi plugin=$(basename $plugin) if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then printf '%s\n' "$file_entity is already enabled." return fi ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin fi printf '%s\n' "$file_entity enabled." } plugins-help () { about 'summarize all functions defined by enabled bash-it plugins' group 'lib' # display a brief progress message... printf '%s' 'please wait, building help...' typeset grouplist=$(mktemp /tmp/grouplist.XXXX) typeset func for func in $(typeset_functions) do typeset group="$(typeset -f $func | metafor group)" if [ -z "$group" ]; then group='misc' fi typeset about="$(typeset -f $func | metafor about)" letterpress "$about" $func >> $grouplist.$group echo $grouplist.$group >> $grouplist done # clear progress message printf '\r%s\n' ' ' typeset group typeset gfile for gfile in $(cat $grouplist | sort | uniq) do printf '%s\n' "${gfile##*.}:" cat $gfile printf '\n' rm $gfile 2> /dev/null done | less rm $grouplist 2> /dev/null } all_groups () { about 'displays all unique metadata groups' group 'lib' typeset func typeset file=$(mktemp /tmp/composure.XXXX) for func in $(typeset_functions) do typeset -f $func | metafor group >> $file done cat $file | sort | uniq rm $file }