summaryrefslogtreecommitdiff
path: root/examples/complete/complete2.ianmac
diff options
context:
space:
mode:
Diffstat (limited to 'examples/complete/complete2.ianmac')
-rw-r--r--examples/complete/complete2.ianmac271
1 files changed, 271 insertions, 0 deletions
diff --git a/examples/complete/complete2.ianmac b/examples/complete/complete2.ianmac
new file mode 100644
index 0000000..6fb0a96
--- /dev/null
+++ b/examples/complete/complete2.ianmac
@@ -0,0 +1,271 @@
+#####
+#From: ian@linuxcare.com (Ian Macdonald)
+#Newsgroups: comp.unix.shell
+#Subject: More bash 2.04 completions
+#Date: 12 Aug 2000 09:53:40 GMT
+#Organization: Linuxcare, Inc.
+#Lines: 274
+#Message-ID: <slrn8pa7l2.jgm.ian@lovelorn.linuxcare.com>
+#Reply-To: ian@linuxcare.com
+#####
+
+# Turn on extended globbing
+shopt -s extglob
+
+# cvs(1) completion
+#
+_cvs ()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ if [ $COMP_CWORD -eq 1 ] || [ "${prev:0:1}" = "-" ]; then
+ COMPREPLY=( $( compgen -W 'add admin checkout commit diff \
+ export history import log rdiff release remove rtag status \
+ tag update' $cur ))
+ else
+ COMPREPLY=( $( compgen -f $cur ))
+ fi
+ return 0
+}
+complete -F _cvs cvs
+
+# rpm(8) completion. This isn't exhaustive yet, but still provides
+# quite a lot of functionality.
+#
+_rpm()
+{
+ dashify()
+ {
+ local i
+
+ for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
+ if [ ${#COMPREPLY[i]} -le 2 ]; then
+ COMPREPLY[i]=-${COMPREPLY[i]}
+ else
+ COMPREPLY[i]=--${COMPREPLY[i]}
+ fi
+ done
+ }
+
+ local cur cur_nodash prev
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ cur_nodash=${cur#-}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ if [ $COMP_CWORD = 1 ]; then
+ # first parameter on line
+ case "$cur" in
+ -b*)
+ COMPREPLY=( $( compgen -W 'ba bb bc bi bl bp bs' \
+ $cur_nodash ) )
+ dashify
+ return 0
+ ;;
+ -t*)
+ COMPREPLY=( $( compgen -W 'ta tb tc ti tl tp ts' \
+ $cur_nodash ) )
+ dashify
+ return 0
+ ;;
+ --*)
+ COMPREPLY=( $( compgen -W 'help version initdb \
+ checksig recompile rebuild resign addsign rebuilddb \
+ showrc setperms setgids' ${cur_nodash#-} ) )
+ dashify;
+ return 0
+ ;;
+ *)
+ COMPREPLY=( $( compgen -W 'b e F i q t U V' \
+ $cur_nodash ) )
+ dashify
+ return 0
+ ;;
+ esac
+ fi
+
+ case "${COMP_WORDS[1]}" in
+ -[iFU]*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'percent force test replacepkgs \
+ replacefiles root excludedocs includedocs noscripts rcfile \
+ ignorearch dbpath prefix ignoreos nodeps allfiles ftpproxy \
+ ftpport justdb httpproxy httpport noorder relocate badreloc \
+ notriggers excludepath ignoresize oldpackage' ${cur_nodash#-} ))
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # add a list of RPMS to possible completions
+ COMPREPLY=( ${COMPREPLY[@]} $( compgen -G $cur\*.rpm ) )
+ return 0
+ ;;
+ -qp*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'scripts root rcfile whatprovides \
+ whatrequires requires triggeredby ftpport ftpproxy httpproxy \
+ httpport provides triggers dump changelog dbpath filesbypkg' \
+ ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # add a list of RPMS to possible completions
+ COMPREPLY=( ${COMPREPLY[@]} $( compgen -G $cur\*.rpm ) )
+ return 0
+ ;;
+ -*f)
+ # standard filename completion
+ COMPREPLY=( $( compgen -f $cur ) )
+ return 0
+ ;;
+ -e)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'allmatches noscripts notriggers \
+ nodeps test' ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # complete on basename of installed RPMs
+ COMPREPLY=( $( rpm -qa | \
+ sed -ne 's/^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9.]\+$/\1/p' ) )
+ return 0
+ ;;
+ -qa*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'scripts root rcfile whatprovides \
+ whatrequires requires triggeredby ftpport ftpproxy httpproxy \
+ httpport provides triggers dump changelog dbpath specfile \
+ querybynumber last filesbypkg' ${cur_nodash#-} ) )
+ dashify;
+ return 0
+ ;;
+ -q*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'scripts root rcfile whatprovides \
+ whatrequires requires triggeredby ftpport ftpproxy httpproxy \
+ httpport provides triggers dump changelog dbpath specfile \
+ querybynumber last filesbypkg' ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # add a list of RPMS to possible completions
+ COMPREPLY=( ${COMPREPLY[@]} $( rpm -qa | \
+ sed -ne 's/^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9.]\+$/\1/p' ) )
+ return 0
+ ;;
+ -[Vy]*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'root rcfile dbpath nodeps nofiles \
+ noscripts nomd5 nopgp' ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # add a list of RPMS to possible completions
+ COMPREPLY=( ${COMPREPLY[@]} $( rpm -qa | \
+ sed -ne 's/^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9.]\+$/\1/p' ) )
+ return 0
+ ;;
+ -b*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'short-circuit timecheck clean \
+ rmsource test sign buildroot target buildarch buildos' \
+ ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # complete on .spec files
+ COMPREPLY=( $( compgen -G $cur\*.spec ) )
+ return 0
+ ;;
+ -t*)
+ # complete on list of relevant options
+ COMPREPLY=( $( compgen -W 'short-circuit timecheck clean \
+ rmsource test sign buildroot target buildarch buildos' \
+ ${cur_nodash#-} ) )
+ dashify;
+ # return if $cur is an option
+ [ "${cur:0:1}" = "-" ] && return 0
+ # complete on .tar.gz files
+ COMPREPLY=( $( compgen -G $cur\*.tar.gz ) )
+ return 0
+ ;;
+ --re@(build|compile))
+ # complete on source RPMs
+ COMPREPLY=( $( compgen -G $cur\*.src.rpm ) )
+ return 0
+ ;;
+ --@(checksig|@(re|add)sign))
+ # complete on RPMs
+ COMPREPLY=( $( compgen -G $cur\*.rpm ) )
+ return 0
+ ;;
+ --set@(perms|gids))
+ # complete on installed RPMs
+ COMPREPLY=( ${COMPREPLY[@]} $( rpm -qa | \
+ sed -ne 's/^\('$cur'.*\)-[0-9a-zA-Z._]\+-[0-9.]\+$/\1/p' ) )
+ return 0
+ ;;
+ esac
+}
+complete -F _rpm rpm
+
+# chsh(1) completion
+#
+_chsh()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ if [ "$prev" = "-s" ]; then
+ COMPREPLY=( $( chsh -l | grep ^$cur ) )
+ else
+ COMPREPLY=( $( compgen -u $cur ) )
+ fi
+}
+complete -F _chsh chsh
+
+# chkconfig(8) completion
+#
+_chkconfig()
+{
+ local cur prev
+
+ COMPREPLY=()
+ cur=${COMP_WORDS[COMP_CWORD]}
+ cur_nodash=${cur#--}
+ prev=${COMP_WORDS[COMP_CWORD-1]}
+
+ if [ $COMP_CWORD -eq 1 ]; then
+ COMPREPLY=( $( compgen -W 'list add del level' $cur_nodash ) )
+ for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do
+ COMPREPLY[i]=--${COMPREPLY[i]}
+ done
+ return 0
+ fi
+
+ if [ $COMP_CWORD -eq 4 ]; then
+ COMPREPLY=( $( compgen -W 'on off reset' $cur ) )
+ return 0
+ fi
+
+ case "$prev" in
+ @([1-6]|--@(list|add|del)))
+ COMPREPLY=( $( compgen -W "`(cd /etc/rc.d/init.d; echo *)`" \
+ $cur) )
+ return 0
+ ;;
+ --level)
+ COMPREPLY=( $( compgen -W '1 2 3 4 5 6' $cur ) )
+ return 0
+ ;;
+ esac
+}
+complete -F _chkconfig chkconfig
+###