[Bash-completion-commits] ./current r1285: completion for heimdal

Guillaume Rousse guillomovitch at zarb.org
Tue Jan 20 20:52:41 UTC 2009


------------------------------------------------------------
revno: 1285
committer: Guillaume Rousse <guillomovitch at zarb.org>
branch nick: current
timestamp: Tue 2009-01-20 21:52:41 +0100
message:
  completion for heimdal
added:
  to_review/heimdal
-------------- next part --------------
=== added file 'to_review/heimdal'
--- a/to_review/heimdal	1970-01-01 00:00:00 +0000
+++ b/to_review/heimdal	2009-01-20 20:52:41 +0000
@@ -0,0 +1,158 @@
+# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
+# ex: ts=8 sw=8 noet filetype=sh
+#
+# bash completion for heimdal
+
+have ktutil && {
+_heimdal_principals()
+{
+
+	COMPREPLY=( $( kadmin -l dump 2>/dev/null | awk '{print $1}' | \
+		grep "^$cur" ) )
+}
+
+_heimdal_realms()
+{
+
+	COMPREPLY=( $( kadmin -l dump 2>/dev/null | awk '{print $1}' | \
+		awk -F @ '{print $2}' | grep "^$cur" ) )
+}
+
+_heimdal_encodings()
+{
+
+	COMPREPLY=( $( compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5 \
+		des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96 \
+		aes256-cts-hmac-sha1-96' -- $cur ) )
+}
+
+
+_ktutil()
+{
+	local cur prev command options
+
+	COMPREPLY=()
+	cur=`_get_cword`
+	prev=${COMP_WORDS[COMP_CWORD-1]}
+
+	case $prev in
+		-p)
+			_heimdal_principals
+			return 0
+			;;
+		-e)
+			_heimdal_encodings
+			return 0
+			;;
+		-a)
+			_known_hosts
+			return 0
+			;;
+		-r)
+			_heimdal_realms
+			return 0
+			;;
+		-@(s|k))
+			_filedir
+			return 0
+			;;
+	esac
+
+	if [[ "$cur" == *=* ]]; then
+		prev=${cur/=*/}
+		cur=${cur/*=/}
+		case "$prev" in
+			--principal)
+				_heimdal_principals
+				return 0
+				;;
+			--enctype)
+				_heimdal_encodings
+				return 0
+				;;
+			--admin-server)
+				_known_hosts
+				return 0
+				;;
+			--realm)
+				_heimdal_realms
+				return 0
+				;;
+			--@(srv|key)tab)
+				_filedir
+				return 0
+				;;
+		esac
+	fi
+
+	commands='add change copy get list remove rename purge srvconvert \
+		srv2keytab srvcreate key2srvtab'
+
+	for (( i=1; i < COMP_CWORD; i++ )); do
+		case ${COMP_WORDS[i]} in
+			-@(k|-keytab))
+				i=$(($i+1))
+				;;
+			-*)
+				;;
+			*)
+				command=${COMP_WORDS[i]}
+				break
+				;;
+		esac
+	done
+
+	if [[ "$cur" == -* ]]; then
+		case $command in
+			add)
+				options='-p --principal= -V -e --enctype= -w \
+					--password= -r --random -s --no-salt \
+					-h --hex'
+			;;
+			change)
+				options='-r --realm= -a --admin-server -s \
+					--server-port='
+			;;
+			get)
+				options='-p --principal= -e --enctype= -r \
+					--realm= -a --admin-server= -s server \
+					--server-port='
+				;;
+			list)
+				options='--keys --timestamp'
+				;;
+			remove)
+				options='-p --principal= -V --kvno -e \
+					--enctype='
+				;;
+			purge)
+				options='--age='
+				;;
+			@(srv2keytab|key2srvtab))
+				options='-s --srvtab='
+				;;
+			*)
+				options='-k --keytab= -v --verbose --version \
+					-v --help'
+				;;
+		esac
+		COMPREPLY=( $( compgen -W "$options" -- $cur ) )
+	else
+		case $command in
+			copy)
+				_filedir
+				;;
+			get)
+				_heimdal_principals
+				;;
+			rename)
+				_heimdal_principals
+				;;
+			*)
+				COMPREPLY=( $( compgen -W "$commands" -- $cur ) )
+				;;
+		esac
+	fi
+}
+complete -F _ktutil ktutil
+}



More information about the Bash-completion-commits mailing list