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 | |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 32 | bash-it-plugins () |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 33 | { |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 34 | about 'summarizes available bash_it plugins' |
| 35 | group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 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:' |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 50 | printf '%s\n' '$ enable-plugin <plugin name> -or- $ enable-plugin all' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 51 | printf '\n%s\n' 'to disable a plugin, do:' |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 52 | printf '%s\n' '$ disable-plugin <plugin name> -or- $ disable-plugin all' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 53 | } |
| 54 | |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 55 | disable-plugin () |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 56 | { |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 57 | about 'disables bash_it plugin' |
| 58 | param '1: plugin name' |
Erich Smith | 70e1cd3 | 2012-05-14 14:12:09 -0400 | [diff] [blame] | 59 | example '$ disable-plugin rvm' |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 60 | group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 61 | |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 62 | if [ -z "$1" ]; then |
Erich Smith | 70e1cd3 | 2012-05-14 14:12:09 -0400 | [diff] [blame] | 63 | reference disable-plugin |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 64 | return |
| 65 | fi |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 66 | |
| 67 | if [ "$1" = "all" ]; then |
| 68 | typeset f plugin |
| 69 | for f in $BASH_IT/plugins/available/*.bash |
| 70 | do |
| 71 | plugin=$(basename $f) |
| 72 | if [ -h $BASH_IT/plugins/enabled/$plugin ]; then |
| 73 | rm $BASH_IT/plugins/enabled/$(basename $plugin) |
| 74 | fi |
| 75 | done |
| 76 | else |
| 77 | typeset plugin=$(ls $BASH_IT/plugins/enabled/$1.*bash 2>/dev/null | head -1) |
| 78 | if [ ! -h $plugin ]; then |
| 79 | printf '%s\n' 'sorry, that does not appear to be an enabled plugin.' |
| 80 | return |
| 81 | fi |
| 82 | rm $BASH_IT/plugins/enabled/$(basename $plugin) |
| 83 | fi |
| 84 | |
| 85 | printf '%s\n' "$1 disabled." |
| 86 | } |
| 87 | |
| 88 | enable-plugin () |
| 89 | { |
| 90 | about 'enables bash_it plugin' |
| 91 | param '1: plugin name' |
Erich Smith | 70e1cd3 | 2012-05-14 14:12:09 -0400 | [diff] [blame] | 92 | example '$ enable-plugin rvm' |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 93 | group 'lib' |
| 94 | |
| 95 | if [ -z "$1" ]; then |
Erich Smith | 70e1cd3 | 2012-05-14 14:12:09 -0400 | [diff] [blame] | 96 | reference enable-plugin |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 97 | return |
| 98 | fi |
| 99 | |
| 100 | if [ "$1" = "all" ]; then |
| 101 | typeset f plugin |
| 102 | for f in $BASH_IT/plugins/available/*.bash |
| 103 | do |
| 104 | plugin=$(basename $f) |
| 105 | if [ ! -h $BASH_IT/plugins/enabled/$plugin ]; then |
| 106 | ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin |
| 107 | fi |
| 108 | done |
| 109 | else |
| 110 | typeset plugin=$(ls $BASH_IT/plugins/available/$1.*bash 2>/dev/null | head -1) |
| 111 | if [ -z "$plugin" ]; then |
| 112 | printf '%s\n' 'sorry, that does not appear to be an available plugin.' |
| 113 | return |
| 114 | fi |
| 115 | |
| 116 | plugin=$(basename $plugin) |
| 117 | if [ -h $BASH_IT/plugins/enabled/$plugin ]; then |
| 118 | printf '%s\n' "$1 is already enabled." |
| 119 | return |
| 120 | fi |
| 121 | |
| 122 | ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin |
| 123 | fi |
| 124 | |
| 125 | printf '%s\n' "$1 enabled." |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 126 | } |
| 127 | |
| 128 | plugins-help () |
| 129 | { |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 130 | about 'list all plugins and functions defined by bash-it' |
| 131 | group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 132 | |
| 133 | printf '%s\n' "bash-it plugins help" |
| 134 | printf '\n' |
| 135 | typeset group |
| 136 | for group in $(all_groups) |
| 137 | do |
| 138 | printf '%s\n' "group: $group" |
| 139 | glossary $group |
| 140 | printf '\n' |
| 141 | done |
| 142 | } |
| 143 | |
| 144 | all_groups () |
| 145 | { |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 146 | about 'displays all unique metadata groups' |
| 147 | group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 148 | |
| 149 | typeset func |
| 150 | typeset file=$(mktemp /tmp/composure.XXXX) |
| 151 | for func in $(typeset_functions) |
| 152 | do |
| 153 | typeset -f $func | metafor group >> $file |
| 154 | done |
| 155 | cat $file | sort | uniq |
| 156 | rm $file |
| 157 | } |