blob: 2530d7fab8125a78c1dcf3a0dbb55725d9b5df81 [file] [log] [blame]
Travis Swicegoodb524bb62012-03-26 11:19:38 -05001# Helper function loading various enable-able files
2function _load_bash_it_files() {
Nils Winkler95ce5482012-05-22 09:33:59 +02003 subdirectory="$1"
4 if [ ! -d "${BASH_IT}/${subdirectory}/enabled" ]
Travis Swicegoodb524bb62012-03-26 11:19:38 -05005 then
6 continue
7 fi
Nils Winkler95ce5482012-05-22 09:33:59 +02008 FILES="${BASH_IT}/${subdirectory}/enabled/*.bash"
Travis Swicegoodb524bb62012-03-26 11:19:38 -05009 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
18function reload_aliases() {
19 _load_bash_it_files "aliases"
20}
21
22# Function for reloading auto-completion
23function reload_completion() {
24 _load_bash_it_files "completion"
25}
26
27# Function for reloading plugins
28function reload_plugins() {
29 _load_bash_it_files "plugins"
30}
Erich Smith254d4452012-05-11 14:25:24 -040031
Nils Winkler1f558e22012-05-21 13:24:49 +020032bash-it-aliases ()
33{
34 about 'summarizes available bash_it aliases'
35 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -040036
Nils Winkler1f558e22012-05-21 13:24:49 +020037 _bash-it-describe "aliases" "an" "alias" "Alias"
38}
39
40bash-it-completions ()
41{
42 about 'summarizes available bash_it completions'
43 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -040044
Nils Winkler1f558e22012-05-21 13:24:49 +020045 _bash-it-describe "completion" "a" "completion" "Completion"
46}
47
Erich Smith08e439c2012-05-13 08:37:31 -040048bash-it-plugins ()
Erich Smith254d4452012-05-11 14:25:24 -040049{
Erich Smith08e439c2012-05-13 08:37:31 -040050 about 'summarizes available bash_it plugins'
51 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -040052
Nils Winkler1f558e22012-05-21 13:24:49 +020053 _bash-it-describe "plugins" "a" "plugin" "Plugin"
54}
55
56_bash-it-describe ()
57{
Erich Smith961c9142012-05-21 23:55:31 -040058 cite _about _param _example
Nils Winkler95ce5482012-05-22 09:33:59 +020059 _about 'summarizes available bash_it components'
60 _param '1: subdirectory'
61 _param '2: preposition'
62 _param '3: file_type'
63 _param '4: column_header'
64 _example '$ _bash-it-describe "plugins" "a" "plugin" "Plugin"'
Nils Winkler1f558e22012-05-21 13:24:49 +020065
Nils Winkler95ce5482012-05-22 09:33:59 +020066 subdirectory="$1"
Nils Winkler1f558e22012-05-21 13:24:49 +020067 preposition="$2"
Nils Winkler95ce5482012-05-22 09:33:59 +020068 file_type="$3"
Nils Winkler1f558e22012-05-21 13:24:49 +020069 column_header="$4"
Erich Smith254d4452012-05-11 14:25:24 -040070
71 typeset f
72 typeset enabled
Nils Winkler1f558e22012-05-21 13:24:49 +020073 printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description'
Nils Winkler95ce5482012-05-22 09:33:59 +020074 for f in $BASH_IT/$subdirectory/available/*.bash
Erich Smith254d4452012-05-11 14:25:24 -040075 do
Nils Winkler95ce5482012-05-22 09:33:59 +020076 if [ -e $BASH_IT/$subdirectory/enabled/$(basename $f) ]; then
Erich Smith254d4452012-05-11 14:25:24 -040077 enabled='x'
78 else
79 enabled=' '
80 fi
Nils Winkler95ce5482012-05-22 09:33:59 +020081 printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$file_type)"
Erich Smith254d4452012-05-11 14:25:24 -040082 done
Nils Winkler95ce5482012-05-22 09:33:59 +020083 printf '\n%s\n' "to enable $preposition $file_type, do:"
Nils Winklere82991b2012-05-23 09:31:35 +020084 printf '%s\n' "$ bash-it enable $file_type <$file_type name> -or- $ bash-it enable $file_type all"
Nils Winkler95ce5482012-05-22 09:33:59 +020085 printf '\n%s\n' "to disable $preposition $file_type, do:"
Nils Winklere82991b2012-05-23 09:31:35 +020086 printf '%s\n' "$ bash-it disable $file_type <$file_type name> -or- $ bash-it disable $file_type all"
Erich Smith254d4452012-05-11 14:25:24 -040087}
88
Erich Smith08e439c2012-05-13 08:37:31 -040089disable-plugin ()
Erich Smith254d4452012-05-11 14:25:24 -040090{
Erich Smith08e439c2012-05-13 08:37:31 -040091 about 'disables bash_it plugin'
92 param '1: plugin name'
Erich Smith70e1cd32012-05-14 14:12:09 -040093 example '$ disable-plugin rvm'
Erich Smith08e439c2012-05-13 08:37:31 -040094 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -040095
Nils Winkler1f558e22012-05-21 13:24:49 +020096 _disable-thing "plugins" "plugin" $1
97}
Erich Smith254d4452012-05-11 14:25:24 -040098
Nils Winkler1f558e22012-05-21 13:24:49 +020099disable-alias ()
100{
101 about 'disables bash_it alias'
102 param '1: alias name'
103 example '$ disable-alias git'
104 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -0400105
Nils Winkler1f558e22012-05-21 13:24:49 +0200106 _disable-thing "aliases" "alias" $1
107}
108
109disable-completion ()
110{
111 about 'disables bash_it completion'
112 param '1: completion name'
113 example '$ disable-completion git'
114 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -0400115
Nils Winkler1f558e22012-05-21 13:24:49 +0200116 _disable-thing "completion" "completion" $1
117}
118
119_disable-thing ()
120{
Erich Smith961c9142012-05-21 23:55:31 -0400121 cite _about _param _example
Nils Winkler95ce5482012-05-22 09:33:59 +0200122 _about 'disables a bash_it component'
123 _param '1: subdirectory'
124 _param '2: file_type'
125 _param '3: file_entity'
126 _example '$ _disable-thing "plugins" "plugin" "ssh"'
127
Erich Smith961c9142012-05-21 23:55:31 -0400128 subdirectory="$1"
129 file_type="$2"
130 file_entity="$3"
131
Nils Winkler1f558e22012-05-21 13:24:49 +0200132 if [ -z "$file_entity" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200133 reference "disable-$file_type"
Erich Smith254d4452012-05-11 14:25:24 -0400134 return
135 fi
Erich Smith08e439c2012-05-13 08:37:31 -0400136
Nils Winkler1f558e22012-05-21 13:24:49 +0200137 if [ "$file_entity" = "all" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200138 typeset f $file_type
139 for f in $BASH_IT/$subdirectory/available/*.bash
Erich Smith08e439c2012-05-13 08:37:31 -0400140 do
141 plugin=$(basename $f)
Nils Winkler95ce5482012-05-22 09:33:59 +0200142 if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then
143 rm $BASH_IT/$subdirectory/enabled/$(basename $plugin)
Erich Smith08e439c2012-05-13 08:37:31 -0400144 fi
145 done
146 else
Nils Winkler95ce5482012-05-22 09:33:59 +0200147 typeset plugin=$(command ls $BASH_IT/$subdirectory/enabled/$file_entity.*bash 2>/dev/null | head -1)
Nils Winkler1f558e22012-05-21 13:24:49 +0200148 if [ -z "$plugin" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200149 printf '%s\n' "sorry, that does not appear to be an enabled $file_type."
Erich Smith08e439c2012-05-13 08:37:31 -0400150 return
151 fi
Nils Winkler95ce5482012-05-22 09:33:59 +0200152 rm $BASH_IT/$subdirectory/enabled/$(basename $plugin)
Erich Smith08e439c2012-05-13 08:37:31 -0400153 fi
154
Nils Winkler1f558e22012-05-21 13:24:49 +0200155 printf '%s\n' "$file_entity disabled."
Erich Smith08e439c2012-05-13 08:37:31 -0400156}
157
158enable-plugin ()
159{
160 about 'enables bash_it plugin'
161 param '1: plugin name'
Erich Smith70e1cd32012-05-14 14:12:09 -0400162 example '$ enable-plugin rvm'
Erich Smith08e439c2012-05-13 08:37:31 -0400163 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -0400164
Nils Winkler1f558e22012-05-21 13:24:49 +0200165 _enable-thing "plugins" "plugin" $1
166}
Erich Smith08e439c2012-05-13 08:37:31 -0400167
Nils Winkler1f558e22012-05-21 13:24:49 +0200168enable-alias ()
169{
170 about 'enables bash_it alias'
171 param '1: alias name'
172 example '$ enable-alias git'
173 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -0400174
Nils Winkler1f558e22012-05-21 13:24:49 +0200175 _enable-thing "aliases" "alias" $1
176}
177
178enable-completion ()
179{
180 about 'enables bash_it completion'
181 param '1: completion name'
182 example '$ enable-completion git'
183 group 'lib'
Erich Smith961c9142012-05-21 23:55:31 -0400184
Nils Winkler1f558e22012-05-21 13:24:49 +0200185 _enable-thing "completion" "completion" $1
186}
187
188_enable-thing ()
189{
Erich Smith961c9142012-05-21 23:55:31 -0400190 cite _about _param _example
Nils Winkler95ce5482012-05-22 09:33:59 +0200191 _about 'enables a bash_it component'
192 _param '1: subdirectory'
193 _param '2: file_type'
194 _param '3: file_entity'
195 _example '$ _enable-thing "plugins" "plugin" "ssh"'
196
Erich Smith961c9142012-05-21 23:55:31 -0400197 subdirectory="$1"
198 file_type="$2"
199 file_entity="$3"
200
Nils Winkler1f558e22012-05-21 13:24:49 +0200201 if [ -z "$file_entity" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200202 reference "enable-$file_type"
Erich Smith08e439c2012-05-13 08:37:31 -0400203 return
204 fi
205
Nils Winkler1f558e22012-05-21 13:24:49 +0200206 if [ "$file_entity" = "all" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200207 typeset f $file_type
208 for f in $BASH_IT/$subdirectory/available/*.bash
Erich Smith08e439c2012-05-13 08:37:31 -0400209 do
210 plugin=$(basename $f)
Nils Winkler95ce5482012-05-22 09:33:59 +0200211 if [ ! -h $BASH_IT/$subdirectory/enabled/$plugin ]; then
212 ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin
Erich Smith08e439c2012-05-13 08:37:31 -0400213 fi
214 done
215 else
Nils Winkler95ce5482012-05-22 09:33:59 +0200216 typeset plugin=$(command ls $BASH_IT/$subdirectory/available/$file_entity.*bash 2>/dev/null | head -1)
Erich Smith08e439c2012-05-13 08:37:31 -0400217 if [ -z "$plugin" ]; then
Nils Winkler95ce5482012-05-22 09:33:59 +0200218 printf '%s\n' "sorry, that does not appear to be an available $file_type."
Erich Smith08e439c2012-05-13 08:37:31 -0400219 return
220 fi
221
222 plugin=$(basename $plugin)
Nils Winkler95ce5482012-05-22 09:33:59 +0200223 if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then
Nils Winkler1f558e22012-05-21 13:24:49 +0200224 printf '%s\n' "$file_entity is already enabled."
Erich Smith08e439c2012-05-13 08:37:31 -0400225 return
226 fi
227
Nils Winkler95ce5482012-05-22 09:33:59 +0200228 ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin
Erich Smith08e439c2012-05-13 08:37:31 -0400229 fi
230
Nils Winkler1f558e22012-05-21 13:24:49 +0200231 printf '%s\n' "$file_entity enabled."
Erich Smith254d4452012-05-11 14:25:24 -0400232}
233
Erich Smith961c9142012-05-21 23:55:31 -0400234alias-help ()
235{
236 about 'shows help for all aliases, or a specific alias group'
237 param '1: optional alias group'
238 example '$ alias-help'
239 example '$ alias-help git'
240
241 if [ -n "$1" ]; then
242 cat $BASH_IT/aliases/enabled/$1.aliases.bash | metafor alias | sed "s/$/'/"
243 else
244 typeset f
245 for f in $BASH_IT/aliases/enabled/*
246 do
247 typeset file=$(basename $f)
248 printf '\n\n%s:\n' "${file%%.*}"
249 # metafor() strips trailing quotes, restore them with sed..
250 cat $f | metafor alias | sed "s/$/'/"
251 done
252 fi
253}
254
Erich Smith254d4452012-05-11 14:25:24 -0400255plugins-help ()
256{
Erich Smitha825c5f2012-05-15 14:25:42 -0400257 about 'summarize all functions defined by enabled bash-it plugins'
Erich Smith08e439c2012-05-13 08:37:31 -0400258 group 'lib'
Erich Smith254d4452012-05-11 14:25:24 -0400259
Erich Smitha825c5f2012-05-15 14:25:42 -0400260 # display a brief progress message...
261 printf '%s' 'please wait, building help...'
262 typeset grouplist=$(mktemp /tmp/grouplist.XXXX)
263 typeset func
264 for func in $(typeset_functions)
Erich Smith254d4452012-05-11 14:25:24 -0400265 do
Erich Smitha825c5f2012-05-15 14:25:42 -0400266 typeset group="$(typeset -f $func | metafor group)"
267 if [ -z "$group" ]; then
268 group='misc'
269 fi
270 typeset about="$(typeset -f $func | metafor about)"
271 letterpress "$about" $func >> $grouplist.$group
272 echo $grouplist.$group >> $grouplist
Erich Smith254d4452012-05-11 14:25:24 -0400273 done
Erich Smitha825c5f2012-05-15 14:25:42 -0400274 # clear progress message
275 printf '\r%s\n' ' '
276 typeset group
277 typeset gfile
278 for gfile in $(cat $grouplist | sort | uniq)
279 do
280 printf '%s\n' "${gfile##*.}:"
281 cat $gfile
282 printf '\n'
283 rm $gfile 2> /dev/null
284 done | less
285 rm $grouplist 2> /dev/null
Erich Smith254d4452012-05-11 14:25:24 -0400286}
287
288all_groups ()
289{
Erich Smith08e439c2012-05-13 08:37:31 -0400290 about 'displays all unique metadata groups'
291 group 'lib'
Erich Smith254d4452012-05-11 14:25:24 -0400292
293 typeset func
294 typeset file=$(mktemp /tmp/composure.XXXX)
295 for func in $(typeset_functions)
296 do
297 typeset -f $func | metafor group >> $file
298 done
299 cat $file | sort | uniq
300 rm $file
301}