cceb387e0bdad96a246f0374f835c37d8f2e5193

Author
Robby Russell <robby@planetargon.com>
Committer
Robby Russell <robby@planetargon.com>
Date

Message

Merge pull request #595 from zachriggle/grails-plugin

Grails plugin

Diff

 1diff --git a/plugins/grails/grails.plugin.zsh b/plugins/grails/grails.plugin.zsh
 2new file mode 100755
 3index 0000000000000000000000000000000000000000..cc6f9c53b1da773c423873d25c1b66b490ee7038
 4--- /dev/null
 5+++ b/plugins/grails/grails.plugin.zsh
 6@@ -0,0 +1,54 @@
 7+_enumerateGrailsScripts() {
 8+    # Default directoryies
 9+    directories=($GRAILS_HOME/scripts ~/.grails/scripts ./scripts)
10+
11+    # Check all of the plugins directories, if they exist
12+    if [ -d plugins ]
13+    then
14+        directories+=(plugins/*/scripts)
15+    fi
16+    
17+    # Enumerate all of the Groovy files
18+    files=()
19+    for dir in $directories;
20+    do
21+        if [ -d $dir ]
22+        then
23+            files+=($dir/[^_]*.groovy)
24+        fi
25+    done
26+    
27+    # Don't try to basename ()
28+    if [ ${#files} -eq 0 ];
29+    then
30+        return
31+    fi
32+    
33+    # - Strip the path
34+    # - Remove all scripts with a leading '_'
35+    # - PackagePlugin_.groovy -> PackagePlugin
36+    # - PackagePlugin         -> Package-Plugin
37+    # - Package-Plugin        -> package-plugin
38+    basename $files                             \
39+        | sed -E  -e 's/^_?([^_]+)_?.groovy/\1/'\
40+                  -e 's/([a-z])([A-Z])/\1-\2/g' \
41+        | tr "[:upper:]" "[:lower:]"            \
42+        | sort                                  \
43+        | uniq
44+}
45+ 
46+_grails() {
47+    if (( CURRENT == 2 )); then
48+        scripts=( $(_enumerateGrailsScripts) )
49+        
50+        if [ ${#scripts} -ne 0 ];
51+        then
52+            _multi_parts / scripts
53+            return
54+        fi
55+    fi
56+    
57+    _files
58+}
59+ 
60+compdef _grails grails