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