Travis Swicegood | b524bb6 | 2012-03-26 11:19:38 -0500 | [diff] [blame] | 1 | # Helper function loading various enable-able files |
| 2 | function _load_bash_it_files() { |
| 3 | file_type="$1" |
| 4 | if [ ! -d "${BASH_IT}/${file_type}/enabled" ] |
| 5 | then |
| 6 | continue |
| 7 | fi |
| 8 | FILES="${BASH_IT}/${file_type}/enabled/*.bash" |
| 9 | for config_file in $FILES |
| 10 | do |
| 11 | if [ -e "${config_file}" ]; then |
| 12 | source $config_file |
| 13 | fi |
| 14 | done |
| 15 | } |
| 16 | |
| 17 | # Function for reloading aliases |
| 18 | function reload_aliases() { |
| 19 | _load_bash_it_files "aliases" |
| 20 | } |
| 21 | |
| 22 | # Function for reloading auto-completion |
| 23 | function reload_completion() { |
| 24 | _load_bash_it_files "completion" |
| 25 | } |
| 26 | |
| 27 | # Function for reloading plugins |
| 28 | function reload_plugins() { |
| 29 | _load_bash_it_files "plugins" |
| 30 | } |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 31 | |
| 32 | show_plugins () |
| 33 | { |
| 34 | about summarizes available bash_it plugins |
| 35 | group lib |
| 36 | |
| 37 | typeset f |
| 38 | typeset enabled |
| 39 | printf "%-20s%-10s%s\n" 'Plugin' 'Enabled?' 'Description' |
| 40 | for f in $BASH_IT/plugins/available/*.bash |
| 41 | do |
| 42 | if [ -h $BASH_IT/plugins/enabled/$(basename $f) ]; then |
| 43 | enabled='x' |
| 44 | else |
| 45 | enabled=' ' |
| 46 | fi |
| 47 | printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-plugin)" |
| 48 | done |
| 49 | printf '\n%s\n' 'to enable a plugin, do:' |
| 50 | printf '%s\n' '$ enable_plugin <plugin name>' |
| 51 | printf '\n%s\n' 'to disable a plugin, do:' |
| 52 | printf '%s\n' '$ disable_plugin <plugin name>' |
| 53 | } |
| 54 | |
| 55 | enable_plugin () |
| 56 | { |
| 57 | about enables bash_it plugin |
| 58 | param 1: plugin name |
| 59 | example '$ enable_plugin rvm' |
| 60 | group lib |
| 61 | |
| 62 | typeset plugin=$(ls $BASH_IT/plugins/available/$1.*bash 2>/dev/null | head -1) |
| 63 | if [ -z "$plugin" ]; then |
| 64 | printf '%s\n' 'sorry, that does not appear to be an available plugin.' |
| 65 | return |
| 66 | fi |
| 67 | |
| 68 | plugin=$(basename $plugin) |
| 69 | if [ -h $BASH_IT/plugins/enabled/$plugin ]; then |
| 70 | printf '%s\n' "$1 is already enabled." |
| 71 | return |
| 72 | fi |
| 73 | |
| 74 | ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin |
| 75 | printf '%s\n' "$1 is enabled." |
| 76 | |
| 77 | reload_plugins |
| 78 | printf '%s\n' 'plugins reloaded.' |
| 79 | } |
| 80 | |
| 81 | disable_plugin () |
| 82 | { |
| 83 | about disables bash_it plugin |
| 84 | param 1: plugin name |
| 85 | example '$ disable_plugin rvm' |
| 86 | group lib |
| 87 | |
| 88 | typeset plugin=$(ls $BASH_IT/plugins/enabled/$1.*bash 2>/dev/null | head -1) |
| 89 | if [ -z "$plugin" ]; then |
| 90 | printf '%s\n' 'sorry, that does not appear to be an enabled plugin.' |
| 91 | return |
| 92 | fi |
| 93 | rm $BASH_IT/plugins/enabled/$(basename $plugin) |
| 94 | printf '%s\n' "$1 is disabled, and will be unavailable when you open a new terminal." |
| 95 | } |
| 96 | |
| 97 | plugins-help () |
| 98 | { |
| 99 | about list all plugins and functions defined by bash-it |
| 100 | group lib |
| 101 | |
| 102 | printf '%s\n' "bash-it plugins help" |
| 103 | printf '\n' |
| 104 | typeset group |
| 105 | for group in $(all_groups) |
| 106 | do |
| 107 | printf '%s\n' "group: $group" |
| 108 | glossary $group |
| 109 | printf '\n' |
| 110 | done |
| 111 | } |
| 112 | |
| 113 | all_groups () |
| 114 | { |
| 115 | about displays all unique metadata groups |
| 116 | group lib |
| 117 | |
| 118 | typeset func |
| 119 | typeset file=$(mktemp /tmp/composure.XXXX) |
| 120 | for func in $(typeset_functions) |
| 121 | do |
| 122 | typeset -f $func | metafor group >> $file |
| 123 | done |
| 124 | cat $file | sort | uniq |
| 125 | rm $file |
| 126 | } |