plugins-help is much faster
authorErich Smith <heartquest@gmail.com>
Tue, 15 May 2012 18:25:42 +0000 (14:25 -0400)
committerErich Smith <heartquest@gmail.com>
Tue, 15 May 2012 18:29:06 +0000 (14:29 -0400)
this replaces the naive implementation that called glossary() on each
group, and is an order of magnitude faster.

fix grouping in javascript.plugin.bash

lib/helpers.bash
plugins/available/javascript.plugin.bash

index 1bc79cc..ad0cfd6 100644 (file)
@@ -127,18 +127,35 @@ enable-plugin ()
 
 plugins-help ()
 {
-    about 'list all plugins and functions defined by bash-it'
+    about 'summarize all functions defined by enabled bash-it plugins'
     group 'lib'
 
-    printf '%s\n' "bash-it plugins help"
-    printf '\n'
+    # 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
-    for group in $(all_groups)
+    typeset gfile
+    for gfile in $(cat $grouplist | sort | uniq)
     do
-        printf '%s\n' "group: $group"
-        glossary $group
+        printf '%s\n' "${gfile##*.}:"
+        cat $gfile
         printf '\n'
-    done
+        rm $gfile 2> /dev/null
+    done | less
+    rm $grouplist 2> /dev/null
 }
 
 all_groups ()
index 40b647e..e8037b9 100644 (file)
@@ -15,7 +15,7 @@ function rails_jquery {
 
 function jquery_install {
   about 'download jquery.js into public/javascripts'
-  group 'javascripts'
+  group 'javascript'
 
   if [ -z "$1" ]
   then
@@ -28,7 +28,7 @@ function jquery_install {
 
 function jquery_ui_install {
   about 'download jquery_us.js into public/javascripts'
-  group 'javascripts'
+  group 'javascript'
 
   if [ -z "$1" ]
   then