Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > a6fc57324115759352214cd585446dfb > files > 24

bash-completion-20060301-21mdv2008.1.noarch.rpm

# svk completion by Guillaume Rousse <guillomovitch@zarb.org>
#
# $Id: svk,v 1.1 2006/03/01 10:45:03 ianmacd Exp $

_svk()
{
	local cur prev commands options command

	COMPREPLY=()
	cur=${COMP_WORDS[COMP_CWORD]}

	commands='add admin annotate ann blame praise cat checkout co cleanup \
		cmerge cm commit ci copy cp delete del remove rm depotmap \
		depot describe desc diff di help h ? import info list ls log \
		merge mirror mi mkdir move mv ren rename patch propdel pd pdel \
		propedit pe pedit propget pg pget proplist pl plist propset ps \
		pset pull push resolved revert smerge sm status st stat switch \
		sw sync sy update up verify'

	if [[ $COMP_CWORD -eq 1 ]] ; then
		if [[ "$cur" == -* ]]; then
			COMPREPLY=( $( compgen -W '--version' -- $cur ) )
		else
			COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
		fi
	else

		prev=${COMP_WORDS[COMP_CWORD-1]}
		case $prev in
			-@(F|-file|-targets))
				_filedir
				return 0;
				;;
			--encoding)
				COMPREPLY=( $( compgen -W \
					'$( iconv --list | sed -e "s@//@@;" )' \
					-- "$cur" ) )
				return 0;
				;;
		esac

		command=${COMP_WORDS[1]}

		if [[ "$cur" == -* ]]; then
			# possible options for the command
			case $command in
				add)
					options=' --non-recursive -N -q --quiet'
					;;
				@(blame|annotate|ann|praise))
					options='-r --revisions -x --cross'
					;;
				cat)
					options='-r --revision'
					;;
				@(checkout|co))
					options='-r --revision -q --quiet -N \
						--non-recursive -l --list -d \
						--detach --export --relocate \
						--purge'
					;;
				cleanup)
					options='-a --all'
					;;
				@(cmerge|cm))
					options='-c --change -l --log -r \
						--revision -a --auto \
						--verbatim --no-ticket -m \
						--message -F --file --template \						--encoding -P --patch -S \
						--sign -C --check-only --direct'
					;;
				@(commit|ci))
					options='--import -m --message -F \
						--file --encoding --template \
						-P --patch -S --sign -C \
						--check-only -N \
						--non-recursive --direct'
					;;
				@(copy|cp))
					options='-r --revision -p --parent -q \
						--quiet -m --message -F --file \
						--template --encoding -P \
						--patch -S --sign -C \
						--check-only --direct'
					;;
				@(delete|del|remove|rm))
					options='-k --keep-local -m --message \
						-F --file --encoding \
						--template -P --patch -S \
						--sign -C --check-only --direct'
					;;
				@(depotmap|depot))
					options='-i --init -l --list -d \
						--detach --relocate'
					;;
				@(diff|di))
					options='-r --revision -s --summarize \
						-b --verbose -N --non-recursive'
					;;
				import)
					options='-f --from-checkout -t \
						--to-checkout -m --message -F \
						--file --template --encoding \
						-P --patch -S --sign -C \
						--check-only -N \
						--non-recursive --direct'
					;;
				@(list|ls))
					options='-r --revision -v --verbose -R \
						--recursive -d --depth -f \
						--full-path'
					;;
				log)
					options='-r --revision -l --limit -q \
						--quiet -x --cross -v --verbose'
					;;
				merge)
					options='-r --revision -c --change -I \
						--incremental -a --auto -l \
						--log -s --sync -t --to -f \
						--from --verbatim --no-ticket \
						--track-rename -m --message \
						-F --file --template \
						--encoding -P --patch -S \
						--sign -C --check-only --direct'
					;;
				@(mirror|mi))
					options='-l --list -d --detach \
						--relocate --recover --unlock \
						--upgrade'
					;;
				mkdir)
					options='-p --parent -m --message -F \
						--file --template --encoding \
						-P --patch -S --sign -C \
						--check-only --direct'
					;;
				@(move|mv|rename|ren))
					options='-r --revision -p --parent -q \
						--quiet -m --message -F --file \
						--encoding --template -P \
						--patch -S --sign -C \
						--check-only --direct'
					;;
				patch)
					options='--depot'
					;;
				@(propdel|propset|pdel|pset|pd|ps))
					options='-R --recursive -r --revision \
						--revprop -m --message -F \
						--file --template --encoding \
						-P --patch -S --sign -C \
						--check-only -q --quiet \
						--direct'
					;;
				@(propedit|pedit|pe))
					options='-R --recursive -r --revision \
						--revprop -m --message -F \
						--file --template --encoding \
						-P --patch -S --sign -C \
						--check-only --direct'
					;;
				@(propget|pget|pg))
					options='-R --recursive -r --revision \
						--revprop --strict'
					;;
				@(proplist|plist|pl))
					options='-R --recursive -v --verbose \
						-r --revision --revprop'
					;;
				pull)
					options='-a --all -l --lump'
					;;
				push)
					options='-f --from -l --lump -C \
						--check -P --patch -S --sign \
						--verbatim'
					;;
				resolved)
					options='-R --recursive'
					;;
				revert)
					options='-R --recursive -q --quiet'
					;;
				@(smerge|sm))
					options='-I --incremental -l --log -B \
						--baseless -b --base -s --sync \
						-t --to -f --from --verbatim \
						--no-ticket --track-rename \
						--host --remoterev -m \
						--message -F --file --template \
						--encoding -P --patch -S \
						--sign -C --check-only --direct'
					;;
				@(status|stat|st))
					options='-q --quiet --no-ignore -N \
						--non-recursive -v --verbose'
					;;
				@(switch|sw))
					options='-r --revision -d --detach -q \
						--quiet'
					;;
				@(sync|sy))
					options='-a --all -s --skipto -t \
						--torev'
					;;
				@(update|up))
					options='-r --revision -N \
						--non-recursive -C \
						--check-only -s --sync -m \
						--merge -q --quiet'
					;;
			esac
			options="$options --help -h"

			COMPREPLY=( $( compgen -W "$options" -- $cur ) )
		else
			case $command in
				@(help|h|\?))
					COMPREPLY=( $( compgen -W "$commands \
					environment commands intro" -- $cur ) )
					;;
				admin)
					COMPREPLY=( $( compgen -W 'help \
						deltify dump hotcopy \
						list-dblogs list-unused-dblogs \
						load lstxns recover rmtxns \
						setlog verify rmcache' \
						-- $cur ) )
					;;
				patch)
					COMPREPLY=( $( compgen -W '--ls --list \
						--cat --view --regen \
						--regenerate --up --update \
						--apply --rm --delete' \
						-- $cur ) )
					;;
				sync)
					COMPREPLY=( $( compgen -W "$( svk \
						mirror --list 2>/dev/null | \
						awk '/^\//{print $1}' )" \
						-- $cur ) )
					;;
				@(co|checkout|push|pull))
				        if [[ "$cur" == //*/* ]]; then
						path=${cur%/*}/
					else
						path=//
					fi
					COMPREPLY=( $( compgen -W "$( svk \
						list $path 2>/dev/null | sed -e 's|\(.*\)|'$path'\1|')" -- $cur ) )
					;;
				*)
					_filedir
					;;
			esac
		fi
	fi

	return 0
}
complete -F _svk -o default svk