[Lunar-commits] r14678 - in moonbase/trunk/devel/subversion: . profile.d

Chad Kittel v3rt1g0 at lunar-linux.org
Mon May 9 04:28:48 UTC 2005


Author: v3rt1g0
Date: 2005-05-09 04:28:46 +0000 (Mon, 09 May 2005)
New Revision: 14678

Added:
   moonbase/trunk/devel/subversion/profile.d/
   moonbase/trunk/devel/subversion/profile.d/svn-completion.rc
Log:
This is the bash completion script for subversion.  I _think_
this is the "offical" one, but I'm not 100%, could have been
modified from the offical.  I got it from
http://worksintheory.org/files/misc/bash_completion_svn


Added: moonbase/trunk/devel/subversion/profile.d/svn-completion.rc
===================================================================
--- moonbase/trunk/devel/subversion/profile.d/svn-completion.rc	2005-05-09 03:12:50 UTC (rev 14677)
+++ moonbase/trunk/devel/subversion/profile.d/svn-completion.rc	2005-05-09 04:28:46 UTC (rev 14678)
@@ -0,0 +1,350 @@
+# Programmable completion for the Subversion svn command under bash. Source
+# this file (or on some systems add it to ~/.bash_completion and start a new
+# shell) and bash's completion mechanism will know all about svn's options!
+# Provides completion for the svnadmin command as well.  Who wants to read
+# man pages/help text...
+
+# Known to work with bash 2.05a with programmable completion and extended
+# pattern matching enabled (use 'shopt -s extglob progcomp' to enable
+# these if they are not already enabled).
+
+# Turn on extended globbing
+shopt -s extglob
+
+_svn()
+{
+	local cur cmds cmdOpts pOpts mOpts rOpts qOpts nOpts optsParam opt
+	local helpCmds optBase i
+
+	COMPREPLY=()
+	cur=${COMP_WORDS[COMP_CWORD]}
+
+	# Possible expansions, without unambiguous abbreviations such as "up".
+	cmds='add blame annotate praise cat checkout co cleanup commit ci \
+              copy cp delete remove rm diff export help ? import info \
+              list ls log merge mkdir move mv rename \
+              propdel pdel propedit pedit propget pget \
+              proplist plist propset pset resolved revert \
+              status switch update version --version'
+
+	if [[ $COMP_CWORD -eq 1 ]] ; then
+		COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
+		return 0
+	fi
+
+	# options that require a parameter
+	# note: continued lines must end '|' continuing lines must start '|'
+	optsParam="-r|--revision|--username|--password|--targets|
+	           |-x|--extensions|-m|--message|-F|--file|--encoding|
+	           |--diff-cmd|--diff3-cmd|--editor-cmd|--old|--new|
+	           |--config-dir|--native-eol|--limit"
+
+	# if not typing an option, or if the previous option required a
+	# parameter, then fallback on ordinary filename expansion
+	helpCmds='help|--help|h|\?'
+	urlCmds='co|checkout|ls|list|cp|copy|mv|move'
+	if [[ ${COMP_WORDS[1]} != @($helpCmds) ]] && \
+	   [[ "$cur" != -* ]] || \
+	   [[ ${COMP_WORDS[COMP_CWORD-1]} == @($optsParam) ]] ; then
+		if [[ ${COMP_WORDS[1]} == @($urlCmds) ]] ; then
+			_svn_url
+		fi
+		return 0
+	fi
+
+	pOpts="--username --password --no-auth-cache --non-interactive"
+	mOpts="-m --message -F --file --encoding --force-log"
+	rOpts="-r --revision"
+	qOpts="-q --quiet"
+	nOpts="-N --non-recursive"
+
+	# possible options for the command
+	cmdOpts=
+	case ${COMP_WORDS[1]} in
+	--version)
+		cmdOpts="$qOpts"
+		;;
+	add)
+		cmdOpts="--auto-props --no-auto-props --force --targets \
+		         $nOpts $qOpts"
+		;;
+	blame|annotate|ann|praise)
+		cmdOpts="$rOpts $pOpts -v --verbose"
+		;;
+	cat)
+		cmdOpts="$rOpts $pOpts"
+		;;
+	checkout|co)
+		cmdOpts="$rOpts $qOpts $nOpts $pOpts"
+		;;
+	cleanup)
+		cmdOpts="--diff3-cmd"
+		;;
+	commit|ci)
+		cmdOpts="$mOpts $qOpts $nOpts --targets --editor-cmd $pOpts"
+		;;
+	copy|cp)
+		cmdOpts="$mOpts $rOpts $qOpts --editor-cmd $pOpts"
+		;;
+	delete|del|remove|rm)
+		cmdOpts="--force $mOpts $qOpts --targets --editor-cmd $pOpts"
+		;;
+	diff|di)
+		cmdOpts="$rOpts -x --extensions --diff-cmd --no-diff-deleted \
+		         $nOpts $pOpts --force --old --new --notice-ancestry"
+		;;
+	export)
+		cmdOpts="$rOpts $qOpts $pOpts --force --native-eol"
+		;;
+	help|h|\?)
+		cmdOpts="$cmds $qOpts"
+		;;
+	import)
+		cmdOpts="--auto-props --no-auto-props $mOpts $qOpts $nOpts \
+		         --editor-cmd $pOpts"
+		;; 
+	info)
+		cmdOpts="--targets -R --recursive"
+		;;
+	list|ls)
+		cmdOpts="$rOpts -v --verbose -R --recursive $pOpts"
+		;;
+	log)
+		cmdOpts="$rOpts -v --verbose --targets $pOpts --stop-on-copy \
+		         --incremental --xml $qOpts --limit"
+		;;
+	merge)
+		cmdOpts="$rOpts $nOpts $qOpts --force --dry-run --diff3-cmd \
+		         $pOpts --ignore-ancestry"
+		;;
+	mkdir)
+		cmdOpts="$mOpts $qOpts --editor-cmd $pOpts"
+		;;
+	move|mv|rename|ren)
+		cmdOpts="$mOpts $rOpts $qOpts --force --editor-cmd $pOpts"
+		;;
+	propdel|pdel|pd)
+		cmdOpts="$qOpts -R --recursive $rOpts --revprop $pOpts"
+		;;
+	propedit|pedit|pe)
+		cmdOpts="$rOpts --revprop --encoding --editor-cmd $pOpts \
+		         --force"
+		;;
+	propget|pget|pg)
+		cmdOpts="-R --recursive $rOpts --revprop --strict $pOpts"
+		;;
+	proplist|plist|pl)
+		cmdOpts="-v --verbose -R --recursive $rOpts --revprop $qOpts \
+		         $pOpts"
+		;;
+	propset|pset|ps)
+		cmdOpts="-F --file $qOpts --targets -R --recursive --revprop \
+		         --encoding $pOpts $rOpts --force"
+		;;
+	resolved)
+		cmdOpts="--targets -R --recursive $qOpts"
+		;;
+	revert)
+		cmdOpts="--targets -R --recursive $qOpts"
+		;;
+	status|stat|st)
+		cmdOpts="-u --show-updates -v --verbose $nOpts $qOpts $pOpts \
+		         --no-ignore"
+		;;
+	switch|sw)
+		cmdOpts="--relocate $rOpts $nOpts $qOpts $pOpts --diff3-cmd"
+		;;
+	update|up)
+		cmdOpts="$rOpts $nOpts $qOpts $pOpts --diff3-cmd"
+		;;
+	version)
+		cmdOpts="$qOpts"
+		;;
+	*)
+		;;
+	esac
+
+	cmdOpts="$cmdOpts --help -h --config-dir"
+
+	# take out options already given
+	for (( i=2; i<=$COMP_CWORD-1; ++i )) ; do
+		opt=${COMP_WORDS[$i]}
+
+		case $opt in
+		--*)    optBase=${opt/=*/} ;;
+		-*)     optBase=${opt:0:2} ;;
+		esac
+
+		cmdOpts=" $cmdOpts "
+		cmdOpts=${cmdOpts/ ${optBase} / }
+
+		# take out alternatives and mutually exclusives
+		case $optBase in
+		-v)              cmdOpts=${cmdOpts/ --verbose / } ;;
+		--verbose)       cmdOpts=${cmdOpts/ -v / } ;;
+		-N)              cmdOpts=${cmdOpts/ --non-recursive / } ;;
+		--non-recursive) cmdOpts=${cmdOpts/ -N / } ;;
+		-R)              cmdOpts=${cmdOpts/ --recursive / } ;;
+		--recursive)     cmdOpts=${cmdOpts/ -R / } ;;
+		-x)              cmdOpts=${cmdOpts/ --extensions / } ;;
+		--extensions)    cmdOpts=${cmdOpts/ -x / } ;;
+		-q)              cmdOpts=${cmdOpts/ --quiet / } ;;
+		--quiet)         cmdOpts=${cmdOpts/ -q / } ;;
+		-h)              cmdOpts=${cmdOpts/ --help / } ;;
+		--help)          cmdOpts=${cmdOpts/ -h / } ;;
+		-r)              cmdOpts=${cmdOpts/ --revision / } ;;
+		--revision)      cmdOpts=${cmdOpts/ -r / } ;;
+		--auto-props)    cmdOpts=${cmdOpts/ --no-auto-props / } ;;
+		--no-auto-props) cmdOpts=${cmdOpts/ --auto-props / } ;;
+
+		-m|--message|-F|--file)
+			cmdOpts=${cmdOpts/ --message / }
+			cmdOpts=${cmdOpts/ -m / }
+			cmdOpts=${cmdOpts/ --file / }
+			cmdOpts=${cmdOpts/ -F / }
+			;;
+		esac
+
+		# skip next option if this one requires a parameter
+		if [[ $opt == @($optsParam) ]] ; then
+			((++i))
+		fi
+	done
+
+	COMPREPLY=( $( compgen -W "$cmdOpts" -- $cur ) )
+
+	return 0
+}
+complete -F _svn -o default -o nospace svn
+
+_svn_url ()
+{
+	local cur protocols path repopath tmp
+
+	COMPREPLY=()
+	cur=${COMP_WORDS[COMP_CWORD]}
+
+	if [[ ${cur} == *:* ]] ; then
+		path=${cur#file://}
+		tmp=${path%svnrepo*}
+
+		if [ "$path" != "" ] && [ "$path" != "$tmp" ]; then
+			path=${tmp}svnrepo
+		fi
+
+		if [ -r "${path}/db" ]; then
+			repopath=${cur#*svnrepo}
+
+			if [[ ${repopath} == */* ]] ; then
+				validpath=${repopath%\/*}
+			else
+				validpath=""
+			fi
+
+			files=$( svn ls file://$path$validpath )
+			COMPREPLY=( $( compgen -P "//$path$validpath/" -W "$files" ${repopath##*/} ) )
+		else
+			COMPREPLY=( $( compgen -P "//" -S "/" -d $path ) )
+		fi
+	else
+		protocols="svn file http ssh+svn"
+		COMPREPLY=( $( compgen -S "://" -W "$protocols" $cur ) )
+	fi
+
+	return 0
+}
+
+_svnadmin ()
+{
+	local cur cmds cmdOpts optsParam opt helpCmds optBase i
+
+	COMPREPLY=()
+	cur=${COMP_WORDS[COMP_CWORD]}
+
+	cmds='create deltify dump help h ? hotcopy load list-dblogs \
+	      list-unused-dblogs lstxns recover rmtxns setlog verify'
+
+	if [[ $COMP_CWORD -eq 1 ]] ; then
+		COMPREPLY=( $( compgen -W "$cmds" -- $cur ) )
+		return 0
+	fi
+
+	# options that require a parameter
+	# note: continued lines must end '|' continuing lines must start '|'
+	optsParam="-r|--revision|--parent-dir|--fs-type"
+
+	# if not typing an option, or if the previous option required a
+	# parameter, then fallback on ordinary filename expansion
+	helpCmds='help|--help|h|\?'
+	if [[ ${COMP_WORDS[1]} != @($helpCmds) ]] && \
+	   [[ "$cur" != -* ]] || \
+	   [[ ${COMP_WORDS[COMP_CWORD-1]} == @($optsParam) ]] ; then
+		return 0
+	fi
+
+	cmdOpts=
+	case ${COMP_WORDS[1]} in
+	create)
+		cmdOpts="--bdb-txn-nosync --bdb-log-keep --config-dir --fs-type"
+		;;
+	deltify)
+		cmdOpts="-r --revision -q --quiet"
+		;;
+	dump)
+		cmdOpts="-r --revision --incremental -q --quiet --deltas"
+		;;
+	help|h|\?)
+		cmdOpts="$cmds $qOpts"
+		;;
+	hotcopy)
+		cmdOpts="--clean-logs"
+		;;
+	load)
+		cmdOpts="--ignore-uuid --force-uuid --parent-dir -q --quiet"
+		;;
+	list-dblogs)
+		;;
+	list-unused-dblogs)
+		;;
+	setlog)
+		cmdOpts="-r --revision"
+		;;
+	*)
+		;;
+	esac
+
+	cmdOpts="$cmdOpts --help -h"
+
+	# take out options already given
+	for (( i=2; i<=$COMP_CWORD-1; ++i )) ; do
+		opt=${COMP_WORDS[$i]}
+
+		case $opt in
+		--*)    optBase=${opt/=*/} ;;
+		-*)     optBase=${opt:0:2} ;;
+		esac
+
+		cmdOpts=" $cmdOpts "
+		cmdOpts=${cmdOpts/ ${optBase} / }
+
+		# take out alternatives
+		case $optBase in
+		-q)              cmdOpts=${cmdOpts/ --quiet / } ;;
+		--quiet)         cmdOpts=${cmdOpts/ -q / } ;;
+		-h)              cmdOpts=${cmdOpts/ --help / } ;;
+		--help)          cmdOpts=${cmdOpts/ -h / } ;;
+		-r)              cmdOpts=${cmdOpts/ --revision / } ;;
+		--revision)      cmdOpts=${cmdOpts/ -r / } ;;
+		esac
+
+		# skip next option if this one requires a parameter
+		if [[ $opt == @($optsParam) ]] ; then
+			((++i))
+		fi
+	done
+
+	COMPREPLY=( $( compgen -W "$cmdOpts" -- $cur ) )
+
+	return 0
+}
+complete -F _svnadmin -o default svnadmin



More information about the Lunar-commits mailing list