PageRenderTime 72ms CodeModel.GetById 40ms app.highlight 3ms RepoModel.GetById 13ms app.codeStats 1ms

/bash_completion_lib/complete -o default/svk

http://github.com/brinkman83/bashrc
#! | 265 lines | 251 code | 14 blank | 0 comment | 0 complexity | 18f7ae8efc111406b9ff50a3298b9815 MD5 | raw file
  1# svk completion by Guillaume Rousse <guillomovitch@zarb.org>
  2
  3
  4comp_include _filedir _get_cword
  5
  6
  7_svk()
  8{
  9	local cur prev commands options command
 10
 11	COMPREPLY=()
 12	cur=`_get_cword`
 13
 14	commands='add admin annotate ann blame praise cat checkout co cleanup \
 15		cmerge cm commit ci copy cp delete del remove rm depotmap \
 16		depot describe desc diff di help h ? import info list ls log \
 17		merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
 18		propedit pe pedit propget pg pget proplist pl plist propset ps \
 19		pset pull push resolved revert smerge sm status st stat switch \
 20		sw sync sy update up verify'
 21
 22	if [[ $COMP_CWORD -eq 1 ]] ; then
 23		if [[ "$cur" == -* ]]; then
 24			COMPREPLY=( $( compgen -W '--version' -- $cur ) )
 25		else
 26			COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
 27		fi
 28	else
 29
 30		prev=${COMP_WORDS[COMP_CWORD-1]}
 31		case $prev in
 32			-@(F|-file|-targets))
 33				_filedir
 34				return 0;
 35				;;
 36			--encoding)
 37				COMPREPLY=( $( compgen -W \
 38					'$( iconv --list | sed -e "s@//@@;" )' \
 39					-- "$cur" ) )
 40				return 0;
 41				;;
 42		esac
 43
 44		command=${COMP_WORDS[1]}
 45
 46		if [[ "$cur" == -* ]]; then
 47			# possible options for the command
 48			case $command in
 49				add)
 50					options=' --non-recursive -N -q --quiet'
 51					;;
 52				@(blame|annotate|ann|praise))
 53					options='-r --revisions -x --cross'
 54					;;
 55				cat)
 56					options='-r --revision'
 57					;;
 58				@(checkout|co))
 59					options='-r --revision -q --quiet -N \
 60						--non-recursive -l --list -d \
 61						--detach --export --relocate \
 62						--purge'
 63					;;
 64				cleanup)
 65					options='-a --all'
 66					;;
 67				@(cmerge|cm))
 68					options='-c --change -l --log -r \
 69						--revision -a --auto \
 70						--verbatim --no-ticket -m \
 71						--message -F --file --template \						--encoding -P --patch -S \
 72						--sign -C --check-only --direct'
 73					;;
 74				@(commit|ci))
 75					options='--import -m --message -F \
 76						--file --encoding --template \
 77						-P --patch -S --sign -C \
 78						--check-only -N \
 79						--non-recursive --direct'
 80					;;
 81				@(copy|cp))
 82					options='-r --revision -p --parent -q \
 83						--quiet -m --message -F --file \
 84						--template --encoding -P \
 85						--patch -S --sign -C \
 86						--check-only --direct'
 87					;;
 88				@(delete|del|remove|rm))
 89					options='-k --keep-local -m --message \
 90						-F --file --encoding \
 91						--template -P --patch -S \
 92						--sign -C --check-only --direct'
 93					;;
 94				@(depotmap|depot))
 95					options='-i --init -l --list -d \
 96						--detach --relocate'
 97					;;
 98				@(diff|di))
 99					options='-r --revision -s --summarize \
100						-b --verbose -N --non-recursive'
101					;;
102				import)
103					options='-f --from-checkout -t \
104						--to-checkout -m --message -F \
105						--file --template --encoding \
106						-P --patch -S --sign -C \
107						--check-only -N \
108						--non-recursive --direct'
109					;;
110				@(list|ls))
111					options='-r --revision -v --verbose -R \
112						--recursive -d --depth -f \
113						--full-path'
114					;;
115				log)
116					options='-r --revision -l --limit -q \
117						--quiet -x --cross -v --verbose'
118					;;
119				merge)
120					options='-r --revision -c --change -I \
121						--incremental -a --auto -l \
122						--log -s --sync -t --to -f \
123						--from --verbatim --no-ticket \
124						--track-rename -m --message \
125						-F --file --template \
126						--encoding -P --patch -S \
127						--sign -C --check-only --direct'
128					;;
129				@(mirror|mi))
130					options='-l --list -d --detach \
131						--relocate --recover --unlock \
132						--upgrade'
133					;;
134				mkdir)
135					options='-p --parent -m --message -F \
136						--file --template --encoding \
137						-P --patch -S --sign -C \
138						--check-only --direct'
139					;;
140				@(move|mv|rename|ren))
141					options='-r --revision -p --parent -q \
142						--quiet -m --message -F --file \
143						--encoding --template -P \
144						--patch -S --sign -C \
145						--check-only --direct'
146					;;
147				patch)
148					options='--depot'
149					;;
150				@(propdel|propset|pdel|pset|pd|ps))
151					options='-R --recursive -r --revision \
152						--revprop -m --message -F \
153						--file --template --encoding \
154						-P --patch -S --sign -C \
155						--check-only -q --quiet \
156						--direct'
157					;;
158				@(propedit|pedit|pe))
159					options='-R --recursive -r --revision \
160						--revprop -m --message -F \
161						--file --template --encoding \
162						-P --patch -S --sign -C \
163						--check-only --direct'
164					;;
165				@(propget|pget|pg))
166					options='-R --recursive -r --revision \
167						--revprop --strict'
168					;;
169				@(proplist|plist|pl))
170					options='-R --recursive -v --verbose \
171						-r --revision --revprop'
172					;;
173				pull)
174					options='-a --all -l --lump'
175					;;
176				push)
177					options='-f --from -l --lump -C \
178						--check -P --patch -S --sign \
179						--verbatim'
180					;;
181				resolved)
182					options='-R --recursive'
183					;;
184				revert)
185					options='-R --recursive -q --quiet'
186					;;
187				@(smerge|sm))
188					options='-I --incremental -l --log -B \
189						--baseless -b --base -s --sync \
190						-t --to -f --from --verbatim \
191						--no-ticket --track-rename \
192						--host --remoterev -m \
193						--message -F --file --template \
194						--encoding -P --patch -S \
195						--sign -C --check-only --direct'
196					;;
197				@(status|stat|st))
198					options='-q --quiet --no-ignore -N \
199						--non-recursive -v --verbose'
200					;;
201				@(switch|sw))
202					options='-r --revision -d --detach -q \
203						--quiet'
204					;;
205				@(sync|sy))
206					options='-a --all -s --skipto -t \
207						--torev'
208					;;
209				@(update|up))
210					options='-r --revision -N \
211						--non-recursive -C \
212						--check-only -s --sync -m \
213						--merge -q --quiet'
214					;;
215			esac
216			options="$options --help -h"
217
218			COMPREPLY=( $( compgen -W "$options" -- $cur ) )
219		else
220			case $command in
221				@(help|h|\?))
222					COMPREPLY=( $( compgen -W "$commands \
223					environment commands intro" -- $cur ) )
224					;;
225				admin)
226					COMPREPLY=( $( compgen -W 'help \
227						deltify dump hotcopy \
228						list-dblogs list-unused-dblogs \
229						load lstxns recover rmtxns \
230						setlog verify rmcache' \
231						-- $cur ) )
232					;;
233				patch)
234					COMPREPLY=( $( compgen -W '--ls --list \
235						--cat --view --regen \
236						--regenerate --up --update \
237						--apply --rm --delete' \
238						-- $cur ) )
239					;;
240				sync)
241					COMPREPLY=( $( compgen -W "$( svk \
242						mirror --list 2>/dev/null | \
243						awk '/^\//{print $1}' )" \
244						-- $cur ) )
245					;;
246				@(co|checkout|push|pull))
247				        if [[ "$cur" == //*/* ]]; then
248						path=${cur%/*}/
249					else
250						path=//
251					fi
252					COMPREPLY=( $( compgen -W "$( svk \
253						list $path 2>/dev/null | sed -e 's|\(.*\)|'$path'\1|')" -- $cur ) )
254					;;
255				*)
256					_filedir
257					;;
258			esac
259		fi
260	fi
261
262	return 0
263} # _svk()
264
265