View difference between Paste ID: f52475980 and
SHOW: | | - or go back to the newest paste.
1-
1+
export GRAILS_VERSION="$(ls -lhr $HOME/.grails | egrep -i '1\.' | head -1 | gawk '{print $9 }')"
2
3
sed_option="-E"
4
5
[ "$(uname)" == "Linux" ] && sed_option="-r"
6
7
_get_domain_classes(){
8
	find ./grails-app/domain -iname *.groovy 2> /dev/null | tr \\n ' ' | sed 's/\.groovy//g' | sed 's/\.\/grails-app\/domain\///g' | tr '/' \.
9
}
10
11
_get_tests(){
12
	find ./test -iname *.groovy 2> /dev/null | sed 's/\.\/test\/integration\///g' | sed 's/\Tests.groovy//g' | tr '/' \.
13
}
14
15
_get_plugins(){
16
	cat $HOME/.grails/$GRAILS_VERSION/plugins/plugins-list.xml 2> /dev/null | grep \<plugin | gawk -F"name=" '{print $2}' | sed 's/\"//g' | sed 's/\/\{0,1\}\>//g'
17
}
18
19
_get_scripts(){
20
	for D in $SCRIPT_DIRS; do
21
		if [ -d $D ]
22
			then ls -1 $D/*.groovy 2> /dev/null | sed $sed_option 's/(.*)\/(.*)\.groovy/\2/' | sed $sed_option 's/([A-Z])/-\1/g' | sed $sed_option 's/^-//' | tr "[:upper:]" "[:lower:]"
23
		fi
24
	done | sort | uniq | grep -vE "^_"
25
}
26
27
_grails_comp(){
28
	local cur prev opts base
29
	COMPREPLY=()
30
	cur="${COMP_WORDS[COMP_CWORD]}"
31
	prev="${COMP_WORDS[COMP_CWORD-1]}"
32
	if [ -r ./grails-app ]; then
33
		SCRIPT_DIRS="$GRAILS_HOME/scripts ./scripts $HOME/.grails/scripts"
34
		if [ -d plugins ]
35
			then for PLUGIN_DIR in $(ls -d plugins/*/scripts 2> /dev/null); do
36
			SCRIPT_DIRS="$SCRIPT_DIRS $PLUGIN_DIR"
37
			done
38
		fi
39
 
40
		opts=$(_get_scripts)
41
	
42
		case "${prev}" in
43
			generate-all)
44
				local classes=$(_get_domain_classes)
45
				COMPREPLY=( $(compgen -W "${classes}" -- ${cur}) )
46
				return 0
47
				;;
48
			generate-views)
49
				local classes=$(_get_domain_classes)
50
				COMPREPLY=( $(compgen -W "${classes}" -- ${cur}) )
51
				return 0
52
				;;
53
			generate-controller)
54
				local classes=$(_get_domain_classes)
55
				COMPREPLY=( $(compgen -W "${classes}" -- ${cur}) )
56
				return 0
57
				;;
58
			test-app)
59
				local test_classes=$(_get_tests)
60
				COMPREPLY=( $(compgen -W "${test_classes}" -- ${cur}) )
61
				return 0
62
				;;
63
			install-plugin)
64
				local plugins=$(_get_plugins)
65
				COMPREPLY=( $(compgen -W "${plugins}" -- ${cur}) )
66
				return 0
67
				;;
68
			package-plugin)
69
				COMPREPLY=( $(compgen -f) )
70
				return 0
71
				;;
72
			plugin-info)
73
				local plugins=$(opts)
74
				COMPREPLY=( $(compgen -W "${plugins}" -- ${cur}) )
75
				return 0
76
				;;
77
			help)
78
				local opts=$(_get_scripts)
79
				COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
80
				return 0
81
				;;
82
			*)
83
			;;
84
		esac
85
	
86
		if [[ "${opts}" =~ "${prev}" ]]; then
87
			COMPREPLY=( $(compgen -f) )
88
			return 0
89
		fi
90
	
91
		COMPREPLY=($(compgen -W "${opts}" -- ${cur})) 
92
		return 0
93
	else
94
		opts="create-app create-plugin help list-plugins package-plugin plugin-info set-proxy"
95
		case "${prev}" in
96
			create-app)
97
				COMPREPLY=( $(compgen -f) )
98
				return 0
99
				;;
100
			create-plugin)
101
				COMPREPLY=( $(compgen -f) )
102
				return 0
103
				;;
104
			package-plugin)
105
				COMPREPLY=( $(compgen -f) )
106
				return 0
107
				;;
108
			plugin-info)
109
				local plugins=$(_get_plugins)
110
				COMPREPLY=( $(compgen -W "${plugins}" -- ${cur}) )
111
				return 0
112
				;;
113
			*)
114
				;;
115
		esac
116
		COMPREPLY=($(compgen -W "${opts}" -- ${cur})) 
117
		return 0
118
	fi
119
}
120
 
121
complete -F _grails_comp grails