grails.plugin.zsh
1420 bytes
1_enumerateGrailsScripts() {
2 # Default directories
3 directories=($GRAILS_HOME/scripts ~/.grails/scripts ./scripts)
4
5 # Check all of the plugins directories, if they exist
6 if [ -d plugins ]
7 then
8 directories+=(plugins/*/scripts)
9 fi
10
11 # Enumerate all of the Groovy files
12 files=()
13 for dir in $directories;
14 do
15 if [ -d $dir ]
16 then
17 files+=($dir/[^_]*.groovy)
18 fi
19 done
20
21 # Don't try to basename ()
22 if [ ${#files} -eq 0 ];
23 then
24 return
25 fi
26
27 scripts=()
28 for file in $files
29 do
30 # - Strip the path
31 # - Remove all scripts with a leading '_'
32 # - PackagePlugin_.groovy -> PackagePlugin
33 # - PackagePlugin -> Package-Plugin
34 # - Package-Plugin -> package-plugin
35 command=$(basename $file \
36 | sed -E -e 's/^_?([^_]+)_?.groovy/\1/'\
37 -e 's/([a-z])([A-Z])/\1-\2/g' \
38 | tr "[:upper:]" "[:lower:]" \
39 | sort \
40 | uniq)
41 scripts+=($command)
42 done
43 echo $scripts
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
60compdef _grails grails