diff options
author | David Paleino <dapal@debian.org> | 2011-02-06 21:26:41 +0100 |
---|---|---|
committer | David Paleino <dapal@debian.org> | 2011-02-06 21:26:41 +0100 |
commit | 9920a8faedf704420571d8072ccab27e9dac40ba (patch) | |
tree | 733edf3b07be06c130d04aaa1884213326722cad /completions | |
parent | f9748115fb4b2950fb4df7535fb723c4affde078 (diff) | |
download | bash-completion-9920a8faedf704420571d8072ccab27e9dac40ba.tar.gz |
Imported Upstream version 1.3upstream/1.3
Diffstat (limited to 'completions')
189 files changed, 20144 insertions, 0 deletions
diff --git a/completions/Makefile.am b/completions/Makefile.am new file mode 100644 index 00000000..38cd986d --- /dev/null +++ b/completions/Makefile.am @@ -0,0 +1,183 @@ +SUBDIRS = helpers +bashcomp_DATA = abook \ + ant \ + apache2ctl \ + apt \ + apt-build \ + aptitude \ + aspell \ + autoconf \ + automake \ + autorpm \ + bash-builtins \ + bind-utils \ + bitkeeper \ + bittorrent \ + bluez \ + brctl \ + bzip2 \ + cardctl \ + cfengine \ + chkconfig \ + chsh \ + cksfv \ + clisp \ + configure \ + coreutils \ + cowsay \ + cpan2dist \ + cpio \ + crontab \ + cups \ + cryptsetup \ + cvs \ + cvsps \ + dd \ + dhclient \ + dict \ + dpkg \ + dselect \ + dsniff \ + dvd+rw-tools \ + e2fsprogs \ + findutils \ + freeciv \ + freerdp \ + fuse \ + gcc \ + gcl \ + gdb \ + genisoimage \ + getent \ + gkrellm \ + gnatmake \ + gpg \ + gpg2 \ + gzip \ + heimdal \ + hping2 \ + iconv \ + iftop \ + ifupdown \ + imagemagick \ + info \ + iptables \ + ipmitool \ + iproute2 \ + ipsec \ + ipv6calc \ + isql \ + jar \ + java \ + k3b \ + kldload \ + larch \ + ldapvi \ + lftp \ + lilo \ + links \ + lintian \ + lisp \ + lrzip \ + lsof \ + lvm \ + lzma \ + lzop \ + mailman \ + make \ + man \ + mc \ + mcrypt \ + mdadm \ + medusa \ + minicom \ + mkinitrd \ + module-init-tools \ + monodevelop \ + mount \ + mplayer \ + msynctool \ + mtx \ + munin-node \ + mutt \ + mysqladmin \ + ncftp \ + net-tools \ + nmap \ + ntpdate \ + openldap \ + openssl \ + open-iscsi \ + p4 \ + perl \ + pine \ + pkg-config \ + pkg_install \ + pkgtools \ + pm-utils \ + portupgrade \ + postfix \ + postgresql \ + povray \ + procps \ + python \ + qdbus \ + qemu \ + quota-tools \ + rcs \ + rdesktop \ + reportbug \ + resolvconf \ + rfkill \ + ri \ + rpcdebug \ + rpm \ + rpmcheck \ + rrdtool \ + rsync \ + rtcwake \ + samba \ + sbcl \ + screen \ + service \ + sh \ + shadow \ + sitecopy \ + smartctl \ + snownews \ + sqlite3 \ + ssh \ + sshfs \ + strace \ + svk \ + sysbench \ + sysctl \ + sysv-rc \ + tar \ + tcpdump \ + unace \ + unrar \ + update-alternatives \ + util-linux \ + vncviewer \ + vpnc \ + wireless-tools \ + wodim \ + wol \ + wtf \ + wvdial \ + xhost \ + xm \ + xmllint \ + xmlwf \ + xmms \ + xmodmap \ + xrandr \ + xrdb \ + xsltproc \ + xz \ + yp-tools \ + yum-arch + +EXTRA_DIST = $(bashcomp_DATA) \ + _mock _modules _subversion _yum _yum-utils diff --git a/completions/Makefile.in b/completions/Makefile.in new file mode 100644 index 00000000..04f41522 --- /dev/null +++ b/completions/Makefile.in @@ -0,0 +1,734 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = completions +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(bashcompdir)" +DATA = $(bashcomp_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bashcompdir = @bashcompdir@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +helpersdir = @helpersdir@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = helpers +bashcomp_DATA = abook \ + ant \ + apache2ctl \ + apt \ + apt-build \ + aptitude \ + aspell \ + autoconf \ + automake \ + autorpm \ + bash-builtins \ + bind-utils \ + bitkeeper \ + bittorrent \ + bluez \ + brctl \ + bzip2 \ + cardctl \ + cfengine \ + chkconfig \ + chsh \ + cksfv \ + clisp \ + configure \ + coreutils \ + cowsay \ + cpan2dist \ + cpio \ + crontab \ + cups \ + cryptsetup \ + cvs \ + cvsps \ + dd \ + dhclient \ + dict \ + dpkg \ + dselect \ + dsniff \ + dvd+rw-tools \ + e2fsprogs \ + findutils \ + freeciv \ + freerdp \ + fuse \ + gcc \ + gcl \ + gdb \ + genisoimage \ + getent \ + gkrellm \ + gnatmake \ + gpg \ + gpg2 \ + gzip \ + heimdal \ + hping2 \ + iconv \ + iftop \ + ifupdown \ + imagemagick \ + info \ + iptables \ + ipmitool \ + iproute2 \ + ipsec \ + ipv6calc \ + isql \ + jar \ + java \ + k3b \ + kldload \ + larch \ + ldapvi \ + lftp \ + lilo \ + links \ + lintian \ + lisp \ + lrzip \ + lsof \ + lvm \ + lzma \ + lzop \ + mailman \ + make \ + man \ + mc \ + mcrypt \ + mdadm \ + medusa \ + minicom \ + mkinitrd \ + module-init-tools \ + monodevelop \ + mount \ + mplayer \ + msynctool \ + mtx \ + munin-node \ + mutt \ + mysqladmin \ + ncftp \ + net-tools \ + nmap \ + ntpdate \ + openldap \ + openssl \ + open-iscsi \ + p4 \ + perl \ + pine \ + pkg-config \ + pkg_install \ + pkgtools \ + pm-utils \ + portupgrade \ + postfix \ + postgresql \ + povray \ + procps \ + python \ + qdbus \ + qemu \ + quota-tools \ + rcs \ + rdesktop \ + reportbug \ + resolvconf \ + rfkill \ + ri \ + rpcdebug \ + rpm \ + rpmcheck \ + rrdtool \ + rsync \ + rtcwake \ + samba \ + sbcl \ + screen \ + service \ + sh \ + shadow \ + sitecopy \ + smartctl \ + snownews \ + sqlite3 \ + ssh \ + sshfs \ + strace \ + svk \ + sysbench \ + sysctl \ + sysv-rc \ + tar \ + tcpdump \ + unace \ + unrar \ + update-alternatives \ + util-linux \ + vncviewer \ + vpnc \ + wireless-tools \ + wodim \ + wol \ + wtf \ + wvdial \ + xhost \ + xm \ + xmllint \ + xmlwf \ + xmms \ + xmodmap \ + xrandr \ + xrdb \ + xsltproc \ + xz \ + yp-tools \ + yum-arch + +EXTRA_DIST = $(bashcomp_DATA) \ + _mock _modules _subversion _yum _yum-utils + +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign completions/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign completions/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-bashcompDATA: $(bashcomp_DATA) + @$(NORMAL_INSTALL) + test -z "$(bashcompdir)" || $(MKDIR_P) "$(DESTDIR)$(bashcompdir)" + @list='$(bashcomp_DATA)'; test -n "$(bashcompdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(bashcompdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(bashcompdir)" || exit $$?; \ + done + +uninstall-bashcompDATA: + @$(NORMAL_UNINSTALL) + @list='$(bashcomp_DATA)'; test -n "$(bashcompdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + test -n "$$files" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bashcompdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bashcompdir)" && rm -f $$files + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bashcompdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-bashcompDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-bashcompDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ + install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic ctags \ + ctags-recursive distclean distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-bashcompDATA install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-bashcompDATA + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/completions/_mock b/completions/_mock new file mode 100644 index 00000000..fa312711 --- /dev/null +++ b/completions/_mock @@ -0,0 +1,85 @@ +# Use of this file is deprecated. Upstream completion is available in +# mock > 1.1.0, use that instead. + +# bash completion for mock + +have mock && +_mock() +{ + local cur prev plugins cfgdir split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + plugins='tmpfs root_cache yum_cache bind_mount ccache' + cfgdir=/etc/mock + + count=0 + for i in "${COMP_WORDS[@]}" ; do + [ $count -eq $COMP_CWORD ] && break + if [[ "$i" == --configdir ]] ; then + cfgdir="${COMP_WORDS[((count+1))]}" + elif [[ "$i" == --configdir=* ]] ; then + cfgdir=${i/*=/} + fi + count=$((++count)) + done + + _split_longopt && split=true + + case $prev in + -h|--help|--copyin|--copyout|--arch|-D|--define|--with|--without|\ + --uniqueext|--rpmbuild_timeout|--sources|--cwd) + return 0 + ;; + -r|--root) + COMPREPLY=( $( compgen -W "$( command ls $cfgdir )" -- $cur ) ) + COMPREPLY=( ${COMPREPLY[@]/%.cfg/} ) + return 0 + ;; + --configdir|--resultdir) + _filedir -d + return 0 + ;; + --spec) + _filedir spec + return 0 + ;; + --target) + # Yep, compatible archs, not compatible build archs + # (e.g. ix86 chroot builds in x86_64 mock host) + # This would actually depend on what the target root + # can be used to build for... + COMPREPLY=( $( compgen -W "$( command rpm --showrc | \ + sed -ne 's/^\s*compatible\s\s*archs\s*:\s*\(.*\)/\1/i p' )" \ + -- "$cur" ) ) + return 0 + ;; + --enable-plugin|--disable-plugin) + COMPREPLY=( $( compgen -W "$plugins" -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '--version --help --rebuild --buildsrpm + --shell --chroot --clean --init --installdeps --install --update + --orphanskill --copyin --copyout --root --offline --no-clean + --cleanup-after --no-cleanup-after --arch --target --define --with + --without --resultdir --uniqueext --configdir --rpmbuild_timeout + --unpriv --cwd --spec --sources --verbose --quiet --trace + --enable-plugin --disable-plugin --print-root-path' -- "$cur" ) ) + else + _filedir '@(?(no)src.r|s)pm' + fi +} && +complete -F _mock mock + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/_modules b/completions/_modules new file mode 100644 index 00000000..f1ad88d8 --- /dev/null +++ b/completions/_modules @@ -0,0 +1,92 @@ +# Use of this file is deprecated, upstream completion is available in +# modules >= 3.2.7, use that instead. +# +# module completion by Ted Stern <stern@cray.com> +# +# Completion for Environment Modules `module' alias. +# +# See http://sourceforge.net/projects/modules/ +# http://modules.sourceforge.net/ +# +# There are several versions of modules that are commonly used. Older +# Cray UNICOS systems and many other sites use 2.2.2b. The latest GPL'd +# version is 3.1.6. But the module alias is somewhat self-documenting +# via the `module help' command, so use that to print the options. +# +# Programmable completion might be more difficult under tcsh since the +# module command is an alias, and the `module avail' command returns +# its output as stderr. + +# Test for existence of /etc/profile.d/modules.sh too because we may end up +# being sourced before it and thus before the `module' alias has been defined. +have module || [ -f /etc/profile.d/modules.sh ] && { + +_module_list () +{ + local modules="$( sed 's/:/ /g' <<<$LOADEDMODULES | sort )" + compgen -W "$modules" -- $1 +} + +_module_path () +{ + local modules="$( sed 's/:/ /g' <<<$MODULEPATH | sort )" + compgen -W "$modules" -- $1 +} + +_module_avail () +{ + local modules="$( \ + module avail 2>&1 | \ + command grep -E -v '^(-|$)' | \ + xargs printf '%s\n' | sed -e 's/(default)//g' | sort )" + + compgen -W "$modules" -- $1 +} + +# A completion function for the module alias +_module () +{ + local cur prev options + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ $COMP_CWORD -eq 1 ] ; then + # First parameter on line -- we expect it to be a mode selection + + options="$( module help 2>&1 | command grep -E '^[[:space:]]*\+' | \ + awk '{print $2}' | sed -e 's/|/ /g' | sort )" + + COMPREPLY=( $(compgen -W "$options" -- "$cur") ) + + elif [ $COMP_CWORD -eq 2 ] ; then + case $prev in + add|display|help|load|show|whatis) + COMPREPLY=( $(_module_avail "$cur") ) + ;; + rm|switch|swap|unload|update) + COMPREPLY=( $(_module_list "$cur") ) + ;; + unuse) + COMPREPLY=( $(_module_path "$cur") ) + ;; + esac + elif [ $COMP_CWORD -eq 3 ] ; then + case ${COMP_WORDS[1]} in + swap|switch) + COMPREPLY=( $(_module_avail "$cur") ) + ;; + esac + fi + return 0 +} +complete -F _module -o default module +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/_subversion b/completions/_subversion new file mode 100644 index 00000000..91523d89 --- /dev/null +++ b/completions/_subversion @@ -0,0 +1,360 @@ +# Use of this file is deprecated. Upstream completion is available in +# subversion >= 0.12.0, use that instead. + +# svn completion + +have svn && +{ +_svn() +{ + local cur prev commands options command + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + commands='add blame praise annotate ann cat checkout co cleanup commit \ + ci copy cp delete del remove rm diff di export help ? h import \ + info list ls lock log merge mkdir move mv rename ren \ + propdel pdel pd propedit pedit pe propget pget pg \ + proplist plist pl propset pset ps resolved revert \ + status stat st switch sw unlock update up' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + + case $prev in + --config-dir) + _filedir -d + return 0 + ;; + -F|--file|--targets) + _filedir + return 0 + ;; + --encoding) + COMPREPLY=( $( compgen -W '$( iconv --list | \ + sed -e "s@//@@;" )' -- "$cur" ) ) + return 0 + ;; + --editor-cmd|--diff-cmd|--diff3-cmd) + COMP_WORDS=(COMP_WORDS[0] $cur) + COMP_CWORD=1 + _command + return 0 + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + add) + options='--auto-props --no-auto-props --force --targets + --no-ignore --non-recursive -N -q --quiet' + ;; + blame|annotate|ann|praise) + options='-r --revisions --username --password + --no-auth-cache --non-interactive -v --verbose + --incremental --xml' + ;; + cat) + options='-r --revision --username --password + --no-auth-cache --non-interactive' + ;; + checkout|co) + options='-r --revision -q --quiet -N --non-recursive + --username --password --no-auth-cache + --non-interactive --ignore-externals' + ;; + cleanup) + options='--diff3-cmd' + ;; + commit|ci) + options='-m --message -F --file --encoding --force-log -q + --quiet --non-recursive -N --targets --editor-cmd + --username --password --no-auth-cache + --non-interactive --no-unlock' + ;; + copy|cp) + options='-m --message -F --file --encoding --force-log -r + --revision -q --quiet --editor-cmd -username + --password --no-auth-cache --non-interactive' + ;; + delete|del|remove|rm) + options='--force -m --message -F --file --encoding + --force-log -q --quiet --targets --editor-cmd + --username --password --no-auth-cache + --non-interactive' + ;; + diff|di) + options='-r --revision -x --extensions --diff-cmd + --no-diff-deleted -N --non-recursive --username + --password --no-auth-cache --non-interactive + --force --old --new --notice-ancestry' + ;; + export) + options='-r --revision -q --quiet --username --password + --no-auth-cache --non-interactive -N + --non-recursive --force --native-eol + --ignore-externals' + ;; + import) + options='--auto-props --no-auto-props -m --message -F + --file --encoding --force-log -q --quiet + --non-recursive --no-ignore --editor-cmd + --username --password --no-auth-cache + --non-interactive' + ;; + info) + options='--username --password --no-auth-cache + --non-interactive -r --revision --xml --targets + -R --recursive --incremental' + ;; + list|ls) + options='-r --revision -v --verbose -R --recursive + --username --password --no-auth-cache + --non-interactive --incremental --xml' + ;; + lock) + options='-m --message -F --file --encoding --force-log + --targets --force --username --password + --no-auth-cache --non-interactive' + ;; + log) + options='-r --revision -v --verbose --targets --username + --password --no-auth-cache --non-interactive + --stop-on-copy --incremental --xml -q --quiet + --limit' + ;; + merge) + options='-r --revision -N --non-recursive -q --quiet + --force --dry-run --diff3-cmd --username + --password --no-auth-cache --non-interactive + --ignore-ancestry' + ;; + mkdir) + options='-m --message -F --file --encoding --force-log -q + --quiet --editor-cmd --username --password + --no-auth-cache --non-interactive' + ;; + move|mv|rename|ren) + options='-m --message -F --file --encoding --force-log -r + --revision -q --quiet --force --editor-cmd + --username --password --no-auth-cache + --non-interactive' + ;; + propdel|pdel|pd) + options='-q --quiet -R --recursive -r --revision --revprop + --username --password --no-auth-cache + --non-interactive' + ;; + propedit|pedit|pe) + options='-r --revision --revprop --encoding --editor-cmd + --username --password --no-auth-cache + --non-interactive --force' + ;; + propget|pget|pg) + options='-R --recursive -r --revision --revprop --strict + --username --password --no-auth-cache + --non-interactive' + ;; + proplist|plist|pl) + options='-v --verbose -R --recursive -r --revision + --revprop -q --quiet --username --password + --no-auth-cache --non-interactive' + ;; + propset|pset|ps) + options='-F --file -q --quiet --targets -R --recursive + --revprop --encoding --username --password + --no-auth-cache --non-interactive -r --revision + --force' + ;; + resolved) + options='--targets -R --recursive -q --quiet' + ;; + revert) + options='--targets -R --recursive -q --quiet' + ;; + status|stat|st) + options='-u --show-updates -v --verbose -N --non-recursive + -q --quiet --username --password --no-auth-cache + --non-interactive --no-ignore --ignore-externals + --incremental --xml' + ;; + switch|sw) + options='--relocate -r --revision -N --non-recursive -q + --quiet --username --password --no-auth-cache + --non-interactive --diff3-cmd' + ;; + unlock) + options='--targets --force --username --password + --no-auth-cache --non-interactive' + ;; + update|up) + options='-r --revision -N --non-recursive -q --quiet + --username --password --no-auth-cache + --non-interactive --diff3-cmd --ignore-externals' + ;; + esac + options="$options --help -h --config-dir" + + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svn svn + +_svnadmin() +{ + local cur prev commands options mode + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + commands='create deltify dump help ? hotcopy list-dblogs list-unused-dblogs + load lslocks lstxns recover rmlocks rmtxns setlog verify' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + case $prev in + --config-dir) + _filedir -d + return 0 + ;; + --fs-type) + COMPREPLY=( $( compgen -W 'fsfs bdb' -- $cur ) ) + return 0 + ;; + esac + + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + create) + options='--bdb-txn-nosync --bdb-log-keep --config-dir + --fs-type' + ;; + deltify) + options='-r --revision -q --quiet' + ;; + dump) + options='-r --revision --incremental -q --quiet --deltas' + ;; + hotcopy) + options='--clean-logs' + ;; + load) + options='--ignore-uuid --force-uuid --parent-dir -q --quiet + --use-pre-commit-hook --use-post-commit-hook' + ;; + rmtxns) + options='-q --quiet' + ;; + setlog) + options='-r --revision --bypass-hooks' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnadmin -o default svnadmin + +_svnlook() +{ + local cur prev commands options mode + + COMPREPLY=() + _get_comp_words_by_ref cur + + commands='author cat changed date diff dirs-changed help ? h history info + lock log propget pget pg proplist plist pl tree uuid youngest' + + if [[ $COMP_CWORD -eq 1 ]] ; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + fi + else + command=${COMP_WORDS[1]} + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + author|cat|date|dirs-changed|info|log) + options='-r --revision -t --transaction' + ;; + changed) + options='-r --revision -t --transaction --copy-info' + ;; + diff) + options='-r --revision -t --transaction --no-diff-deleted + --no-diff-added --diff-copy-from' + ;; + history) + options='-r --revision --show-ids' + ;; + propget|proplist) + options='-r --revision -t --transaction --revprop' + ;; + tree) + options='-r --revision -t --transaction --show-ids + --full-paths' + ;; + esac + + options="$options --help -h" + COMPREPLY=( $( compgen -W "$options" -- $cur ) ) + else + if [[ "$command" == @(help|h|\?) ]]; then + COMPREPLY=( $( compgen -W "$commands" -- $cur ) ) + else + _filedir + fi + fi + fi + + return 0 +} +complete -F _svnlook -o default svnlook +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/_yum b/completions/_yum new file mode 100644 index 00000000..9d3cbb68 --- /dev/null +++ b/completions/_yum @@ -0,0 +1,157 @@ +# Use of this file is deprecated. Upstream completion is available in +# yum > 3.2.25, use that instead. + +# yum(8) completion + +have yum && { +_yum_list() +{ + if [[ "$1" == all ]] ; then + # Try to strip in between headings like "Available Packages" + # This will obviously only work for English :P + COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ + sed -ne '/^Available /d' -e '/^Installed /d' -e '/^Updated /d' \ + -e 's/[[:space:]].*//p' ) ) + else + # Drop first line (e.g. "Updated Packages") + COMPREPLY=( $( yum -d 0 -C list $1 "$cur*" 2>/dev/null | \ + sed -ne 1d -e 's/[[:space:]].*//p' ) ) + fi +} + +_yum_repolist() +{ + # -d 0 causes repolist to output nothing as of yum 3.2.22: + # http://yum.baseurl.org/ticket/83 + # Drop first ("repo id repo name") and last ("repolist: ...") rows + yum --noplugins -C repolist $1 2>/dev/null | \ + sed -ne '/^repo\s\s*id/d' -e '/^repolist:/d' -e 's/[[:space:]].*//p' +} + +_yum_plugins() +{ + command ls /usr/lib/yum-plugins/*.py{,c,o} 2>/dev/null \ + | sed -ne 's|.*/\([^./]*\)\.py[co]\{0,1\}$|\1|p' | sort -u +} + +_yum() +{ + local cur prev special i split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|update|upgrade|remove|erase|deplist|info) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + # TODO: install|update|upgrade should not match *src.rpm + if [[ "$cur" == */* && "$special" == @(deplist|install|update|upgrade) ]]; then + _filedir rpm + return 0 + fi + case $special in + install) + _yum_list available + return 0 + ;; + deplist|info) + _yum_list all + return 0 + ;; + upgrade|update) + _yum_list updates + return 0 + ;; + remove|erase) + # _rpm_installed_packages is not arch-qualified + _yum_list installed + return 0 + ;; + esac + fi + + _split_longopt && split=true + + case $prev in + list) + COMPREPLY=( $( compgen -W 'all available updates \ + installed extras obsoletes recent' -- $cur ) ) + ;; + clean) + COMPREPLY=( $( compgen -W 'packages headers metadata \ + cache dbcache all' -- $cur ) ) + ;; + repolist) + COMPREPLY=( $( compgen -W 'all enabled disabled' -- $cur ) ) + ;; + localinstall|localupdate) + # TODO: should not match *src.rpm + _filedir rpm + ;; + -d|-e) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- $cur ) ) + ;; + -c) + _filedir + ;; + --installroot) + _filedir -d + ;; + --enablerepo) + COMPREPLY=( $( compgen -W '$( _yum_repolist disabled )' -- $cur ) ) + ;; + --disablerepo) + COMPREPLY=( $( compgen -W '$( _yum_repolist enabled )' -- $cur ) ) + ;; + --disableexcludes) + COMPREPLY=( $( compgen -W '$( _yum_repolist all ) all main' \ + -- $cur ) ) + ;; + --enableplugin|--disableplugin) + COMPREPLY=( $( compgen -W '$( _yum_plugins )' -- $cur )) + ;; + --color) + COMPREPLY=( $( compgen -W 'always auto never' -- $cur )) + ;; + -R|-x|--exclude) + # argument required but no completions available + return 0 + ;; + -h|--help|--version) + # no other options useful with these + return 0 + ;; + *) + COMPREPLY=( $( compgen -W 'install update check-update upgrade \ + remove erase list info provides whatprovides clean makecache \ + groupinstall groupupdate grouplist groupremove groupinfo \ + search shell resolvedep localinstall localupdate deplist \ + repolist help' -- $cur ) ) + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --tolerant -C -c -R -d \ + --showduplicates -e --quiet --verbose -y --version --installroot \ + --enablerepo --disablerepo --exclude --disableexcludes --obsoletes \ + --noplugins --nogpgcheck --disableplugin --enableplugin \ + --skip-broken --color' -- $cur ) ) + return 0 + fi +} +} && +complete -F _yum yum + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/_yum-utils b/completions/_yum-utils new file mode 100644 index 00000000..b7f6d264 --- /dev/null +++ b/completions/_yum-utils @@ -0,0 +1,31 @@ +# Use of this file is deprecated. Upstream completion is available in +# yum-utils >= 1.1.24, use that instead. + +# bash completion for repomanage + +have repomanage && +_repomanage() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + [[ "$prev" == -@(h|-help|k|-keep) ]] && return 0 + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '--old --new --space \ + --keep --nocheck --help' -- "$cur" ) ) + else + _filedir -d + fi +} && +complete -F _repomanage repomanage + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/abook b/completions/abook new file mode 100644 index 00000000..f09c8b50 --- /dev/null +++ b/completions/abook @@ -0,0 +1,62 @@ +# abook(1) completion + +have abook && +_abook() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + # abook only takes options, tabbing after command name adds a single + # dash (bash4) + [[ ${BASH_VERSINFO[0]} -ge 4 && $COMP_CWORD -eq 1 && -z "$cur" ]] && + { + compopt -o nospace + COMPREPLY=( "-" ) + return 0 + } + + case $cur in + -*) + _longopt abook + return 0 + ;; + esac + + case $prev in + --informat) + COMPREPLY=( $( compgen -W "$(abook --formats | \ + sed -n -e 's/^\t\([a-z]*\).*/\1/p' -e '/^$/q')" -- "$cur" ) ) + return 0 + ;; + --outformat) + COMPREPLY=( $( compgen -W "$(abook --formats | \ + sed -n -e '/^$/,$s/^\t\([a-z]*\).*/\1/p')" -- "$cur" ) ) + return 0 + ;; + --infile) + COMPREPLY=( $( compgen -W stdin -- "$cur" ) ) + _filedir + return 0 + ;; + --outfile) + COMPREPLY=( $( compgen -W stdout -- "$cur" ) ) + _filedir + return 0 + ;; + --config|--datafile) + _filedir + return 0 + ;; + esac +} && +complete -F _abook abook + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ant b/completions/ant new file mode 100644 index 00000000..132c4390 --- /dev/null +++ b/completions/ant @@ -0,0 +1,70 @@ +# bash completion for ant + +have ant && +{ +_ant() +{ + local cur prev buildfile i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -buildfile|-file|-f) + _filedir 'xml' + return 0 + ;; + -logfile|-l) + _filedir + return 0 + ;; + -propertyfile) + _filedir properties + return 0 + ;; + -nice) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" ) ) + return 0 + ;; + -lib|-logger|-listener|-D|-inputhandler|-main) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-help -projecthelp -version -diagnostics \ + -quiet -verbose -debug -emacs -lib -logfile -logger -listener \ + -noinput -buildfile -D -keep-going -propertyfile -inputhandler \ + -find -s -nice -nouserlib -noclasspath -autoproxy -main' \ + -- "$cur" ) ) + else + # available targets completion + # find which buildfile to use + buildfile=build.xml + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(?(build)file|f) ]]; then + buildfile=${COMP_WORDS[i+1]} + break + fi + done + [ ! -f $buildfile ] && return 0 + + # parse buildfile for targets + # some versions of sed complain if there's no trailing linefeed, + # hence the 2>/dev/null + COMPREPLY=( $( compgen -W "$( cat $buildfile | tr "'\t\n>" "\" \n" | \ + sed -ne 's/.*<target .*name="\([^"]*\).*/\1/p' 2>/dev/null )" \ + -- "$cur" ) ) + fi +} +have complete-ant-cmd.pl && \ + complete -C complete-ant-cmd.pl -F _ant ant || complete -F _ant ant +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/apache2ctl b/completions/apache2ctl new file mode 100644 index 00000000..287443a2 --- /dev/null +++ b/completions/apache2ctl @@ -0,0 +1,24 @@ +# apache2ctl(1) completion + +have apache2ctl && { +_apache2ctl() { + local APWORDS cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + APWORDS=$(apache2ctl 2>&1 >/dev/null | awk 'NR<2 { print $3; exit }' | \ + tr "|" " ") + + COMPREPLY=( $( compgen -W "$APWORDS" -- "$cur" ) ) +} +complete -F _apache2ctl apache2ctl +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/apt b/completions/apt new file mode 100644 index 00000000..84811ae8 --- /dev/null +++ b/completions/apt @@ -0,0 +1,157 @@ +# Debian apt-get(8) completion. + +have apt-get && +_apt_get() +{ + local cur prev special i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|remove|autoremove|purge|source|build-dep) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + case $special in + remove|autoremove|purge) + if [ -f /etc/debian_version ]; then + # Debian system + COMPREPLY=( $( _comp_dpkg_installed_packages $cur ) ) + else + # assume RPM based + _rpm_installed_packages + fi + return 0 + ;; + source) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \ + 2> /dev/null ) $( apt-cache dumpavail | \ + command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) ) + return 0 + ;; + *) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" \ + 2> /dev/null ) ) + return 0 + ;; + esac + fi + + case $prev in + -c|--config-file) + _filedir + return 0 + ;; + -t|--target-release|--default-release) + COMPREPLY=( $( apt-cache policy | \ + command grep "release.o=Debian,a=$cur" | \ + sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -f -h -v -m -q -s -y -u -t -b -c -o \ + --download-only --fix-broken --help --version --ignore-missing \ + --fix-missing --no-download --quiet --simulate --just-print \ + --dry-run --recon --no-act --yes --assume-yes --show-upgraded \ + --only-source --compile --build --ignore-hold --target-release \ + --no-upgrade --force-yes --print-uris --purge --reinstall \ + --list-cleanup --default-release --trivial-only --no-remove \ + --diff-only --no-install-recommends --tar-only --config-file \ + --option --auto-remove' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'update upgrade dselect-upgrade \ + dist-upgrade install remove purge source build-dep \ + check clean autoclean autoremove' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _apt_get apt-get + +# Debian apt-cache(8) completion. +# +have apt-cache && +_apt_cache() +{ + local cur prev special i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ "$cur" != show ]; then + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(add|depends|dotty|madison|policy|rdepends|show?(pkg|src|)) ]]; then + special=${COMP_WORDS[i]} + fi + done + fi + + + if [ -n "$special" ]; then + case $special in + add) + _filedir + return 0 + ;; + + showsrc) + COMPREPLY=( $( apt-cache dumpavail | \ + command grep "^Source: $cur" | sort -u | cut -f2 -d" " ) ) + return 0 + ;; + + *) + COMPREPLY=( $( apt-cache --no-generate pkgnames "$cur" 2> /dev/null ) ) + return 0 + ;; + + esac + fi + + + case $prev in + -c|-p|-s|--config-file|--pkg-cache|--src-cache) + _filedir + return 0 + ;; + search) + if [[ "$cur" != -* ]]; then + return 0 + fi + ;; + esac + + if [[ "$cur" == -* ]]; then + + COMPREPLY=( $( compgen -W '-h -v -p -s -q -i -f -a -g -c \ + -o --help --version --pkg-cache --src-cache \ + --quiet --important --full --all-versions \ + --no-all-versions --generate --no-generate \ + --names-only --all-names --recurse \ + --config-file --option --installed' -- "$cur" ) ) + else + + COMPREPLY=( $( compgen -W 'add gencaches show showpkg showsrc \ + stats dump dumpavail unmet search search \ + depends rdepends pkgnames dotty xvcg \ + policy madison' -- "$cur" ) ) + + fi + + + return 0 +} && +complete -F _apt_cache apt-cache + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/apt-build b/completions/apt-build new file mode 100644 index 00000000..d875a986 --- /dev/null +++ b/completions/apt-build @@ -0,0 +1,66 @@ +# Debian apt-build(1) completion. + +have apt-build && +_apt_build() +{ + local cur prev special i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(install|remove|source|info|clean) ]]; then + special=${COMP_WORDS[i]} + fi + done + + if [ -n "$special" ]; then + case $special in + install|source|info) + COMPREPLY=( $( apt-cache pkgnames "$cur" 2> /dev/null ) ) + return 0 + ;; + remove) + COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) + return 0 + ;; + *) + return 0 + ;; + esac + fi + + case $prev in + --patch|--build-dir|--repository-dir) + _filedir + return 0 + ;; + -h|--help) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --show-upgraded -u --build-dir \ + --repository-dir --build-only --build-command --reinstall \ + --rebuild --remove-builddep --no-wrapper --purge --patch \ + --patch-strip -p --yes -y --version -v --no-source' -- "$cur" ) ) + + else + COMPREPLY=( $( compgen -W 'update upgrade install remove source \ + dist-upgrade world clean info clean-build update-repository' \ + -- "$cur" ) ) + fi + + + return 0 +} && +complete -F _apt_build apt-build + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/aptitude b/completions/aptitude new file mode 100644 index 00000000..c00ad40e --- /dev/null +++ b/completions/aptitude @@ -0,0 +1,98 @@ +# Debian aptitude(1) completion + +have aptitude && { +have grep-status && { +_comp_dpkg_hold_packages() +{ + grep-status -P -e "^$1" -a -FStatus 'hold' -n -s Package +} +} || { +_comp_dpkg_hold_packages() +{ + command grep -B 2 'hold' /var/lib/dpkg/status | \ + command grep "Package: $1" | cut -d\ -f2 +} +} + +_aptitude() +{ + local cur dashoptions prev special i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + dashoptions='-S -u -i -h --help --version -s --simulate -d \ + --download-only -P --prompt -y --assume-yes -F \ + --display-format -O --sort -w --width -f -r -g \ + --with-recommends -R -G --without-recommends -t \ + --target-release -V --show-versions -D --show-deps\ + -Z -v --verbose --purge-unused --schedule-only' + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(@(|re)install|@(|un)hold|@(|un)markauto|@(dist|full)-upgrade|download|show|forbid-version|purge|remove|changelog|why@(|-not)|keep@(|-all)|build-dep|@(add|remove)-user-tag) ]]; then + special=${COMP_WORDS[i]} + fi + #exclude some mutually exclusive options + [[ ${COMP_WORDS[i]} == '-u' ]] && dashoptions=${dashoptions/-i} + [[ ${COMP_WORDS[i]} == '-i' ]] && dashoptions=${dashoptions/-u} + done + + if [[ -n "$special" ]]; then + case $special in + install|hold|markauto|unmarkauto|dist-upgrade|full-upgrade| \ + download|show|changelog|why|why-not|build-dep|add-user-tag| \ + remove-user-tag) + COMPREPLY=( $( apt-cache pkgnames $cur 2> /dev/null ) ) + return 0 + ;; + purge|remove|reinstall|forbid-version) + COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) + return 0 + ;; + unhold) + COMPREPLY=( $( _comp_dpkg_hold_packages "$cur" ) ) + return 0 + ;; + esac + fi + + case $prev in + # don't complete anything if these options are found + autoclean|clean|forget-new|search|safe-upgrade|upgrade|update|keep-all) + return 0 + ;; + -S) + _filedir + return 0 + ;; + -t|--target-release|--default-release) + COMPREPLY=( $( apt-cache policy | \ + command grep "release.o=Debian,a=$cur" | \ + sed -e "s/.*a=\(\w*\).*/\1/" | uniq 2> /dev/null ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$dashoptions" -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'update upgrade safe-upgrade forget-new \ + clean autoclean install reinstall remove \ + hold unhold purge markauto unmarkauto why why-not \ + dist-upgrade full-upgrade download search show \ + forbid-version changelog keep-all build-dep \ + add-user-tag remove-user-tag' -- "$cur" ) ) + fi + + return 0 +} +complete -F _aptitude -o default aptitude +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/aspell b/completions/aspell new file mode 100644 index 00000000..5254eee7 --- /dev/null +++ b/completions/aspell @@ -0,0 +1,96 @@ +# bash completion for aspell + +have aspell && { +_aspell_dictionary() +{ + local datadir + datadir=$( aspell config data-dir 2>/dev/null || echo /usr/lib/aspell ) + # First, get aliases (dicts dump does not list them) + COMPREPLY=( $( command ls $datadir/*.alias 2>/dev/null ) ) + COMPREPLY=( ${COMPREPLY[@]%.alias} ) + COMPREPLY=( ${COMPREPLY[@]#$datadir/} ) + # Then, add the canonical dicts + COMPREPLY=( "${COMPREPLY[@]}" $( aspell dicts 2>/dev/null ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) +} + +_aspell() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -c|-p|check|--conf|--personal|--repl|--per-conf) + _filedir + return 0 + ;; + --conf-dir|--data-dir|--dict-dir|--home-dir|--local-data-dir|--prefix) + _filedir -d + return 0 + ;; + dump|create|merge) + COMPREPLY=( $( compgen -W 'master personal repl' -- "$cur" ) ) + return 0 + ;; + --mode) + COMPREPLY=( $( compgen -W 'none url email sgml tex' -- "$cur" ) ) + return 0 + ;; + --sug-mode) + COMPREPLY=( $( compgen -W 'ultra fast normal bad-speller' -- "$cur" ) ) + return 0 + ;; + --keymapping) + COMPREPLY=( $( compgen -W 'aspell ispell' -- "$cur" ) ) + return 0 + ;; + -d|--master) + _aspell_dictionary + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--conf --conf-dir --data-dir --dict-dir \ + --encoding --add-filter --rem-filter --mode \ + --add-extra-dicts --rem-extra-dicts \ + --home-dir --ignore --ignore-accents \ + --dont-ignore-accents --ignore-case --dont-ignore-case \ + --ignore-repl --dont-ignore-repl --jargon --keyboard \ + --lang --language-tag --local-data-dir --master \ + --module --add-module-search-order \ + --rem-module-search-order --per-conf --personal \ + --prefix --repl --run-together --dont-run-together \ + --run-together-limit --run-together-min --save-repl \ + --dont-save-repl --set-prefix --dont-set-prefix --size \ + --spelling --strip-accents --dont-strip-accents \ + --sug-mode --add-word-list-path --rem-word-list-path \ + --backup --dont-backup --reverse --dont-reverse \ + --time --dont-time --keymapping --add-email-quote \ + --rem-email-quote --email-margin --add-tex-command \ + --rem-tex-command --tex-check-comments \ + --dont-tex-check-comments --add-tex-extension \ + --rem-tex-extension --add-sgml-check --rem-sgml-check \ + --add-sgml-extension --rem-sgml-extension' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'usage help check pipe list \ + config soundslike filter version dump create merge' -- "$cur" ) ) + fi + +} +complete -F _aspell aspell +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/autoconf b/completions/autoconf new file mode 100644 index 00000000..c8f1b195 --- /dev/null +++ b/completions/autoconf @@ -0,0 +1,124 @@ +# Completions for autoconf tools + +have autoconf && +_autoconf() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|-h|--version|-V|--trace|-t) + return 0 + ;; + --output|-o) + _filedir + return 0 + ;; + --warnings|-W) + local cats=( cross obsolete syntax ) + COMPREPLY=( $( compgen -W \ + '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) ) + return 0 + ;; + --prepend-include|-B|--include|-I) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + _longopt $1 + return + fi + + _filedir '@(ac|in)' +} && +complete -F _autoconf autoconf + +have autoreconf || have autoheader && +_autoreconf() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|-h|--version|-V) + return 0 + ;; + --warnings|-W) + local cats=( cross gnu obsolete override portability syntax \ + unsupported ) + COMPREPLY=( $( compgen -W \ + '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) ) + return 0 + ;; + --prepend-include|-B|--include|-I) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + _longopt $1 + return 0 + fi + + if [[ $1 == autoheader ]] ; then + _filedir '@(ac|in)' + else + _filedir -d + fi +} && +complete -F _autoreconf autoreconf autoheader + +have autoscan || have autoupdate && +_autoscan() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|-h|--version|-V) + return 0 + ;; + --prepend-include|-B|--include|-I) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + _longopt $1 + return 0 + fi + + if [[ $1 == autoupdate ]] ; then + _filedir '@(ac|in)' + else + _filedir -d + fi +} && +complete -F _autoscan autoscan autoupdate + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/automake b/completions/automake new file mode 100644 index 00000000..7ed87453 --- /dev/null +++ b/completions/automake @@ -0,0 +1,80 @@ +# Completions for automake tools + +have automake && +_automake() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|--version) + return 0 + ;; + --warnings|-W) + local cats=( gnu obsolete override portability syntax unsupported ) + COMPREPLY=( $( compgen -W \ + '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) ) + return 0 + ;; + --libdir) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + _longopt $1 + return + fi + + _filedir +} && +complete -F _automake automake automake-1.11 + +have aclocal && +_aclocal() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|--print-ac-dir|--version) + return 0 + ;; + --acdir|-I) + _filedir -d + return 0 + ;; + --output) + _filedir + return 0 + ;; + --warnings|-W) + local cats=( syntax unsupported ) + COMPREPLY=( $( compgen -W \ + '${cats[@]} ${cats[@]/#/no-} all none error' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + _longopt $1 +} && +complete -F _aclocal aclocal aclocal-1.11 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/autorpm b/completions/autorpm new file mode 100644 index 00000000..6a5f7620 --- /dev/null +++ b/completions/autorpm @@ -0,0 +1,23 @@ +# autorpm(8) completion + +have autorpm && +_autorpm() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -W '--notty --debug --help --version auto add \ + fullinfo info help install list remove set' -- "$cur" ) ) + +} && +complete -F _autorpm autorpm + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bash-builtins b/completions/bash-builtins new file mode 100644 index 00000000..3eba8a11 --- /dev/null +++ b/completions/bash-builtins @@ -0,0 +1,128 @@ +# bash alias completion +# +_alias() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + case $COMP_LINE in + *[^=]) + COMPREPLY=( $( compgen -A alias -- "$cur" ) ) + ;; + *=) + COMPREPLY=( "$( alias ${cur%=} 2>/dev/null | sed \ + -e 's|^alias '"$cur"'\(.*\)$|\1|' )" ) + ;; + esac +} +complete -F _alias -o nospace alias + +# bash export completion +# +_export() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + case $COMP_LINE in + *=\$*) + COMPREPLY=( $( compgen -v -P '$' -- "${cur#*=\$}" ) ) + ;; + *[^=]) + COMPREPLY=( $( compgen -v -S '=' -- "$cur" ) ) + ;; + *=) + COMPREPLY=( "$( eval echo -n \"$`echo ${cur%=}`\" | + ( echo -n \' + sed -e 's/'\''/'\''\\\'\'''\''/g' + echo -n \' ) )" ) + ;; + esac +} +complete -F _export -o default -o nospace export + +# bash shell function completion +# +_function() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [[ $1 == @(declare|typeset) ]]; then + if [ "$prev" = -f ]; then + COMPREPLY=( $( compgen -A function -- "$cur" ) ) + elif [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -f -F -i -r -x -p' -- "$cur" ) ) + fi + elif [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -A function -- "$cur" ) ) + else + COMPREPLY=( "() $( type -- ${COMP_WORDS[1]} | sed -e 1,2d )" ) + fi +} +complete -F _function function declare typeset + +# bash complete completion +# +_complete() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o) + COMPREPLY=( $( compgen -W 'bashdefault default dirnames filenames \ + nospace plusdirs' -- "$cur" ) ) + return 0 + ;; + + -A) + COMPREPLY=( $( compgen -W 'alias arrayvar binding builtin command \ + directory disabled enabled export file function group \ + helptopic hostname job keyword running service setopt shopt \ + signal stopped user variable' -- "$cur" ) ) + return 0 + ;; + + -C) + COMPREPLY=( $( compgen -A command -- "$cur" ) ) + return 0 + ;; + -F) + COMPREPLY=( $( compgen -A function -- "$cur" ) ) + return 0 + ;; + -p|-r) + COMPREPLY=( $( complete -p | sed -e 's|.* ||' ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) + return 0 + ;; + + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + local opts="-a -b -c -d -e -f -g -j -k -o -s -u -v -A -G -W -P -S -X" + [[ $1 != compgen ]] && opts="$opts -F -C" + COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) ) + else + COMPREPLY=( $( compgen -A command -- "$cur" ) ) + fi +} +complete -F _complete compgen complete + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bind-utils b/completions/bind-utils new file mode 100644 index 00000000..040d1975 --- /dev/null +++ b/completions/bind-utils @@ -0,0 +1,23 @@ +# bash completion for nslookup + +have nslookup && +_nslookup() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -P '-' -W 'all class= debug d2 domain= srchlist= \ + defname search port= querytype= type= recurse retry root timeout vc \ + ignoretc' -- "$cur" ) ) +} && +complete -F _nslookup nslookup + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bitkeeper b/completions/bitkeeper new file mode 100644 index 00000000..4c312a14 --- /dev/null +++ b/completions/bitkeeper @@ -0,0 +1,26 @@ +# BitKeeper completion adapted from code by Bart Trojanowski <bart@jukie.net> + +have bk && +_bk() { + local BKCMDS + + COMPREPLY=() + _get_comp_words_by_ref cur + + BKCMDS="$( bk help topics | awk '/^ bk/ { print $4 }' | \ + xargs printf '%s ' )" + + COMPREPLY=( $( compgen -W "$BKCMDS" -- "$cur" ) ) + _filedir + + return 0 +} && +complete -F _bk bk + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bittorrent b/completions/bittorrent new file mode 100644 index 00000000..761d0836 --- /dev/null +++ b/completions/bittorrent @@ -0,0 +1,41 @@ +# btdownloadheadless(1) completion + +have btdownloadheadless.py || have btdownloadcurses.py || \ +have btdownloadgui.py && +_btdownload() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --responsefile|--saveas) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--max_uploads --keepalive_interval \ + --download_slice_size --request_backlog --max_message_length \ + --ip --minport --maxport --responsefile --url --saveas --timeout \ + --timeout_check_interval --max_slice_length --max_rate_period \ + --bind --upload_rate_fudge --display_interval --rerequest_interval \ + --min_peers --http_timeout --max_initiate --max_allow_in \ + --check_hashes --max_upload_rate --snub_time --spew \ + --rarest_first_cutoff --min_uploads --report_hash_failures' \ + -- "$cur" ) ) + else + _filedir + fi +} && +complete -F _btdownload btdownloadheadless.py btdownloadcurses.py btdownloadgui.py + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bluez b/completions/bluez new file mode 100644 index 00000000..7a2b1e57 --- /dev/null +++ b/completions/bluez @@ -0,0 +1,432 @@ +# bash completion for bluez utils + +have hcitool && { +_bluetooth_adresses() +{ + if [ -n "${COMP_BLUETOOTH_SCAN:-}" ]; then + COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool scan | \ + awk '/^\t/{print $1}' )" -- "$cur" ) ) + fi +} + +_bluetooth_devices() +{ + COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool dev | \ + awk '/^\t/{print $1}' )" -- "$cur" ) ) +} + +_bluetooth_services() +{ + COMPREPLY=( $( compgen -W 'DID SP DUN LAN FAX OPUSH FTP HS HF HFAG \ + SAP NAP GN PANU HCRP HID CIP A2SRC A2SNK AVRCT AVRTG UDIUE \ + UDITE SYNCML' -- "$cur" ) ) +} + +_bluetooth_packet_types() +{ + COMPREPLY=( $( compgen -W 'DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3' \ + -- "$cur" ) ) +} + +_hcitool() +{ + local cur prev split=false arg + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -i) + _bluetooth_devices + return 0; + ;; + --role) + COMPREPLY=( $( compgen -W 'm s' -- "$cur" ) ) + return 0; + ;; + --pkt-type) + _bluetooth_packet_types + return 0; + ;; + esac + + $split && return 0 + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help -i' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'dev inq scan name info \ + spinq epinq cmd con cc dc sr cpt rssi lq tpl \ + afh lst auth enc key clkoff clock' -- "$cur" ) ) + fi + else + case $arg in + name|info|dc|rssi|lq|afh|auth|key|clkoff|lst) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + fi + ;; + cc) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--role --pkt-type' -- "$cur" ) ) + else + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + fi + fi + ;; + sr) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + else + COMPREPLY=( $( compgen -W 'master slave' -- "$cur" ) ) + fi + ;; + cpt) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + else + _bluetooth_packet_types + fi + ;; + tpl|enc|clock) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + else + COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) ) + fi + ;; + esac + fi +} +complete -F _hcitool hcitool + +_sdptool() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + --bdaddr) + _bluetooth_adresses + return 0; + ;; + esac + + $split && return 0 + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'search browse records add \ + del get setattr setseq' -- "$cur" ) ) + fi + else + case $arg in + search) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--bdaddr \ + --tree --raw --xml' -- "$cur" ) ) + else + _bluetooth_services + fi + ;; + browse|records) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--tree --raw --xml' -- "$cur" ) ) + else + _bluetooth_adresses + fi + ;; + add) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--handle --channel' -- "$cur" ) ) + else + _bluetooth_services + fi + ;; + get) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--bdaddr \ + --tree --raw --xml' -- "$cur" ) ) + fi + ;; + esac + fi +} +complete -F _sdptool sdptool + +_l2ping() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _bluetooth_devices + return 0; + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -s -c -t -f -r' -- "$cur" ) ) + else + _bluetooth_adresses + fi + +} +complete -F _l2ping l2ping + +_rfcomm() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--config) + _filedir + return 0; + ;; + -i) + _bluetooth_devices + _bluetooth_adresses + return 0; + ;; + esac + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help -a --raw \ + --config -i --auth --encrypt --secure --master' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'show connect listen watch \ + bind release' -- "$cur" ) ) + fi + else + _count_args + if [ $args -eq 2 ]; then + _bluetooth_devices + else + case $arg in + connect|bind) + if [ $args -eq 3 ]; then + _bluetooth_adresses + fi + ;; + esac + fi + fi +} +complete -F _rfcomm rfcomm + +_ciptool() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _bluetooth_devices + _bluetooth_adresses + return 0; + ;; + esac + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help -i' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'show search connect release \ + loopback' -- "$cur" ) ) + fi + else + case $arg in + connect|release|loopback) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + fi + ;; + esac + fi +} +complete -F _ciptool ciptool + +_dfutool() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -d|--device) + _bluetooth_devices + return 0; + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --device' -- "$cur" ) ) + else + _count_args + case $args in + 1) + COMPREPLY=( $( compgen -W 'verify modify \ + upgrade archive' -- "$cur" ) ) + ;; + 2) + _filedir + ;; + esac + fi +} +complete -F _dfutool dfutool + +_hciconfig() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --all' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'up down reset rstat auth \ + noauth encrypt noencrypt secmgr nosecmgr \ + piscan noscan iscan pscan ptype name class \ + voice iac inqmode inqdata inqtype inqparams \ + pageparms pageto afhmode aclmtu scomtu putkey \ + delkey commands features version revision lm' \ + -- "$cur" ) ) + fi + else + case $arg in + putkey|delkey) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_adresses + fi + ;; + lm) + _count_args + if [ $args -eq 2 ]; then + COMPREPLY=( $( compgen -W 'MASTER \ + SLAVE NONE ACCEPT' -- "$cur" ) ) + fi + ;; + ptype) + _count_args + if [ $args -eq 2 ]; then + _bluetooth_packet_types + fi + ;; + esac + fi +} +complete -F _hciconfig hciconfig + +_hciattach() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -p -t -b -s -l' -- "$cur" ) ) + else + _count_args + case $args in + 1) + COMPREPLY=( $( printf '%s\n' /dev/tty* ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} \ + ${COMPREPLY[@]#/dev/}' -- "$cur" ) ) + ;; + 2) + COMPREPLY=( $( compgen -W 'any ericsson digi \ + xircom csr bboxes swave bcsp 0x0105 \ + 0x080a 0x0160 0x0002' -- "$cur" ) ) + ;; + 3) + COMPREPLY=( $( compgen -W '9600 19200 38400 \ + 57600 115200 230400 460800 921600' -- "$cur" ) ) + ;; + 4) + COMPREPLY=( $( compgen -W 'flow noflow' -- "$cur" ) ) + ;; + 5) + _bluetooth_adresses + ;; + esac + fi + +} +complete -F _hciattach hciattach + +_hid2hci() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --quiet -0 --tohci -1 \ + --tohid' -- "$cur" ) ) + fi +} +complete -F _hid2hci hid2hci + +_avctrl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --quiet' -- "$cur" ) ) + else + _count_args + if [ $args -eq 1 ]; then + COMPREPLY=( $( compgen -W 'discover switch' -- "$cur" ) ) + fi + fi +} +complete -F _avctrl avctrl +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/brctl b/completions/brctl new file mode 100644 index 00000000..1be86af1 --- /dev/null +++ b/completions/brctl @@ -0,0 +1,48 @@ +# bash completion for brctl + +have brctl && +_brctl() +{ + local cur command + + COMPREPLY=() + _get_comp_words_by_ref cur + command=${COMP_WORDS[1]} + + case $COMP_CWORD in + 1) + COMPREPLY=( $( compgen -W "addbr delbr addif delif \ + setageing setbridgeprio setfd sethello \ + setmaxage setpathcost setportprio show \ + showmacs showstp stp" -- "$cur" ) ) + ;; + 2) + case $command in + show) + ;; + *) + COMPREPLY=( $( compgen -W "$(brctl show | \ + awk 'NR>1 {print $1}' )" -- "$cur" ) ) + esac + ;; + 3) + case $command in + addif|delif) + _configured_interfaces + ;; + stp) + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + ;; + esac + ;; + esac +} && +complete -F _brctl -o default brctl + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/bzip2 b/completions/bzip2 new file mode 100644 index 00000000..7e2f9fd0 --- /dev/null +++ b/completions/bzip2 @@ -0,0 +1,51 @@ +# bash completion for bzip2 + +have bzip2 || have pbzip2 && +_bzip2() +{ + local cur prev xspec helpopts + + COMPREPLY=() + _get_comp_words_by_ref cur prev + helpopts=`_parse_help ${COMP_WORDS[0]}` + + case $prev in + -b|-h|--help|-p) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "${helpopts//#/} -2 -3 -4 -5 -6 -7 -8 -9" \ + -- "$cur" ) ) + return 0 + fi + + local IFS=$'\n' + + xspec="*.bz2" + if [[ "$prev" == --* ]]; then + [[ "$prev" == --decompress || \ + "$prev" == --list || \ + "$prev" == --test ]] && xspec="!"$xspec + [[ "$prev" == --compress ]] && xspec= + elif [[ "$prev" == -* ]]; then + [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec + [[ "$prev" == -*z* ]] && xspec= + fi + + _expand || return 0 + + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _bzip2 bzip2 pbzip2 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cardctl b/completions/cardctl new file mode 100644 index 00000000..1af7491b --- /dev/null +++ b/completions/cardctl @@ -0,0 +1,24 @@ +# Linux cardctl(8) completion + +have cardctl || have pccardctl && +_cardctl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'status config ident suspend \ + resume reset eject insert scheme' -- "$cur" ) ) + fi +} && +complete -F _cardctl cardctl pccardctl + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cfengine b/completions/cfengine new file mode 100644 index 00000000..50a13840 --- /dev/null +++ b/completions/cfengine @@ -0,0 +1,88 @@ +# bash completion for cfengine + +have cfagent && { +_cfagent_options() +{ + COMPREPLY=( $( compgen -W '--sysadm --force-net-copy --no-check-files \ + --no-check-mounts --debug --define --no-edits --enforce-links --file \ + --help --no-hard-classes --no-ifconfig --inform --no-copy --no-lock \ + --traverse-links --delete-stale-links --no-mount --no-modules \ + --dry-run --negate --parse-only --no-processes --no-splay \ + --no-commands --silent --no-tidy --use-env --underscore-classes \ + --verbose --version --no-preconf --no-links --quiet' -- "$cur" ) ) +} + +_cfagent() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--file) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + _cfagent_options + fi +} +complete -F _cfagent cfagent + +_cfrun() +{ + local i section cfinputs cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + section=1 + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -- ]]; then + section=$((section + 1)) + fi + done + + case $section in + 1) + case $prev in + -f) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-f -h -d -S -T -v' -- $cur ) ) + else + hostfile=${CFINPUTS:-/var/lib/cfengine/inputs}/cfrun.hosts + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -f ]]; then + hostfile=${COMP_WORDS[i+1]} + break + fi + done + [ ! -f $hostfile ] && return 0 + + COMPREPLY=( $(compgen -W "$( command grep -v \ + -E '(=|^$|^#)' $hostfile )" -- "$cur" ) ) + fi + ;; + 2) + _cfagent_options + ;; + esac +} +complete -F _cfrun cfrun +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/chkconfig b/completions/chkconfig new file mode 100644 index 00000000..2d02e56e --- /dev/null +++ b/completions/chkconfig @@ -0,0 +1,44 @@ +# chkconfig(8) completion + +have chkconfig && +_chkconfig() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + --level=[1-6]|[1-6]|--list|--add|--del|--override) + _services + return 0 + ;; + --level) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--list --add --del --override --level' -- "$cur" ) ) + else + if [[ $COMP_CWORD -eq 2 || $COMP_CWORD -eq 4 ]]; then + COMPREPLY=( $( compgen -W 'on off reset resetpriorities' -- "$cur" ) ) + else + _services + fi + fi +} && +complete -F _chkconfig chkconfig + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/chsh b/completions/chsh new file mode 100644 index 00000000..1af3630f --- /dev/null +++ b/completions/chsh @@ -0,0 +1,37 @@ +# chsh(1) completion + +_chsh() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --list-shells|--help|-v|--version) + return 0 + ;; + -s|--shell) + _shells + return 0 + ;; + esac + + if [[ "$cur" == -* && "$( uname -s )" == @(Linux|GNU|GNU/*) ]]; then + COMPREPLY=( $( compgen -W '--shell --list-shells --help --version' \ + -- "$cur" ) ) + else + COMPREPLY=( $( compgen -u -- "$cur" ) ) + fi + + return 0 +} +complete -F _chsh chsh + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cksfv b/completions/cksfv new file mode 100644 index 00000000..1f83824b --- /dev/null +++ b/completions/cksfv @@ -0,0 +1,38 @@ +# cksfv completion by Chris <xris@forevermore.net> + +have cksfv && +_cksfv() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W '-C -f -i -q -v' -- "$cur" ) ) + return 0 + fi + + case "$prev" in + -C) + _filedir -d + return 0 + ;; + -f) + _filedir 'sfv' + return 0 + ;; + esac + + _filedir + return 0 +} && +complete -F _cksfv cksfv + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/clisp b/completions/clisp new file mode 100644 index 00000000..074f692c --- /dev/null +++ b/completions/clisp @@ -0,0 +1,31 @@ +# bash brogrammable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +have clisp && +_clisp() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help --version --license -B -K \ + -M -m -L -N -E -q --quiet --silent -w -I -ansi \ + -traditional -p -C -norc -i -c -l -o -x ' -- "$cur" ) ) + else + _filedir + fi + + return 0 +} && +complete -F _clisp -o default clisp + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/configure b/completions/configure new file mode 100644 index 00000000..1b207692 --- /dev/null +++ b/completions/configure @@ -0,0 +1,44 @@ +# bash completion for configure + +_configure() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + --*prefix|--*dir) + _filedir -d + ;; + esac + + $split && return 0 + + # if $COMP_CONFIGURE_HINTS is not null, then completions of the form + # --option=SETTING will include 'SETTING' as a contextual hint + [[ "$cur" != -* ]] && return 0 + + if [ -n "$COMP_CONFIGURE_HINTS" ]; then + COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \ + awk '/^ --[A-Za-z]/ { print $1; \ + if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,].*//g' )" \ + -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \ + awk '/^ --[A-Za-z]/ { print $1; \ + if ($2 ~ /--[A-Za-z]/) print $2 }' | sed -e 's/[[,=].*//g' )" \ + -- "$cur" ) ) + fi +} +complete -F _configure configure + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/coreutils b/completions/coreutils new file mode 100644 index 00000000..33d58cf7 --- /dev/null +++ b/completions/coreutils @@ -0,0 +1,149 @@ +# Completions for various core utilities + +# chown(1) completion +# +have chown && +_chown() +{ + local cur prev split=false + + # Get cur and prev words; but don't treat user:group as separate words. + _get_comp_words_by_ref -n : cur prev + + _split_longopt && split=true + + case "$prev" in + --from) + _usergroup + return 0 + ;; + --reference) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + # Complete -options + local w opts + for w in "${COMP_WORDS[@]}" ; do + [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break + done + COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \ + --no-dereference --from --silent --quiet --reference --recursive \ + --verbose --help --version $opts' -- "$cur" ) ) + else + local args + + # The first argument is an usergroup; the rest are filedir. + _count_args : + + if [[ $args == 1 ]]; then + _usergroup -u + else + _filedir + fi + fi +} && +complete -F _chown chown + + +# chgrp(1) completion +# +have chgrp && +_chgrp() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + cur=${cur//\\\\/} + + _split_longopt && split=true + + if [[ "$prev" == --reference ]]; then + _filedir + return 0 + fi + + $split && return 0 + + # options completion + if [[ "$cur" == -* ]]; then + local w opts + for w in "${COMP_WORDS[@]}" ; do + [[ "$w" == -@(R|-recursive) ]] && opts="-H -L -P" && break + done + COMPREPLY=( $( compgen -W '-c -h -f -R -v --changes --dereference \ + --no-dereference --silent --quiet --reference --recursive \ + --verbose --help --version $opts' -- "$cur" ) ) + return 0 + fi + + # first parameter on line or first since an option? + if [[ $COMP_CWORD -eq 1 && "$cur" != -* || "$prev" == -* ]]; then + _allowed_groups + else + _filedir || return 0 + fi + + return 0 +} && +complete -F _chgrp chgrp + +# id(1) completion +# +have id && +_id() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -g --group -G --groups -n --name\ + -r --real -u --user --help --version' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -u "$cur" ) ) + fi +} && +complete -F _id id + +# mktemp(1) completion +# +have mktemp && +_mktemp() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|--version|--suffix) + return 0 + ;; + --tmpdir|-p) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + [[ "$cur" == -* ]] && \ + COMPREPLY=( $( compgen -W '-d -u -q -p -t' -- "$cur" ) ) +} && +complete -F _mktemp mktemp + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cowsay b/completions/cowsay new file mode 100644 index 00000000..c6d797aa --- /dev/null +++ b/completions/cowsay @@ -0,0 +1,31 @@ +# bash completion for cowsay + +have cowsay && +_cowsay() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f) + COMPREPLY=( $( compgen -W '$( cowsay -l | tail -n +2)' -- "$cur" ) ) + return 0 + ;; + esac + + # relevant options completion + COMPREPLY=( $( compgen -W '-b -d -g -p -s -t -w -y -e -f -h -l -n -T -W' \ + -- "$cur" ) ) + +} && +complete -F _cowsay -o default cowsay cowthink + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cpan2dist b/completions/cpan2dist new file mode 100644 index 00000000..13f568af --- /dev/null +++ b/completions/cpan2dist @@ -0,0 +1,52 @@ +# bash completion for cpan2dist + +have cpan2dist && +_cpan2dist() +{ + local cur prev packagelist cpandirs + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --format) + # should remove ":" from COMP_WORDBREAKS, but doesn't work (?) + COMPREPLY=( $( compgen -W '$(perl -MCPANPLUS::Dist -e \ + "print map { \"\$_\n\" } CPANPLUS::Dist->dist_types")' \ + -- "$cur" ) ) + return 0 + ;; + --banlist|--ignorelist|--modulelist|--logfile) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --skiptest --force --install \ + --verbose --keepsource --makefile --buildprereq \ + --archive --flushcache --defaults --edit-metafile \ + --format --ban --banlist --ignore --ignorelist \ + --modulelist --logfile --timeout --set-config \ + --set-program --dist-opts --default-banlist \ + --default-ignorelist' -- $cur ) ) + else + cpandirs=( "$HOME/.cpanplus/" "$HOME/.cpan/source/modules/" ) + for dir in ${cpandirs[@]}; do + [[ -d "$dir" && -r "$dir/02packages.details.txt.gz" ]] && \ + packagelist="$dir/02packages.details.txt.gz" + done + COMPREPLY=( $( zgrep "^${cur//-/::}" \ + $packagelist 2>/dev/null \ + | awk '{print $1}' | sed -e 's/::/-/g' ) ) + fi +} && +complete -F _cpan2dist -o default cpan2dist + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cpio b/completions/cpio new file mode 100644 index 00000000..5ead0184 --- /dev/null +++ b/completions/cpio @@ -0,0 +1,103 @@ +# bash completion for cpio + +have cpio && { +_cpio_format() +{ + COMPREPLY=( $( compgen -W 'bin odc newc crc tar ustar hpbin hpodc' -- "$cur" ) ) +} + +_cpio() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + + _split_longopt && split=true + + # --name value style option + case $prev in + -H|--format) + _cpio_format + return 0 + ;; + -E|-F|-I|--file|--pattern-file) + _filedir + return 0 + ;; + -R|--owner) + _usergroup + return 0 + ;; + --rsh-command) + _compopt_o_filenames + COMPREPLY=( $( compgen -c -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W '-o --create -i --extract -p --pass-through \ + -? --help --license --usage --version' -- "$cur" ) ) + else + case ${COMP_WORDS[1]} in + -o|--create) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-0 -a -c -v -A -B\ + -L -V -C -H -M -O -F --file --format\ + --message --null --reset-access-time\ + --verbose --dot --append --block-size\ + --dereference --io-size --quiet\ + --force-local --rsh-command --help\ + --version' -- "$cur" ) ) + fi + ;; + -i|--extract) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -c -d -f -m -n -r\ + -t -s -u -v -B -S -V -C -E -H -M -R -I\ + -F --file --make-directories\ + --nonmatching\ + --preserve-modification-time\ + --numeric-uid-gid --rename -t --list\ + --swap-bytes --swap --dot\ + --unconditional --verbose --block-size\ + --swap-halfwords --io-size\ + --pattern-file --format --owner\ + --no-preserve-owner --message\ + --force-local --no-absolute-filenames\ + --sparse --only-verify-crc --quiet\ + --rsh-command --help\ + --to-stdout \ + --version' -- "$cur" ) ) + fi + ;; + -p|--pass-through) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-0 -a -d -l -m -u -v\ + -L -V -R --null --reset-access-time\ + --make-directories --link --quiet\ + --preserve-modification-time\ + --unconditional --verbose --dot\ + --dereference --owner\ + --no-preserve-owner --sparse --help\ + --version' -- "$cur" ) ) + else + _filedir -d + fi + ;; + esac + fi +} +complete -F _cpio cpio +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/crontab b/completions/crontab new file mode 100644 index 00000000..d2ee23a0 --- /dev/null +++ b/completions/crontab @@ -0,0 +1,60 @@ +# crontab(1) completion + +have crontab && +_crontab() +{ + local cur prev + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -u) + _allowed_users + return 0 + ;; + esac + + local i opts=" -u -l -r -e" # leading space at start is significant... + [ "$(uname -s)" = Linux ] && opts="$opts -i" + [ -e /etc/selinux ] && opts="$opts -s" + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + case "${COMP_WORDS[i]}" in + -l) + opts=${opts// -l -r -e/} + opts=${opts// -i/} + opts=${opts// -s/} + ;; + -e) + opts=${opts// -l -r -e/} + opts=${opts// -i/} + ;; + -r) + opts=${opts// -l -r -e/} + ;; + -u) + opts=${opts// -u/} + opts=${opts// -i/} + ;; + -i|-s) + opts=${opts// ${COMP_WORDS[i]}/} + ;; + esac + done + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$opts' -- "$cur" ) ) + return 0 + fi + + # do filenames only if we did not have -l, -r, or -e + [[ "${COMP_LINE}" == *\ -@(l|r|e)* ]] || _filedir +} && +complete -F _crontab crontab + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cryptsetup b/completions/cryptsetup new file mode 100644 index 00000000..5e88de34 --- /dev/null +++ b/completions/cryptsetup @@ -0,0 +1,113 @@ +# bash completion for cryptsetup + +_cryptsetup_name() +{ + COMPREPLY=( $( compgen -X control -W '$( command ls /dev/mapper )' \ + -- "$cur" ) ) +} + +_cryptsetup_device() +{ + cur=${cur:=/dev/} + _filedir +} + +have cryptsetup && +_cryptsetup() +{ + local cur prev arg + COMPREPLY=() + cur=`_get_cword` + prev=`_get_pword` + + case $prev in + --key-file|--master-key-file|--header-backup-file|-d) + _filedir + return 0; + ;; + esac + + _get_first_arg + if [ -z $arg ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--hash --cipher --verify-passphrase \ + --key-file --master-key-file --key-slot --key-size --size \ + --offset --skip --readonly --iter-time --batch-mode --timeout \ + --tries --align-payload --version' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'create remove status resize luksFormat \ + luksOpen luksClose luksSuspend luksResume luksAddKey \ + luksRemoveKey luksKillSlot luksDelKey luksUUID isLuks \ + luksDump luksHeaderBackup luksHeaderRestore' -- "$cur" ) ) + fi + else + _count_args + case $arg in + create) + case $args in + 2) + _cryptsetup_name + ;; + 3) + _cryptsetup_device + ;; + esac + ;; + remove|status|resize|luksClose|luksSuspend|luksResume) + case $args in + 2) + _cryptsetup_name + ;; + esac + ;; + luksFormat|luksAddKey|luksRemoveKey) + case $args in + 2) + _cryptsetup_device + ;; + 3) + _filedir + ;; + esac + ;; + luksOpen) + case $args in + 2) + _cryptsetup_device + ;; + 3) + _cryptsetup_name + ;; + esac + ;; + luksKillSlot|luksDelKey|luksUUID|isLuks|luksDump) + case $args in + 2) + _cryptsetup_device + ;; + esac + ;; + luksHeaderBackup|luksHeaderRestore) + case $args in + 2) + _cryptsetup_device + ;; + 3) + COMPREPLY=( '--header-backup-file' ) + ;; + esac + ;; + esac + fi + + return 0 +} && +complete -F _cryptsetup cryptsetup + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cups b/completions/cups new file mode 100644 index 00000000..2848c953 --- /dev/null +++ b/completions/cups @@ -0,0 +1,21 @@ +# bash completion for cups + +have cancel && +_cancel() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -W "$( lpstat | cut -d' ' -f1 )" -- "$cur" ) ) +} && +complete -F _cancel cancel + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cvs b/completions/cvs new file mode 100644 index 00000000..be3b1be7 --- /dev/null +++ b/completions/cvs @@ -0,0 +1,392 @@ +# cvs(1) completion + +have cvs && { +set_prefix() +{ + [ -z ${prefix:-} ] || prefix=${cur%/*}/ + [ -r ${prefix:-}CVS/Entries ] || prefix="" +} + +get_entries() +{ + local IFS=$'\n' + [ -r ${prefix:-}CVS/Entries ] && \ + entries=$(cut -d/ -f2 -s ${prefix:-}CVS/Entries) +} + +get_modules() +{ + if [ -n "$prefix" ]; then + COMPREPLY=( $( command ls -d ${cvsroot}/${prefix}/!(CVSROOT) ) ) + else + COMPREPLY=( $( command ls -d ${cvsroot}/!(CVSROOT) ) ) + fi +} + +_cvs_commands() +{ + cvs --help-commands 2>&1 | awk '/^( *|\t)/ { print $1 }' +} + +_cvs_options() +{ + cvs --help-options 2>&1 | awk '/^( *|\t)-/ { print $1 }' +} + +_cvs_command_options() +{ + cvs --help $1 2>&1 | sed -ne 's/^[[:space:]]*\(-[^[:space:]=[]*\).*/\1/p' +} + +_cvs_kflags() +{ + COMPREPLY=( $( compgen -W 'kv kvl k o b v' -- "$cur" ) ) +} + +_cvs_roots() +{ + local -a cvsroots + cvsroots=( $CVSROOT ) + [ -r ~/.cvspass ] && \ + cvsroots=( "${cvsroots[@]}" $( awk '{ print $2 }' ~/.cvspass ) ) + [ -r CVS/Root ] && cvsroots=( "${cvsroots[@]}" $(cat CVS/Root) ) + COMPREPLY=( $( compgen -W '${cvsroots[@]}' -- "$cur" ) ) + __ltrim_colon_completions "$cur" +} + +_cvs() +{ + local cur prev count mode i cvsroot cvsroots pwd + local -a flags miss files entries changed newremoved + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + + count=0 + for i in "${COMP_WORDS[@]}"; do + [ $count -eq $COMP_CWORD ] && break + # Last parameter was the CVSROOT, now go back to mode selection + if [[ "${COMP_WORDS[((count))]}" == "$cvsroot" && "$mode" == cvsroot ]]; then + mode="" + fi + if [ -z "$mode" ]; then + case $i in + -H|--help) + COMPREPLY=( $( compgen -W "$( _cvs_commands )" -- "$cur" ) ) + return 0 + ;; + -d) + mode=cvsroot + cvsroot=${COMP_WORDS[((count+1))]} + ;; + ad|add|new) + mode=add + ;; + adm|admin|rcs) + mode=admin + ;; + ann|annotate) + mode=annotate + ;; + checkout|co|get) + mode=checkout + ;; + com|commit|ci) + mode=commit + ;; + di|dif|diff) + mode=diff + ;; + ex|exp|export) + mode=export + ;; + edit|unedit) + mode=$i + ;; + hi|his|history) + mode=history + ;; + im|imp|import) + mode=import + ;; + re|rel|release) + mode=release + ;; + log|rlog) + mode=log + ;; + rdiff|patch) + mode=rdiff + ;; + remove|rm|delete) + mode=remove + ;; + rtag|rfreeze) + mode=rtag + ;; + st|stat|status) + mode=status + ;; + tag|freeze) + mode=tag + ;; + up|upd|update) + mode=update + ;; + esac + elif [[ "$i" = -* ]]; then + flags=( "${flags[@]}" $i ) + fi + count=$((++count)) + done + + case $mode in + add) + case $prev in + -m) + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" != -* ]]; then + set_prefix + if [[ $COMP_CWORD -gt 1 && -r ${prefix:-}CVS/Entries ]]; then + get_entries + [ -z "$cur" ] && \ + files=$( command ls -Ad !(CVS) ) || \ + files=$( command ls -d ${cur}* 2>/dev/null ) + for i in "${entries[@]}"; do + files=( ${files[@]/#$i//} ) + done + COMPREPLY=( $( compgen -X '*~' -W '${files[@]}' -- $cur ) ) + fi + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + admin) + case $prev in + -a|-A|-b|-c|-e|-l|-m|-n|-N|-o|-s|-t-|-u) + return 0 + ;; + -t) + _filedir + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + annotate) + [[ "$prev" == -@(r|D) ]] && return 0 + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + else + get_entries + COMPREPLY=( $( compgen -W '${entries[@]}' -- "$cur" ) ) + fi + ;; + checkout) + case $prev in + -r|-D|j) + return 0 + ;; + -d) + _filedir -d + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" != -* ]]; then + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + COMPREPLY=( $( cvs -d "$cvsroot" co -c 2> /dev/null | \ + awk '{print $1}' ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + commit) + case $prev in + -m|-r) + return 0 + ;; + -F) + _filedir + return 0 + ;; + esac + + set_prefix + + if [[ "$cur" != -* && -r ${prefix:-}CVS/Entries ]]; then + # if $COMP_CVS_REMOTE is not null, 'cvs commit' will + # complete on remotely checked-out files (requires + # passwordless access to the remote repository + if [ -n "${COMP_CVS_REMOTE:-}" ]; then + # this is the least computationally intensive + # way found so far, but other changes + # (something other than changed/removed/new) + # may be missing + changed=( $( cvs -q diff --brief 2>&1 | \ + sed -ne 's/^Files [^ ]* and \([^ ]*\) differ$/\1/p' ) ) + newremoved=( $( cvs -q diff --brief 2>&1 | \ + sed -ne 's/^cvs diff: \([^ ]*\) .*, no comparison available$/\1/p' ) ) + COMPREPLY=( $( compgen -W '${changed[@]:-} \ + ${newremoved[@]:-}' -- "$cur" ) ) + else + COMPREPLY=( $(compgen -o default -- "$cur") ) + fi + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + cvsroot) + # TODO: works poorly because of the colons and -o default, + # could we drop -o default? works ok without it in cvsps + _cvs_roots + ;; + export) + case $prev in + -r|-D) + return 0 + ;; + -d) + _filedir -d + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" != -* ]]; then + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + COMPREPLY=( $( cvs -d "$cvsroot" co -c | awk '{print $1}' ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + diff) + if [[ "$cur" == -* ]]; then + _longopt diff + else + get_entries + COMPREPLY=( $( compgen -W '${entries[@]:-}' -- "$cur" ) ) + fi + ;; + remove) + if [[ "$cur" != -* ]]; then + set_prefix + if [[ $COMP_CWORD -gt 1 && -r ${prefix:-}CVS/Entries ]]; then + get_entries + # find out what files are missing + for i in "${entries[@]}"; do + [ ! -r "$i" ] && miss=( "${miss[@]}" $i ) + done + COMPREPLY=( $(compgen -W '${miss[@]:-}' -- "$cur") ) + fi + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + import) + case $prev in + -I|-b|-m|-W) + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" != -* ]]; then + # starts with same algorithm as checkout + [ -z "$cvsroot" ] && cvsroot=$CVSROOT + prefix=${cur%/*} + if [ -r ${cvsroot}/${prefix} ]; then + get_modules + COMPREPLY=( ${COMPREPLY[@]#$cvsroot} ) + COMPREPLY=( ${COMPREPLY[@]#\/} ) + fi + pwd=$( pwd ) + pwd=${pwd##*/} + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $pwd' -- $cur ) ) + else + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + update) + case $prev in + -r|-D|-j|-I|-W) + return 0 + ;; + -k) + _cvs_kflags + return 0 + ;; + esac + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W "$( _cvs_command_options $mode )" \ + -- "$cur" ) ) + fi + ;; + "") + case $prev in + -T) + _filedir -d + return 0 + ;; + -e|-s) + return 0 + ;; + -z) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + esac + + COMPREPLY=( $( compgen -W '$( _cvs_commands ) $( _cvs_options ) \ + --help --help-commands --help-options --version' -- "$cur" ) ) + ;; + esac + + return 0 +} +complete -F _cvs -o default cvs +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/cvsps b/completions/cvsps new file mode 100644 index 00000000..257437bc --- /dev/null +++ b/completions/cvsps @@ -0,0 +1,69 @@ +# bash completion for cvsps + +have cvsps && +_cvsps() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref -n : cur prev + + case $prev in + -h|-z|-f|-d|-l|--diff-opts|--debuglvl) + return 0 + ;; + -s) + COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null | + awk '/^PatchSet:?[ \t]/ { print $2 }' )" -- "$cur" ) ) + return 0 + ;; + -a) + COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null | + awk '/^Author:[ \t]/ { print $2 }' )" -- "$cur" ) ) + return 0 + ;; + -b) + COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null | + awk '/^Branch:[ \t]/ { print $2 }' )" -- "$cur" ) ) + return 0 + ;; + -r) + COMPREPLY=( $( compgen -W "$( cvsps 2>/dev/null | + awk '/^Tag:[ \t]+[^(]/ { print $2 }' )" -- "$cur" ) ) + return 0 + ;; + -p) + _filedir -d + return 0 + ;; + --test-log) + _filedir + return 0 + ;; + -Z) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + --root) + type _cvs_roots &>/dev/null && _cvs_roots + return 0 + ;; + esac + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-h -x -u -z -g -s -a -f -d -b -l -r -p -v \ + -t --norc --summary-first --test-log --diff-opts --bkcvs --no-rlog \ + --cvs-direct --no-cvs-direct --debuglvl -Z --root -q -A' \ + -- "$cur" ) ) + else + type _cvs_roots &>/dev/null && _cvs_roots + fi +} && +complete -F _cvsps cvsps + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dd b/completions/dd new file mode 100644 index 00000000..7b9b3ac7 --- /dev/null +++ b/completions/dd @@ -0,0 +1,39 @@ +# bash completion for dd + +have dd && +_dd() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref -n = cur + + case $cur in + if=*|of=*) + cur=${cur#*=} + _filedir + return 0 + ;; + conv=*) + cur=${cur#*=} + COMPREPLY=( $( compgen -W 'ascii ebcdic ibm block unblock lcase + notrunc ucase swab noerror sync' -- "$cur" ) ) + return 0 + ;; + esac + + _expand || return 0 + + COMPREPLY=( $( compgen -W '--help --version' -- "$cur" ) \ + $( compgen -W 'bs cbs conv count ibs if obs of seek skip' \ + -S '=' -- "$cur" ) ) +} && +complete -F _dd -o nospace dd + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dhclient b/completions/dhclient new file mode 100644 index 00000000..3d7e1e1a --- /dev/null +++ b/completions/dhclient @@ -0,0 +1,36 @@ +# bash completion for dhclient + +have dhclient && _dhclient() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -cf|-lf|-pf|-sf) + _filedir + return 0 + ;; + -s) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-p -d -q -1 -r -lf -pf \ + -cf -sf -s -g -n -nw -w' -- "$cur" ) ) + else + _available_interfaces + fi +} && +complete -F _dhclient dhclient + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dict b/completions/dict new file mode 100644 index 00000000..4cfdf98f --- /dev/null +++ b/completions/dict @@ -0,0 +1,77 @@ +# dict(1) completion + +{ have dict || have rdict; } && { +_dictdata() +{ + dict $host $port $1 2>/dev/null | sed -ne \ + 's/^['$'\t '']['$'\t '']*\([^'$'\t '']*\).*$/\1/p' +} + +_dict() +{ + local cur prev host port db dictfile + + COMPREPLY=() + _get_comp_words_by_ref cur prev + dictfile=/usr/share/dict/words + + for (( i=1; i < COMP_CWORD; i++ )); do + case ${COMP_WORDS[i]} in + -h|--host) + host=${COMP_WORDS[i+1]} + [ -n "$host" ] && host="-h $host" + i=$((++i)) + ;; + -p|--port) + port=${COMP_WORDS[i+1]} + [ -n "$port" ] && port="-p $port" + i=$((++i)) + ;; + -d|--database) + db=${COMP_WORDS[i+1]} + [ -n "$db" ] && host="-d $db" + i=$((++i)) + ;; + *) + ;; + esac + done + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '--host --port --database \ + --match --strategy --config \ + --nocorrect --dbs --strats \ + --serverhelp --info --serverinfo \ + --noauth --user --key --version \ + --license --help --verbose --raw \ + --pager --debug --html --pipesize --client' \ + -- "$cur" ) ) + return 0 + fi + + case $prev in + -d|--database|-i|-info) + COMPREPLY=( $( compgen -W '$( _dictdata -D )' -- "$cur" ) ) + return 0 + ;; + -s|--strategy) + COMPREPLY=( $( compgen -W '$( _dictdata -S )' -- "$cur" ) ) + return 0 + ;; + *) + ;; + esac + + [ -r $dictfile ] && \ + COMPREPLY=( $( compgen -W '$( cat $dictfile )' -- "$cur" ) ) +} +complete -F _dict -o default dict rdict +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dpkg b/completions/dpkg new file mode 100644 index 00000000..0556f3d1 --- /dev/null +++ b/completions/dpkg @@ -0,0 +1,244 @@ +# This function is required by _dpkg() and _dpkg-reconfigure() +have dpkg && { +have grep-status && { +_comp_dpkg_installed_packages() +{ + grep-status -P -e "^$1" -a -FStatus 'install ok installed' -n -s Package +} +} || { +_comp_dpkg_installed_packages() +{ + command grep -A 1 "Package: $1" /var/lib/dpkg/status | \ + command grep -B 1 -Ee "ok installed|half-installed|unpacked| \ + half-configured|config-files" \ + -Ee "^Essential: yes" | \ + command grep "Package: $1" | cut -d\ -f2 +} +} + +# Debian dpkg(8) completion +# +_dpkg() +{ + local cur prev i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + i=$COMP_CWORD + + _expand || return 0 + + _split_longopt + + # find the last option flag + if [[ $cur != -* ]]; then + while [[ $prev != -* && $i != 1 ]]; do + i=$((i-1)) + prev=${COMP_WORDS[i-1]} + done + fi + + case $prev in + -c|-i|-A|-I|-f|-e|-x|-X|-W|--install|--unpack|--record-avail| \ + --contents|--info|--fsys-tarfile|--field|--control|--extract| \ + --show) + _filedir '?(u)deb' + return 0 + ;; + -b|--build) + _filedir -d + return 0 + ;; + -s|-p|-l|--status|--print-avail|--list) + COMPREPLY=( $( apt-cache pkgnames "$cur" 2>/dev/null ) ) + return 0 + ;; + -S|--search) + _filedir + return 0 + ;; + -r|-L|-P|--remove|--purge|--listfiles) + COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W '-i --install --unpack -A --record-avail \ + --configure -r --remove -P --purge --get-selections \ + --set-selections --update-avail --merge-avail \ + --clear-avail --command-fd --forget-old-unavail -s \ + --status -p --print-avail -L --listfiles -l --list \ + -S --search -C --audit --print-architecture \ + --print-gnu-build-architecture \ + --print-installation-architecture \ + --compare-versions --help --version --force-help \ + --force-all --force-auto-select --force-downgrade \ + --force-configure-any --force-hold --force-bad-path \ + --force-not-root --force-overwrite \ + --force-overwrite-diverted --force-bad-verify \ + --force-depends-version --force-depends \ + --force-confnew --force-confold --force-confdef \ + --force-confmiss --force-conflicts --force-architecture\ + --force-overwrite-dir --force-remove-reinstreq \ + --force-remove-essential -Dh \ + --debug=help --licence --admindir --root --instdir \ + -O --selected-only -E --skip-same-version \ + -G --refuse-downgrade -B --auto-deconfigure \ + --no-debsig --no-act -D --debug --status-fd \ + -b --build -I --info -f --field -c --contents \ + -x --extract -X --vextract --fsys-tarfile -e --control \ + --ignore-depends --abort-after' -- "$cur" ) ) + ;; + esac + + +} +complete -F _dpkg dpkg dpkg-deb +} + +# Debian GNU dpkg-reconfigure(8) completion +# +have dpkg-reconfigure && +_dpkg_reconfigure() +{ + local cur prev opt + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--frontend) + opt=( $( printf '%s\n' /usr/share/perl5/Debconf/FrontEnd/* ) ) + opt=( ${opt[@]##*/} ) + opt=( ${opt[@]%.pm} ) + COMPREPLY=( $( compgen -W '${opt[@]}' -- "$cur" ) ) + return 0 + ;; + -p|--priority) + COMPREPLY=( $( compgen -W 'low medium high critical' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $(compgen -W '--frontend --priority --all --unseen-only \ + --help --showold --force --terse' -- "$cur" ) ) + else + COMPREPLY=( $( _comp_dpkg_installed_packages "$cur" ) ) + fi +} && +complete -F _dpkg_reconfigure -o default dpkg-reconfigure + +# Debian dpkg-source completion +# +have dpkg-source && +_dpkg_source() +{ + local cur prev options work i action packopts unpackopts fields + + packopts="-c -l -F -V -T -D -U -W -E -sa -i -I -sk -sr -ss -sA -sK -sP \ + -sU -sR" + unpackopts="-sp -sn -su" + options="-x -b $packopts $unpackopts" + fields="Format Source Version Binary Maintainer Uploader Architecture \ + Standards-Version Build-Depends Files" + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + action="options" + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[$i]} == "-x" ]]; then + action=unpack + elif [[ ${COMP_WORDS[$i]} == "-b" ]]; then + action=pack + elif [[ ${COMP_WORDS[$i]} == "-h" ]]; then + action=help + fi + done + + case $action in + unpack) + case $prev in + -x) + _filedir -d + _filedir 'dsc' + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$unpackopts" -- "$cur" ) ) + _filedir -d + _filedir + return 0 + ;; + esac + return 0 + ;; + pack) + case $prev in + -b) + _filedir -d + return 0 + ;; + -c|-l|-T|-i|-I) + # -c: get controlfile + # -l: get per-version info from this file + # -T: read variables here, not debian/substvars + # -i: <regexp> filter out files to ignore diffs of. + # -I: filter out files when building tarballs. + # return directory names and file names + _filedir -d + _filedir + return 0 + ;; + -F) + # -F: force change log format + COMPREPLY=( $( command ls /usr/lib/dpkg/parsechangelog ) ) + return 0 + ;; + -V|-D) + # -V: set a substitution variable + # we don't know anything about possible variables or values + # so we don't try to suggest any completion. + COMPREPLY=() + return 0 + ;; + -D) + # -D: override or add a .dsc field and value + # if $cur doesn't contain a = yet, suggest variable names + if [[ "$cur" == *=* ]]; then + # $cur contains a "=" + COMPREPLY=() + return 0 + else + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) + return 0 + fi + ;; + -U) + # -U: remove a field + # Suggest possible fieldnames + COMPREPLY=( $( compgen -W "$fields" -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$packopts $unpackopts" -- "$cur" ) ) + return 0 + ;; + esac + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + return 0 + ;; + esac +} && +complete -F _dpkg_source dpkg-source + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dselect b/completions/dselect new file mode 100644 index 00000000..3042a8d0 --- /dev/null +++ b/completions/dselect @@ -0,0 +1,40 @@ +# Debian Linux dselect(8) completion. + +have dselect && +_dselect() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --admindir) + _filedir -d + return 0 + ;; + -D|-debug) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--admindir --help --version --licence \ + --license --expert --debug' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'access update select install config \ + remove quit' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _dselect dselect + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dsniff b/completions/dsniff new file mode 100644 index 00000000..1d3b303b --- /dev/null +++ b/completions/dsniff @@ -0,0 +1,256 @@ +# dsniff util completion + +have arpspoof && +_arpspoof() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _available_interfaces + return 0 + ;; + -t) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -t' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + +} && +complete -F _arpspoof arpspoof + +have dnsspoof && +_dnsspoof() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + -f) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -f' -- "$cur" ) ) + fi + +} && +complete -F _dnsspoof dnsspoof + +have dsniff && +_dsniff() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -r|-w|-f) + _filedir + return 0 + ;; + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -m -n -i -s -f -t -r -w' -- "$cur" ) ) + fi + +} && +complete -F _dsniff dsniff + +have filesnarf || have mailsnarf || have msgsnarf && +_snarf() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -v' -- "$cur" ) ) + fi + +} && +complete -F _snarf filesnarf mailsnarf msgsnarf + +have macof && +_macof() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -s -d -e -x -y -n' -- "$cur" ) ) + fi + +} && +complete -F _macof macof + +have sshmitm && +_sshmitm() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -I -p' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + +} && +complete -F _sshmitm sshmitm + +have sshow && +_sshow() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -i' -- "$cur" ) ) + fi + +} && +complete -F _sshow sshow + +have tcpkill && +_tcpkill() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i -1 -2 -3 -4 -5 -6 -7 -8 -9' -- "$cur" ) ) + fi + +} && +complete -F _tcpkill tcpkill + +have tcpnice && +_tcpnice() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A -I -M -i' -- "$cur" ) ) + fi + +} && +complete -F _tcpnice tcpnice + +have urlsnarf && +_urlsnarf() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -i -v' -- "$cur" ) ) + fi + +} && +complete -F _urlsnarf urlsnarf + +have webmitm && +_webmitm() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + +} && +complete -F _webmitm webmitm + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/dvd+rw-tools b/completions/dvd+rw-tools new file mode 100644 index 00000000..f37781ee --- /dev/null +++ b/completions/dvd+rw-tools @@ -0,0 +1,47 @@ +# dvd+rw-tools completions + +have growisofs && +_growisofs() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -version|-speed) + return 0 + ;; + -Z|-M) + compopt -o nospace &>/dev/null + _dvd_devices + return 0 + ;; + /?(r)dev/*) + if [[ $cur == =* ]] ; then + # e.g. /dev/dvd=foo.iso, /dev/dvdrw=/dev/zero + cur="${cur#=}" + _filedir + return 0 + fi + ;; + esac + + if [[ "$cur" == -* ]]; then + # TODO: mkisofs options + COMPREPLY=( $( compgen -W '-dvd-compat -overburn -speed= -Z -M' \ + -- "$cur" ) ) + [[ ${COMPREPLY[@]} == *= ]] && compopt -o nospace &>/dev/null + return 0 + fi + + _filedir +} && +complete -F _growisofs growisofs + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/e2fsprogs b/completions/e2fsprogs new file mode 100644 index 00000000..50ce7885 --- /dev/null +++ b/completions/e2fsprogs @@ -0,0 +1,180 @@ +# bash completion for e2fsprogs + +have badblocks && +_badblocks() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -b|-c|-e|-d|-p|-t) + return 0 + ;; + -i|-o) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # -w (dangerous) and -X (internal use) not here on purpose + COMPREPLY=( $( compgen -W '-b -c -e -d -f -i -n -o -p -s -t -v' \ + -- "$cur" ) ) + return 0 + fi + + cur=${cur:=/dev/} + _filedir +} && +complete -F _badblocks badblocks + + +have dumpe2fs && +_dumpe2fs() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -o|-V) + return 0 + ;; + -i) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -o -f -h -i -x -V' -- "$cur" ) ) + return 0 + fi + + cur=${cur:=/dev/} + _filedir +} && +complete -F _dumpe2fs dumpe2fs + + +have e2freefrag && +_e2freefrag() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -c|-h) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -h' -- "$cur" ) ) + return 0 + fi + + cur=${cur:=/dev/} + _filedir +} && +complete -F _e2freefrag e2freefrag + + +have e2label && +_e2label() +{ + COMPREPLY=() + local cur cword + _get_comp_words_by_ref cur cword + + if [ $cword -eq 1 ]; then + cur=${cur:=/dev/} + _filedir + fi +} && +complete -F _e2label e2label + + +have filefrag && +_filefrag() +{ + COMPREPLY=() + local cur + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-B -b -s -v -x' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _filefrag filefrag + + +have tune2fs && +_tune2fs() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -c|-C|-E|-i|-J|-L|-m|-r|-T) + return 0 + ;; + -e) + COMPREPLY=( $( compgen -W 'continue remount-ro panic' -- "$cur" ) ) + return 0 + ;; + -g) + _gids + COMPREPLY=( $( compgen -g -W '${COMPREPLY[@]}' -- "$cur" ) ) + return 0 + ;; + -M) + _filedir -d + ;; + -o) + local -a opts=(^debug ^bsdgroups ^user_xattr ^acl ^uid16 + ^journal_data ^journal_data_ordered ^journal_data_writeback) + COMPREPLY=( $( compgen -W '${opts[@]} ${opts[@]#^}' -- "$cur" ) ) + return 0 + ;; + -O) + local -a opts=(^dir_index ^dir_nlink ^extent ^extra_isize ^filetype + ^flex_bg ^has_journal ^huge_file ^large_file ^resize_inode + ^sparse_super ^uninit_bg) + COMPREPLY=( $( compgen -W '${opts[@]} ${opts[@]#^}' -- "$cur" ) ) + return 0 + ;; + -u) + _uids + COMPREPLY=( $( compgen -u -W '${COMPREPLY[@]}' -- "$cur" ) ) + return 0 + ;; + -U) + COMPREPLY=( $( compgen -W 'clear random time' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -C -e -E -f -g -i -j -J -l -L -m -M -o + -O -r -T -u -U' -- "$cur" ) ) + fi + + cur=${cur:=/dev/} + _filedir +} && +complete -F _tune2fs tune2fs + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/findutils b/completions/findutils new file mode 100644 index 00000000..b8aaa57a --- /dev/null +++ b/completions/findutils @@ -0,0 +1,128 @@ +# bash completion for GNU find. This makes heavy use of ksh style extended +# globs and contains Linux specific code for completing the parameter +# to the -fstype option. + +have find && +_find() +{ + local cur prev i exprfound onlyonce + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -maxdepth|-mindepth) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + -newer|-anewer|-cnewer|-fls|-fprint|-fprint0|-fprintf|-name|-iname|\ + -lname|-ilname|-wholename|-iwholename|-samefile) + _filedir + return 0 + ;; + -fstype) + _fstypes + if [[ "$( uname -s )" == *BSD ]] ; then + COMPREPLY=( "${COMPREPLY[@]}" \ + $( compgen -W 'local rdonly' -- "$cur" ) ) + fi + return 0 + ;; + -gid) + _gids + return 0 + ;; + -group) + COMPREPLY=( $( compgen -g -- "$cur" 2>/dev/null) ) + return 0 + ;; + -xtype|-type) + COMPREPLY=( $( compgen -W 'b c d p f l s' -- "$cur" ) ) + return 0 + ;; + -uid) + _uids + return 0 + ;; + -user) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + -exec|-execdir|-ok|-okdir) + COMP_WORDS=(COMP_WORDS[0] "$cur") + COMP_CWORD=1 + _command + return 0 + ;; + -[acm]min|-[acm]time|-iname|-lname|-wholename|-iwholename|-lwholename|\ + -ilwholename|-inum|-path|-ipath|-regex|-iregex|-links|-perm|-size|\ + -used|-printf|-context) + # do nothing, just wait for a parameter to be given + return 0 + ;; + -regextype) + COMPREPLY=( $( compgen -W 'emacs posix-awk posix-basic \ + posix-egrep posix-extended' -- "$cur" ) ) + return 0 + ;; + esac + + _expand || return 0 + # set exprfound to 1 if there is already an expression present + for i in ${COMP_WORDS[@]}; do + [[ "$i" = [-\(\),\!]* ]] && exprfound=1 && break + done + + # handle case where first parameter is not a dash option + if [[ "$exprfound" != 1 && "$cur" != [-\(\),\!]* ]]; then + _filedir -d + return 0 + fi + + # complete using basic options + COMPREPLY=( $( compgen -W '-daystart -depth -follow -help \ + -ignore_readdir_race -maxdepth -mindepth -mindepth -mount \ + -noignore_readdir_race -noleaf -regextype -version -warn -nowarn \ + -xdev \ + -amin -anewer -atime -cmin -cnewer -ctime -empty -executable -false \ + -fstype -gid -group -ilname -iname -inum -ipath -iregex -iwholename \ + -links -lname -mmin -mtime -name -newer -nogroup -nouser -path -perm \ + -readable -regex -samefile -size -true -type -uid -used -user \ + -wholename -writable -xtype -context \ + -delete -exec -execdir -fls -fprint -fprint0 -fprintf -ls -ok -okdir \ + -print -print0 -printf -prune -quit' -- "$cur" ) ) + + # this removes any options from the list of completions that have + # already been specified somewhere on the command line, as long as + # these options can only be used once (in a word, "options", in + # opposition to "tests" and "actions", as in the find(1) manpage). + onlyonce=' -daystart -depth -follow -help -ignore_readdir_race -maxdepth \ + -mindepth -mount -noignore_readdir_race -noleaf -nowarn -regextype \ + -version -warn -xdev ' + COMPREPLY=( $( \ + (while read -d ' ' i; do + [[ -z "$i" || "${onlyonce/ ${i%% *} / }" == "$onlyonce" ]] && + continue + # flatten array with spaces on either side, + # otherwise we cannot grep on word boundaries of + # first and last word + COMPREPLY=" ${COMPREPLY[@]} " + # remove word from list of completions + COMPREPLY=( ${COMPREPLY/ ${i%% *} / } ) + done + printf '%s ' "${COMPREPLY[@]}") <<<"${COMP_WORDS[@]}" + ) ) + + _filedir + + return 0 +} && +complete -F _find find + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/freeciv b/completions/freeciv new file mode 100644 index 00000000..602ad76a --- /dev/null +++ b/completions/freeciv @@ -0,0 +1,65 @@ +# freeciv completions + +have civserver && +_civserver() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|-g|-l|-r|--file|--log|--gamelog|--read) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-d -f -g -h -i -l -m -M -p -q -r -v\ + --debug --file --gamelog --help --info --log --meta \ + --Metaserver --port --quitidle --read --version' -- "$cur" ) ) + fi + +} && +complete -F _civserver civserver + +have civclient && +_civclient() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -l|-S|-t|--log|--Sound|--tiles) + _filedir + return 0 + ;; + -P|--Plugin) + COMPREPLY=( $( compgen -W 'none esd sdl' -- "$cur" ) ) + return 0 + ;; + -s|--server) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -h -l -m -n -p -P -s -S -t -v\ + --autoconnect --debug --help --log --meta --name --port \ + --Plugin --server --Sound --tiles --version' -- "$cur" ) ) + fi + +} && +complete -F _civclient civclient + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/freerdp b/completions/freerdp new file mode 100644 index 00000000..82a46462 --- /dev/null +++ b/completions/freerdp @@ -0,0 +1,47 @@ +# bash completion for xfreerdp + +have xfreerdp && +_xfreerdp() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -k) + COMPREPLY=( $( compgen -W "$(xfreerdp --kbd-list | \ + awk '/^0x/ {print $1}')" -- "$cur" ) ) + return 0 + ;; + -a) + COMPREPLY=( $( compgen -W '8 15 16 24 32' -- "$cur" ) ) + return 0 + ;; + -x) + COMPREPLY=( $( compgen -W 'b broadband m modem l lan' -- $cur ) ) + return 0 + ;; + --plugin) + COMPREPLY=( $( compgen -W 'cliprdr rdpsnd rdpdr' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-u -d -s -c -p -n -t -g -a -z -f -x -O -o \ + -k --kbd-list -h --plugin --data' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + +} && +complete -F _xfreerdp xfreerdp + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/fuse b/completions/fuse new file mode 100644 index 00000000..58d0c516 --- /dev/null +++ b/completions/fuse @@ -0,0 +1,36 @@ +# bash completion for fuse + +have fusermount && +_fusermount() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -h|-V|-o) + return 0 + ;; + -u) + COMPREPLY=( $( compgen -W "$( awk \ + '{ if ($3 ~ /^fuse\./) print $2 }' /etc/mtab 2>/dev/null )" \ + -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-h -V -o -u -q -z' -- "$cur" ) ) + else + _filedir -d + fi +} && +complete -F _fusermount fusermount + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gcc b/completions/gcc new file mode 100644 index 00000000..d78e3e24 --- /dev/null +++ b/completions/gcc @@ -0,0 +1,59 @@ +# gcc(1) completion +# +# The only unusual feature is that we don't parse "gcc --help -v" output +# directly, because that would include the options of all the other backend +# tools (linker, assembler, preprocessor, etc) without any indication that +# you cannot feed such options to the gcc driver directly. (For example, the +# linker takes a -z option, but you must type -Wl,-z for gcc.) Instead, we +# ask the driver ("g++") for the name of the compiler ("cc1"), and parse the +# --help output of the compiler. + +have gcc && +_gcc() +{ + local cur cc backend + + COMPREPLY=() + _get_comp_words_by_ref cur + + _expand || return 0 + + case $1 in + gcj) + backend=jc1 + ;; + gpc) + backend=gpc1 + ;; + *77) + backend=f771 + ;; + *) + backend=cc1 # (near-)universal backend + ;; + esac + + if [[ "$cur" == -* ]]; then + cc=$( $1 -print-prog-name=$backend ) + # sink stderr: + # for C/C++/ObjectiveC it's useless + # for FORTRAN/Java it's an error + COMPREPLY=( $( compgen -W "$( $cc --help 2>/dev/null | \ + tr '\t' ' ' | \ + sed -e '/^ *-/!d' -e 's/ *-\([^ ]*\).*/-\1/' | \ + sort -u )" -- "$cur" ) ) + else + _filedir + fi +} && +complete -F _gcc gcc g++ c++ g77 gcj gpc +[ $USERLAND = GNU -o $UNAME = Cygwin ] && \ +[ -n "${have:-}" ] && complete -F _gcc cc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gcl b/completions/gcl new file mode 100644 index 00000000..e0931536 --- /dev/null +++ b/completions/gcl @@ -0,0 +1,30 @@ +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +have gcl && +_gcl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-eval -load -f -batch -dir -libdir \ + -compile -o-file -c-file -h-file -data-file -system-p '-- "$cur" ) ) + else + _filedir + fi + + return 0 +} && +complete -F _gcl -o default gcl + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gdb b/completions/gdb new file mode 100644 index 00000000..f0bc42d3 --- /dev/null +++ b/completions/gdb @@ -0,0 +1,44 @@ +# bash completion for gdb + +have gdb && +_gdb() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ $COMP_CWORD -eq 1 ]; then + local IFS + _compopt_o_filenames + if [[ "$cur" == */* ]]; then + # compgen -c works as expected if $cur contains any slashes. + IFS=$'\n' + COMPREPLY=( $( PATH="$PATH:." compgen -d -c -- "$cur" ) ) + else + # otherwise compgen -c contains Bash's built-in commands, + # functions and aliases. Thus we need to retrieve the program + # names manually. + IFS=":" + local path_array=( $( \ + sed -e 's/:\{2,\}/:/g' -e 's/^://' -e 's/:$//' <<<"$PATH" ) ) + IFS=$'\n' + COMPREPLY=( $( compgen -d -W '$(find "${path_array[@]}" . \ + -mindepth 1 -maxdepth 1 -not -type d -executable \ + -printf "%f\\n" 2>/dev/null)' -- "$cur" ) ) + fi + elif [ $COMP_CWORD -eq 2 ]; then + prev=${prev##*/} + COMPREPLY=( $( compgen -fW "$( command ps axo comm,pid | \ + awk '{if ($1 ~ /^'"$prev"'/) print $2}' )" -- "$cur" ) ) + fi +} && +complete -F _gdb -o default gdb + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/genisoimage b/completions/genisoimage new file mode 100644 index 00000000..61b18114 --- /dev/null +++ b/completions/genisoimage @@ -0,0 +1,77 @@ +# bash completion for mkisofs/genisoimage + +(have mkisofs || have genisoimage) && +_mkisofs() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o|-abstract|-biblio|-check-session|-copyright|-log-file| \ + -root-info|-prep-boot|-*-list) + _filedir + return 0 + ;; + -*-charset) + COMPREPLY=( $( compgen -W '$( mkisofs -input-charset \ + help 2>&1 | tail -n +3 )' -- "$cur" ) ) + return 0 + ;; + -uid) + _uids + return 0 + ;; + -gid) + _gids + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-abstract -appid -allow-lowercase \ + -allow-multidot -biblio -cache-inodes -no-cache-inodes \ + -eltorito-boot -eltorito-alt-boot -sparc-boot -generic-boot \ + -hard-disk-boot -no-emul-boot -no-boot -boot-load-seg \ + -boot-load-size -boot-info-table -cdrecord-params \ + -eltorito-catalog -check-oldname -check-session -copyright \ + -omit-period -disable-deep-relocation -dir-mode -dvd-video \ + -follow-links -file-mode -gid -gui -graft-points -hide -hide-list \ + -hidden -hidden-list -hide-joliet -hide-joliet-list \ + -hide-joliet-trans-tbl -hide-rr-moved -input-charset \ + -output-charset -iso-level -joliet -joliet-long -jcharset \ + -full-iso9660-filenames -allow-leading-dots -log-file -exclude \ + -exclude-list -max-iso9660-filenames -prev-session \ + -omit-version-number -new-dir-mode -nobak -no-bak -force-rr -no-rr \ + -no-split-symlink-components -no-split-symlink-fields -output -pad \ + -no-pad -path-list -publisher -preparer -print-size -quiet -rock + -rational-rock -relaxed-filenames -sort -split-output \ + -stream-media-size -stream-file-name -sysid -translation-table \ + -table-name -ucs-level -udf -uid -use-fileversion \ + -untranslated-filenames -no-iso-translate -volid -volset \ + -volset-size -volset-seqno -verbose -old-exclude \ + -transparent-compression -hfs -apple -map -magic -hfs-creator \ + -hfs-type -probe -no-desktop -mac-name \ + -boot-hfs-file -part -auto -cluster-size \ + -hide-hfs -hide-hfs-list -hfs-volid \ + -icon-position -root-info -prep-boot \ + -input-hfs-charset -output-hfs-charset \ + -hfs-unlock -hfs-bless -hfs-parms --cap \ + --netatalk --double --ethershare --ushare \ + --exchange --sgi --xinet --macbin --single \ + --dave --sfm --osx-double --osx-hfs' -- "$cur" )) + else + _filedir + fi + +} && +complete -F _mkisofs mkisofs genisoimage + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/getent b/completions/getent new file mode 100644 index 00000000..54e62ab8 --- /dev/null +++ b/completions/getent @@ -0,0 +1,55 @@ +# bash completion for getent + +have getent && +_getent() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + passwd) + COMPREPLY=( $( compgen -u "$cur" ) ) + return 0 + ;; + group) + COMPREPLY=( $( compgen -g "$cur" ) ) + return 0 + ;; + services) + COMPREPLY=( $( compgen -s "$cur" ) ) + return 0 + ;; + hosts) + COMPREPLY=( $( compgen -A hostname "$cur" ) ) + return 0 + ;; + protocols|networks|ahosts|ahostsv4|ahostsv6|rpc) + COMPREPLY=( $( compgen -W "$( getent "$prev" | \ + awk '{ print $1 }' )" -- "$cur" ) ) + return 0 + ;; + aliases|shadow) + COMPREPLY=( $( compgen -W "$( getent "$prev" | cut -d: -f1 )" \ + -- "$cur" ) ) + return 0 + ;; + esac + + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'passwd group hosts services protocols \ + networks ahosts ahostsv4 ahostsv6 aliases ethers netgroup rpc \ + shadow' -- "$cur" ) ) + fi +} && +complete -F _getent getent + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gkrellm b/completions/gkrellm new file mode 100644 index 00000000..13e25ada --- /dev/null +++ b/completions/gkrellm @@ -0,0 +1,54 @@ +# gkrellm(1) completion + +have gkrellm || have gkrellm2 && +_gkrellm() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -t|--theme) + _filedir -d + return 0 + ;; + -p|--plugin) + _filedir so + return 0 + ;; + -s|--server) + _known_hosts_real "$cur" + return 0 + ;; + -l|--logfile) + _filedir + return 0 + ;; + -g|--geometry|-c|--config|-P|--port|-d|--debug-level) + # Argument required but no completions available + return 0 + ;; + -h|--help|-v|--version) + # All other options are noop with these + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--theme --geometry --wm --m2 --nt \ + --withdrawn --config --force-host-config --server --port --nc \ + --config-clean --nolock --plugin --demo --logfile --version \ + --debug-level --help' -- "$cur" ) ) + fi + +} && +complete -F _gkrellm gkrellm gkrellm2 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gnatmake b/completions/gnatmake new file mode 100644 index 00000000..cdd193c1 --- /dev/null +++ b/completions/gnatmake @@ -0,0 +1,37 @@ +# Gnatmake completion by Ralf_Schroth@t-online.de (Ralf Schroth) + +have gnatmake && +_gnatmake() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + # relevant (and less relevant ;-) )options completion + COMPREPLY=( $( compgen -W '-a -c -f -i -j -k -m -M -n -o \ + -q -s -v -z -aL -A -aO -aI -I -I- -L -nostdinc \ + -nostdlib -cargs -bargs -largs -fstack-check \ + -fno-inline -g -O1 -O0 -O2 -O3 -gnata -gnatA \ + -gnatb -gnatc -gnatd -gnatD -gnate -gnatE \ + -gnatf -gnatF -gnatg -gnatG -gnath -gnati \ + -gnatk -gnatl -gnatL -gnatm -gnatn -gnato \ + -gnatO -gnatp -gnatP -gnatq -gnatR -gnats \ + -gnatt -gnatT -gnatu -gnatU -gnatv -gnatws \ + -gnatwe -gnatwl -gnatwu -gnatW -gnatx -gnatX \ + -gnaty -gnatz -gnatZ -gnat83' -- "$cur" ) ) + else + # source file completion + _filedir '@(adb|ads)' + fi +} && +complete -F _gnatmake gnatmake + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gpg b/completions/gpg new file mode 100644 index 00000000..878a800b --- /dev/null +++ b/completions/gpg @@ -0,0 +1,48 @@ +# bash completion for gpg + +have gpg && +_gpg() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -s|--sign|--clearsign|--decrypt-files|--load-extension) + _filedir + return 0 + ;; + --export|--sign-key|--lsignkey|--nrsignkey|--nrlsignkey|--editkey) + # return list of public keys + COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | \ + sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' \ + -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" ) ) + return 0 + ;; + -r|--recipient) + COMPREPLY=( $( compgen -W "$( gpg --list-keys 2>/dev/null | \ + sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )) + if [ -e ~/.gnupg/gpg.conf ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne \ + 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \ + ~/.gnupg/gpg.conf )" -- "$cur") ) + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$(gpg --dump-options)' -- "$cur" ) ) + fi + +} && +complete -F _gpg -o default gpg + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gpg2 b/completions/gpg2 new file mode 100644 index 00000000..b99783f9 --- /dev/null +++ b/completions/gpg2 @@ -0,0 +1,52 @@ +# gpg2(1) completion + +have gpg2 && { +_gpg2 () +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --homedir) + _filedir -d + return 0 + ;; + -s|--sign|--clearsign|--options|--decrypt) + _filedir + return 0 + ;; + --export|--sign-key|--lsign-key|--nrsign-key|--nrlsign-key|--edit-key) + # return list of public keys + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | \ + sed -ne 's@^pub.*/\([^ ]*\).*$@\1@p' \ + -ne 's@^.*\(<\([^>]*\)>\).*$@\2@p' )" -- "$cur" ) ) + return 0 + ;; + -r|--recipient) + COMPREPLY=( $( compgen -W "$( gpg2 --list-keys 2>/dev/null | \ + sed -ne 's@^.*<\([^>]*\)>.*$@\1@p')" -- "$cur" )) + if [ -e ~/.gnupg/gpg.conf ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "$( sed -ne \ + 's@^[ \t]*group[ \t][ \t]*\([^=]*\).*$@\1@p' \ + ~/.gnupg/gpg.conf)" -- "$cur")) + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$(gpg2 --dump-options)' -- "$cur" ) ) + fi +} && +complete -F _gpg2 -o default gpg2 +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/gzip b/completions/gzip new file mode 100644 index 00000000..f7aec17e --- /dev/null +++ b/completions/gzip @@ -0,0 +1,55 @@ +# bash completion for gzip + +have gzip || have pigz && +_gzip() +{ + local cur prev xspec helpopts + + COMPREPLY=() + _get_comp_words_by_ref cur prev + helpopts=`_parse_help ${COMP_WORDS[0]}` + + case $prev in + -b|--blocksize|-p|--processes|-S|--suffix|-h|--help|-V|--version) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$helpopts -1 -2 -3 -4 -5 -6 -7 -8 -9" \ + -- "$cur" ) ) + return 0 + fi + + local IFS=$'\n' + + xspec="*.@(gz|t[ag]z)" + if [[ "$prev" == --* ]]; then + [[ "$prev" == --decompress || \ + "$prev" == --list || \ + "$prev" == --test ]] && xspec="!"$xspec + [[ "$prev" == --force ]] && xspec= + elif [[ "$prev" == -* ]]; then + [[ "$prev" == -*[dlt]* ]] && xspec="!"$xspec + [[ "$prev" == -*f* ]] && xspec= + elif [[ "$prev" == '>' || "$prev" == '>>' ]]; then + xspec= + elif [ "$prev" = '<' ]; then + xspec= + fi + + _expand || return 0 + + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _gzip gzip pigz + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/heimdal b/completions/heimdal new file mode 100644 index 00000000..c1efb110 --- /dev/null +++ b/completions/heimdal @@ -0,0 +1,133 @@ +# bash completion for heimdal + +have ktutil && { +_heimdal_principals() +{ + + COMPREPLY=( $( compgen -W "$( kadmin -l dump 2>/dev/null | \ + awk '{print $1}' )" -- "$cur" ) ) +} + +_heimdal_realms() +{ + + COMPREPLY=( $( compgen -W "( kadmin -l dump 2>/dev/null | \ + awk '{print $1}' | awk -F@ '{print $2}' )" -- "$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 split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -p|--principal) + _heimdal_principals + return 0 + ;; + -e|--enctype) + _heimdal_encodings + return 0 + ;; + -a|--admin-server) + _known_hosts_real "$cur" + return 0 + ;; + -r|--realm) + _heimdal_realms + return 0 + ;; + -s|-k|--srvtab|--keytab) + _filedir + return 0 + ;; + esac + + $split && return 0 + + 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 +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/helpers/Makefile.am b/completions/helpers/Makefile.am new file mode 100644 index 00000000..98fccefe --- /dev/null +++ b/completions/helpers/Makefile.am @@ -0,0 +1,3 @@ +helpers_SCRIPTS = perl + +EXTRA_DIST = $(helpers_SCRIPTS) diff --git a/completions/helpers/Makefile.in b/completions/helpers/Makefile.in new file mode 100644 index 00000000..e367369b --- /dev/null +++ b/completions/helpers/Makefile.in @@ -0,0 +1,365 @@ +# Makefile.in generated by automake 1.11.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = completions/helpers +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__installdirs = "$(DESTDIR)$(helpersdir)" +SCRIPTS = $(helpers_SCRIPTS) +SOURCES = +DIST_SOURCES = +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bashcompdir = @bashcompdir@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +helpersdir = @helpersdir@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +helpers_SCRIPTS = perl +EXTRA_DIST = $(helpers_SCRIPTS) +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign completions/helpers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign completions/helpers/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-helpersSCRIPTS: $(helpers_SCRIPTS) + @$(NORMAL_INSTALL) + test -z "$(helpersdir)" || $(MKDIR_P) "$(DESTDIR)$(helpersdir)" + @list='$(helpers_SCRIPTS)'; test -n "$(helpersdir)" || list=; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(helpersdir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(helpersdir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-helpersSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(helpers_SCRIPTS)'; test -n "$(helpersdir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(helpersdir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(helpersdir)" && rm -f $$files +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(helpersdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-helpersSCRIPTS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-helpersSCRIPTS + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic distclean \ + distclean-generic distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am \ + install-helpersSCRIPTS install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am uninstall uninstall-am \ + uninstall-helpersSCRIPTS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/completions/helpers/perl b/completions/helpers/perl new file mode 100755 index 00000000..b3522ac0 --- /dev/null +++ b/completions/helpers/perl @@ -0,0 +1,88 @@ +#!/usr/bin/env perl +use strict; +use Config; +use File::Spec::Functions; + +my %seen; + +sub print_modules_real { + my ($base, $dir, $word) = @_; + + # return immediatly if potential completion doesn't match current word + # a double comparaison is used to avoid dealing with string lengths + # (the shorter being the pattern to be used as the regexp) + # word 'Fi', base 'File' -> match 'File' against 'Fi' + # word 'File::Sp', base 'File' -> match 'File::Sp' againt 'File' + return if + $base && + $word && + $base !~ /^\Q$word/ && + $word !~ /^\Q$base/; + + chdir($dir) or return; + + # print each file + foreach my $file (glob('*.pm')) { + $file =~ s/\.pm$//; + my $module = $base . $file; + next if $module !~ /^\Q$word/; + next if $seen{$module}++; + print $module . "\n"; + } + + # recurse in each subdirectory + foreach my $directory (grep { -d } glob('*')) { + my $subdir = $dir . '/' . $directory; + if ($directory =~ /^(?:[.\d]+|$Config{archname}|auto)$/) { + # exclude subdirectory name from base + print_modules_real(undef, $subdir, $word); + } else { + # add subdirectory name to base + print_modules_real($base . $directory . '::', $subdir, $word); + } + } +} + +sub print_modules { + my ($word) = @_; + + foreach my $directory (@INC) { + print_modules_real(undef, $directory, $word); + } +} + +sub print_functions { + my ($word) = @_; + + my $perlfunc; + for ( @INC, undef ) { + return if not defined; + $perlfunc = catfile $_, qw( pod perlfunc.pod ); + last if -r $perlfunc; + } + + open my $fh, '<', $perlfunc or return; + + my $nest_level = -1; + while ( <$fh> ) { + next if 1 .. /^=head2 Alphabetical Listing of Perl Functions$/; + ++$nest_level if /^=over/; + --$nest_level if /^=back/; + next if $nest_level; + next unless /^=item (-?\w+)/; + my $function = $1; + next if $function !~ /^\Q$word/; + next if $seen{$function}++; + print $function . "\n"; + } + +} + +my $type = shift; +my $word = shift; + +if ($type eq 'functions') { + print_functions($word); +} elsif ($type eq 'modules') { + print_modules($word); +} diff --git a/completions/hping2 b/completions/hping2 new file mode 100644 index 00000000..e2e6bf1a --- /dev/null +++ b/completions/hping2 @@ -0,0 +1,55 @@ +# bash completion for hping2 + +have hping || have hping2 || have hping3 && +_hping2() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=`_get_pword` + + case $prev in + -I|--interface) + _available_interfaces + return 0 + ;; + -a|--spoof) + _known_hosts_real "$cur" + return 0 + ;; + -o|--tos) + COMPREPLY=( $( compgen -W '02 04 08 10' ) ) + return 0 + ;; + -E|--file) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --count --interval --fast \ + --faster --numeric --quiet --interface --verbose --debug --bind \ + --unbind --rawip --icmp --upd --scan --listen --spoof \ + --rand-source --rand-dest --ttl --id --ipproto --winid -rel --frag \ + --morefrag --dontfrag --fragoff --mtu --tos --rroute --icmptype \ + --icmpcode --icmp-ipver --icmp-iphlen --icmp-iplen --icmp-ipid \ + --icmp-ipproto --icmp-cksum --icmp-ts --icmp-addr --baseport \ + --destport --keep --win --tcpoff --tcpseq --tcpack --seqnum \ + --badcksum --tcp-timestamp --fin --syn --rst --push --ack --urg \ + --xmas --ymas --data --file --sign --dump --print --safe --end \ + --traceroute --tr-keep-ttl --tr-stop --tr-no-rtt' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi +} && +complete -F _hping2 hping hping2 hping3 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/iconv b/completions/iconv new file mode 100644 index 00000000..9e332004 --- /dev/null +++ b/completions/iconv @@ -0,0 +1,46 @@ +# iconv(1) completion + +have iconv && +_iconv() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -'?'|--help|--usage|-V|--version|--unicode-subst|--byte-subst|\ + --widechar-subst) + return 0 + ;; + -f|--from-code|-t|--to-code) + COMPREPLY=( $( compgen -W '$( iconv -l | \ + sed -e "s@/*\$@@" -e "s/[,()]//g" )' -- "$cur" ) ) + return 0 + ;; + -o|--output) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $( compgen -W '--from-code --to-code --list -c + --unicode-subst --byte-subst --widechar-subst --output --silent + --verbose --help --usage --version' -- "$cur" ) ) + return 0 + fi +} && +complete -F _iconv -o default iconv + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/iftop b/completions/iftop new file mode 100644 index 00000000..9ec2a0d0 --- /dev/null +++ b/completions/iftop @@ -0,0 +1,35 @@ +# iftop(8) completion + +have iftop && +_iftop() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -h|-f|-F|-m) + return 0 + ;; + -i) + _available_interfaces -a + return 0 + ;; + -c) + _filedir + return 0 + ;; + esac + + COMPREPLY=( $( compgen -W '-h -n -N -p -P -b -B -i -f -F -c -m' \ + -- "$cur" ) ) +} && +complete -F _iftop iftop + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ifupdown b/completions/ifupdown new file mode 100644 index 00000000..f81e08d5 --- /dev/null +++ b/completions/ifupdown @@ -0,0 +1,27 @@ +# Red Hat & Debian GNU/Linux if{up,down} completion +# +[ $USERLAND = GNU ] && { have ifup || have ifdown; } && +_ifupdown() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD -eq 1 ]; then + _configured_interfaces + COMPREPLY=( $(compgen -W '${COMPREPLY[@]}' -- "$cur") ) + fi + + return 0 +} && +complete -F _ifupdown ifup ifdown +[ $USERLAND = GNU ] && have ifstatus && complete -F _ifupdown ifstatus + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/imagemagick b/completions/imagemagick new file mode 100644 index 00000000..c7ba74c8 --- /dev/null +++ b/completions/imagemagick @@ -0,0 +1,532 @@ +# bash completion for ImageMagick + +have convert && { +_ImageMagick() +{ + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -channel) + COMPREPLY=( $( compgen -W 'Red Green Blue Opacity \ + Matte Cyan Magenta Yellow Black' -- "$cur" ) ) + return 0 + ;; + -colormap) + COMPREPLY=( $( compgen -W 'shared private' -- "$cur" ) ) + return 0 + ;; + -colorspace) + COMPREPLY=( $( compgen -W 'GRAY OHTA RGB Transparent \ + XYZ YCbCr YIQ YPbPr YUV CMYK' -- "$cur" ) ) + return 0 + ;; + -compose) + COMPREPLY=( $( compgen -W 'Over In Out Atop Xor Plus \ + Minus Add Subtract Difference Multiply Bumpmap\ + Copy CopyRed CopyGreen CopyBlue CopyOpacity' -- "$cur" ) ) + return 0 + ;; + -compress) + COMPREPLY=( $( compgen -W 'None BZip Fax Group4 JPEG \ + Lossless LZW RLE Zip' -- "$cur" ) ) + return 0 + ;; + -dispose) + COMPREPLY=( $( compgen -W 'Undefined None Background Previous' \ + -- "$cur" ) ) + return 0 + ;; + -encoding) + COMPREPLY=( $( compgen -W 'AdobeCustom AdobeExpert \ + AdobeStandard AppleRoman BIG5 GB2312 Latin2 \ + None SJIScode Symbol Unicode Wansung' -- "$cur")) + return 0 + ;; + -endian) + COMPREPLY=( $( compgen -W 'MSB LSB' -- "$cur" ) ) + return 0 + ;; + -filter) + COMPREPLY=( $( compgen -W 'Point Box Triangle Hermite \ + Hanning Hamming Blackman Gaussian Quadratic \ + Cubic Catrom Mitchell Lanczos Bessel Sinc' -- "$cur" ) ) + return 0 + ;; + -format) + COMPREPLY=( $( compgen -W "$( convert -list format | \ + awk '/ [r-][w-][+-] / {print $1}' | \ + tr -d '*' | tr [:upper:] [:lower:] )" -- "$cur" ) ) + return 0 + ;; + -gravity) + COMPREPLY=( $( compgen -W 'Northwest North NorthEast \ + West Center East SouthWest South SouthEast' -- "$cur" ) ) + return 0 + ;; + -intent) + COMPREPLY=( $( compgen -W 'Absolute Perceptual \ + Relative Saturation' -- "$cur" ) ) + return 0 + ;; + -interlace) + COMPREPLY=( $( compgen -W 'None Line Plane Partition' -- "$cur" ) ) + return 0 + ;; + -limit) + COMPREPLY=( $( compgen -W 'Disk File Map Memory' -- "$cur" ) ) + return 0 + ;; + -list) + COMPREPLY=( $( compgen -W 'Delegate Format Magic Module Resource \ + Type' -- "$cur" ) ) + return 0 + ;; + -map) + COMPREPLY=( $( compgen -W 'best default gray red green blue' \ + -- "$cur" ) ) + _filedir + return 0 + ;; + -noise) + COMPREPLY=( $( compgen -W 'Uniform Gaussian Multiplicative \ + Impulse Laplacian Poisson' -- "$cur" ) ) + return 0 + ;; + -preview) + COMPREPLY=( $( compgen -W 'Rotate Shear Roll Hue \ + Saturation Brightness Gamma Spiff \ + Dull Grayscale Quantize Despeckle \ + ReduceNoise AddNoise Sharpen Blur \ + Treshold EdgeDetect Spread Shade \ + Raise Segment Solarize Swirl Implode \ + Wave OilPaint CharcoalDrawing JPEG' -- "$cur" ) ) + return 0 + ;; + -mask|-profile|-texture|-tile|-write) + _filedir + return 0 + ;; + -type) + COMPREPLY=( $( compgen -W 'Bilevel Grayscale Palette PaletteMatte \ + TrueColor TrueColorMatte ColorSeparation ColorSeparationlMatte \ + Optimize' -- "$cur" ) ) + return 0 + ;; + -units) + COMPREPLY=( $( compgen -W 'Undefined PixelsPerInch \ + PixelsPerCentimeter' -- "$cur" ) ) + return 0 + ;; + -virtual-pixel) + COMPREPLY=( $( compgen -W 'Constant Edge mirror tile' -- "$cur" ) ) + return 0 + ;; + -visual) + COMPREPLY=( $( compgen -W 'StaticGray GrayScale StaticColor \ + PseudoColor TrueColor DirectColor defaut visualid' -- "$cur" )) + return 0 + ;; + esac +} + +_convert() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \ + -adaptive-sharpen -adjoin -affine -alpha -annotate \ + -antialias -append -attenuate -authenticate \ + -auto-orient -average -background -bench -bias \ + -black-point-compensation -black-threshold \ + -blue-primary -blur -border -bordercolor -caption \ + -channel -charcoal -chop -clip -clip-mask -clip-path \ + -clone -clut -coalesce -colorize -colors -colorspace \ + -combine -comment -compose -composite -compress \ + -contrast -contrast-stretch -convolve -crop -cycle \ + -debug -decipher -deconstruct -define -delay -delete \ + -density -depth -despeckle -display -dispose -distort \ + -dither -draw -edge -emboss -encipher -encoding \ + -endian -enhance -equalize -evaluate -extent -extract \ + -family -fill -filter -flatten -flip -floodfill -flop \ + -font -format -frame -fuzz -fx -gamma -gaussian-blur \ + -geometry -gravity -green-primary -help -identify \ + -implode -insert -intent -interlace -interpolate \ + -label -lat -layers -level -limit -linear-stretch \ + -liquid-rescale -list -log -loop -map -mask \ + -mattecolor -median -modulate -monitor -monochrome \ + -morph -mosaic -motion-blur -negate -noise -normalize \ + -opaque -ordered-dither -orient -page -paint -ping \ + -pointsize -polaroid -posterize -preview -print \ + -process -profile -quality -quantize -quiet \ + -radial-blur -raise -random-threshold -recolor \ + -red-primary -regard-warnings -region -render -repage \ + -resample -resize -respect-parenthesis -reverse -roll \ + -rotate -sample -sampling-factor -scale -scene -seed \ + -segment -separate -sepia-tone -set -shade -shadow \ + -sharpen -shave -shear -sigmoidal-contrast -size \ + -sketch -solarize -splice -spread -stretch -strip \ + -stroke -strokewidth -style -swap -swirl -taint \ + -texture -threshold -thumbnail -tile -tile-offset \ + -tint -transform -transparent -transparent-color \ + -transpose -transverse -treedepth -trim -type \ + -undercolor -unique-colors -units -unsharp -verbose \ + -version -view -vignette -virtual-pixel -wave \ + -weight -white-point -white-threshold \ + -write' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+adjoin +append +compress \ + +contrast +debug +dither +endian +gamma +label +map \ + +mask +matte +negate +noise +page +raise +render \ + +write' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _convert convert + +_mogrify() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adaptive-blur -adaptive-resize \ + -adaptive-sharpen -adjoin -affine -alpha -annotate \ + -antialias -attenuate -authenticate -auto-orient \ + -background -bias -black-point-compensation \ + -black-threshold -blue-primary -blur -border \ + -bordercolor -caption -channel -charcoal -chop -clip \ + -clip-mask -clip-path -clut -colorize -colors \ + -colorspace -comment -compose -compress -contrast \ + -contrast-stretch -convolve -cycle -debug -decipher \ + -define -delay -density -depth -despeckle -display \ + -dispose -distort -dither -draw -edge -emboss \ + -encipher -encoding -endian -enhance -equalize \ + -evaluate -extent -extract -family -fill -filter \ + -flip -floodfill -flop -font -format -frame -fuzz \ + -gamma -gaussian-blur -geometry -gravity \ + -green-primary -help -identify -implode -intent \ + -interlace -interpolate -label -lat -layers -level \ + -limit -linear-stretch -liquid-rescale -list -log \ + -loop -mask -mattecolor -median -modulate -monitor \ + -monochrome -motion-blur -negate -noise -normalize \ + -opaque -ordered-dither -orient -page -paint -path \ + -ping -pointsize -polaroid -posterize -preview -print \ + -profile -quality -quantize -quiet -radial-blur \ + -raise -random-threshold -recolor -red-primary \ + -regard-warnings -region -render -repage -resample \ + -resize -roll -rotate -sample -sampling-factor -scale \ + -scene -seed -segment -sepia-tone -set -shade -shadow \ + -sharpen -shave -shear -sigmoidal-contrast -size \ + -sketch -solarize -splice -spread -stretch -strip \ + -stroke -strokewidth -style -swirl -taint -texture \ + -threshold -thumbnail -tile -tile-offset -tint \ + -transform -transparent -transparent-color -transpose \ + -transverse -treedepth -trim -type -undercolor \ + -unique-colors -units -unsharp -verbose -version \ + -view -vignette -virtual-pixel -wave -weight \ + -white-point -white-threshold' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \ + +endian +gamma +label +map +mask +matte +negate +page \ + +raise' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _mogrify mogrify + +_display() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \ + -auto-orient -backdrop -background -border \ + -bordercolor -borderwidth -channel -clip \ + -clip-path -coalesce -colormap -colors -colorspace \ + -comment -compress -contrast -crop -debug -decipher \ + -define -delay -density -depth -despeckle -display \ + -dispose -dither -edge -endian -enhance -extract \ + -filter -flatten -flip -flop -font -foreground \ + -format -frame -gamma -geometry -help -iconGeometry \ + -iconic -identify -immutable -interlace -interpolate \ + -label -limit -list -log -loop -map -mattecolor \ + -monitor -monochrome -name -negate -page -profile \ + -quality -quantize -quiet -raise -regard-warnings \ + -remote -repage -resample -resize \ + -respect-parenthesis -roll -rotate -sample \ + -sampling-factor -scenes -seed -segment -set \ + -shared-memory -sharpen -size -strip -texture -title \ + -transparent-color -treedepth -trim -update \ + -usePixmap -verbose -version -virtual-pixel -visual \ + -window -window-group -write' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +contrast +debug +dither \ + +endian +gamma +label +map +matte +negate +page \ + +raise +write' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _display display + +_animate() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-alpha -authenticate -backdrop \ + -background -bordercolor -borderwidth -channel \ + -coalesce -colormap -colors -colorspace -crop -debug \ + -decipher -define -delay -density -depth -display \ + -dispose -dither -extract -filter -flatten -font \ + -foreground -format -gamma -geometry -help \ + -iconGeometry -iconic -identify -immutable -interlace \ + -interpolate -limit -list -log -loop -map -mattecolor \ + -mattecolor -monitor -monochrome -name -page -pause \ + -quantize -quiet -regard-warnings -remote -repage \ + -resample -resize -respect-parenthesis -rotate \ + -sampling-factor -scenes -seed -set -shared-memory \ + -size -strip -title -transparent-color -treedepth \ + -trim -verbose -version -virtual-pixel -visual \ + -window' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug +dither +gamma +map +matte' \ + -- "$cur" ) ) + else + _filedir + fi +} +complete -F _animate animate + +_identify() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-alpha -antialias -authenticate \ + -channel -colorspace -crop -debug -define -density \ + -depth -extract -format -fuzz -gamma -help -interlace \ + -interpolate -limit -list -log -monitor -ping -quiet \ + -regard-warnings -respect-parenthesis \ + -sampling-factor -seed -set -size -strip -units \ + -verbose -version -virtual-pixel' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _identify identify + +_montage() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adjoin -affine -alpha \ + -authenticate -background -blue-primary -blur -border \ + -bordercolor -borderwidth -caption -channel -clone \ + -coalesce -colors -colorspace -comment -compose \ + -compress -crop -debug -define -density -depth \ + -display -dispose -dither -draw -encoding -endian \ + -extract -fill -filter -flatten -flip -flop -font \ + -format -frame -gamma -geometry -gravity \ + -green-primary -help -identify -interlace \ + -interpolate -label -limit -list -log -mattecolor \ + -mode -monitor -monochrome -origin -page -pointsize \ + -polaroid -profile -quality -quantize -quiet \ + -red-primary -regard-warnings -repage -resize \ + -respect-parenthesis -rotate -sampling-factor -scenes \ + -seed -set -shadow -size -strip -stroke -texture \ + -thumbnail -tile -title -transform -transparent \ + -transparent-color -treedepth -trim -type -units \ + -verbose -version -virtual-pixel \ + -white-point' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+adjoin +compress +debug +dither \ + +endian +gamma +label +matte +page' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _montage montage + +_composite() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-affine -alpha -authenticate \ + -blend -blue-primary -border -bordercolor -channel \ + -colors -colorspace -comment -compose -compress \ + -debug -decipher -define -density -depth -displace \ + -display -dispose -dissolve -dither -encipher \ + -encoding -endian -extract -filter -font -format \ + -geometry -gravity -green-primary -help -identify \ + -interlace -interpolate -label -limit -list -log \ + -monitor -monochrome -negate -page -profile -quality \ + -quantize -quiet -red-primary -regard-warnings \ + -repage -resize -respect-parenthesis -rotate \ + -sampling-factor -scene -seed -sharpen -shave -size \ + -stegano -stereo -strip -swap -thumbnail -tile \ + -transform -transparent-color -treedepth -type -units \ + -unsharp -verbose -version -virtual-pixel -watermark \ + -white-point -write' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+compress +debug +dither +endian +label \ + +matte +negate +page +write' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _composite composite + +_compare() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-alpha -authenticate -channel \ + -colorspace -compress -debug -decipher -define \ + -density -depth -encipher -extract -format -fuzz \ + -help -highlight-color -identify -interlace -limit \ + -list -log -metric -monitor -passphrase -profile \ + -quality -quantize -quiet -regard-warnings \ + -respect-parenthesis -sampling-factor -seed -set \ + -size -transparent-color -type -verbose -version \ + -virtual-pixel' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _compare compare + +_conjure() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-debug -help -list -log -monitor -quiet \ + -regard-warnings -seed -verbose -version' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _conjure conjure + +_import() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-adjoin -annotate -border -channel \ + -colors -colorspace -comment -compress -crop -debug \ + -define -delay -density -depth -descend -display \ + -dispose -dither -encipher -encoding -endian -filter \ + -format -frame -geometry -gravity -help -identify \ + -interlace -interpolate -label -limit -list -log \ + -monitor -monochrome -negate -page -pause -pointsize \ + -quality -quantize -quiet -regard-warnings -repage \ + -resize -respect-parenthesis -rotate -sampling-factor \ + -scene -screen -seed -set -silent -snaps -strip \ + -thumbnail -transparent -transparent-color -treedepth \ + -trim -type -verbose -version -virtual-pixel \ + -window' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _import import + +_stream() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _ImageMagick + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-authenticate -channel -colorspace \ + -compress -debug -define -density -depth -extract \ + -help -identify -interlace -interpolate -limit -list \ + -log -map -monitor -quantize -quiet -regard-warnings \ + -respect-parenthesis -sampling-factor -seed -set \ + -size -storage-type -transparent-color -verbose \ + -version -virtual-pixel' -- "$cur" ) ) + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W '+debug' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _stream stream +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/info b/completions/info new file mode 100644 index 00000000..367cadef --- /dev/null +++ b/completions/info @@ -0,0 +1,58 @@ +# bash completion for info + +have info && +_info() +{ + local cur i infopath + + COMPREPLY=() + _get_comp_words_by_ref cur + + _expand || return 0 + + # default completion if parameter contains / + if [[ "$cur" == */* ]]; then + _filedir + return 0 + fi + + infopath='/usr/share/info' + + if [ "${INFOPATH: -1:1}" == ':' ]; then + infopath=${INFOPATH}${infopath} + elif [ ${INFOPATH:+set} ]; then + infopath=$INFOPATH + fi + + infopath=$infopath: + if [ -n "$cur" ]; then + infopath="${infopath//://$cur* }" + else + infopath="${infopath//:// }" + fi + + # redirect stderr for when path doesn't exist + COMPREPLY=( $( eval command ls "$infopath" 2>/dev/null ) ) + # weed out directory path names and paths to info pages + COMPREPLY=( ${COMPREPLY[@]##*/?(:)} ) + # weed out info dir file + for (( i=0 ; i < ${#COMPREPLY[@]} ; ++i )); do + if [ "${COMPREPLY[$i]}" == 'dir' ]; then + unset COMPREPLY[$i]; + fi; + done + # strip suffix from info pages + COMPREPLY=( ${COMPREPLY[@]%.@(gz|bz2|xz|lzma)} ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) + + return 0 +} && +complete -F _info info + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ipmitool b/completions/ipmitool new file mode 100644 index 00000000..3a90eeb4 --- /dev/null +++ b/completions/ipmitool @@ -0,0 +1,214 @@ +# bash completion for ipmitool + +have ipmitool && { + +_ipmitool_singleline_help() +{ + COMPREPLY=( $( compgen -W "$( $1 $2 2>&1 | \ + sed -ne 's/[,\r]//g' -e 's/^.*[Cc]ommands://p' )" -- "$cur" ) ) +} + +_ipmitool() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h|-V|-p|-U|-e|-k|-y|-P|-m|-b|-t|-B|-T|-l) + return 0 + ;; + -d) + COMPREPLY=( $( compgen -W "$( \ + command ls -d /dev/ipmi* /dev/ipmi/* /dev/ipmidev/* \ + 2>/dev/null | sed -ne 's/^[^0-9]*\([0-9]\{1,\}\)/\1/p' )" \ + -- "$cur" ) ) + return 0 + ;; + -I) + COMPREPLY=( $( compgen -W "$( $1 -h 2>&1 | \ + sed -e '/^Interfaces:/,/^[[:space:]]*$/!d' \ + -ne 's/^[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*/\1/p' )" \ + -- "$cur" ) ) + return 0 + ;; + -H) + _known_hosts_real "$cur" + return 0 + ;; + -f|-S|-O) + _filedir + return 0 + ;; + -C) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10 11 12 13 14' \ + -- "$cur" ) ) + return 0 + ;; + -L) + COMPREPLY=( $( compgen -W 'CALLBACK USER OPERATOR ADMINISTRATOR' \ + -- "$cur" ) ) + return 0 + ;; + -A) + COMPREPLY=( $( compgen -W 'NONE PASSWORD MD2 MD5 OEM' -- "$cur" ) ) + return 0 + ;; + -o) + COMPREPLY=( $( compgen -W "$( $1 -o list 2>&1 | \ + awk '/^[ \t]+/ { print $1 }' ) list" -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h -V -v -c -d -I -H -p -U -f -S -a \ + -e -C -k -y -L -A -P -E -K -m -b -t -B -T -l -o -O' -- "$cur" ) ) + return 0 + fi + + # Find out command and subcommand + + local cmds=( raw i2c spd lan chassis power event mc sdr sensor fru gendev + sel pef sol tsol isol user channel session sunoem kontronoem picmg fwum + firewall shell exec set hpm ekanalyzer) + local i c cmd subcmd + for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do + [[ -n $cmd ]] && subcmd=${COMP_WORDS[i]} && break + for c in ${cmds[@]}; do + [ ${COMP_WORDS[i]} = $c ] && cmd=$c && break + done + done + + if [ -z "$cmd" ]; then + COMPREPLY=( $( compgen -W '${cmds[@]}' -- "$cur" ) ) + return 0 + fi + + # Command/subcommand completions + + case $cmd in + + shell) + ;; + + exec) + _filedir + ;; + + chassis|power|kontronoem|fwum) + _ipmitool_singleline_help $1 $cmd + ;; + + lan) + case $subcmd in + print|set) + ;; + alert) + [ "$prev" = alert ] && \ + COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) ) + ;; + stats) + [ "$prev" = stats ] && \ + COMPREPLY=( $( compgen -W 'print set' -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W 'print set alert stats' \ + -- "$cur" ) ) + ;; + esac + ;; + + sdr) + case $subcmd in + get|info|type|list|entity) + ;; + elist) + COMPREPLY=( $( compgen -W 'all full compact event mclog fru + generic' -- "$cur" ) ) + ;; + dump) + _filedir + ;; + fill) + case $prev in + fill) + COMPREPLY=( $( compgen -W 'sensors file' \ + -- "$cur" ) ) + ;; + file) + _filedir + ;; + esac + ;; + *) + COMPREPLY=( $( compgen -W 'get info type list elist entity + dump fill' -- "$cur" ) ) + ;; + esac + ;; + + sensor) + case $subcmd in + list|get|thresh) + ;; + *) + COMPREPLY=( $( compgen -W 'list get thresh' -- "$cur" ) ) + ;; + esac + ;; + + sel) + case $subcmd in + info|clear|list|elist|delete) + ;; + add|save|writeraw|readraw) + _filedir + ;; + time) + [ "$prev" = time ] && \ + COMPREPLY=( $( compgen -W 'get set' -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W 'info clear list elist delete add + get save writeraw readraw time' -- "$cur" ) ) + ;; + esac + ;; + + user) + case $subcmd in + summary|list|disable|enable|priv|test) + ;; + set) + [ "$prev" = set ] && \ + COMPREPLY=( $( compgen -W 'name password' -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W 'summary list set disable enable + priv test' -- "$cur" ) ) + ;; + esac + ;; + + set) + [ "$prev" = set ] && \ + COMPREPLY=( $( compgen -W 'hostname username password privlvl + authtype localaddr targetaddr port csv verbose' \ + -- "$cur" ) ) + ;; + + esac +} + +} && +complete -F _ipmitool ipmitool + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/iproute2 b/completions/iproute2 new file mode 100644 index 00000000..f5d7bbd9 --- /dev/null +++ b/completions/iproute2 @@ -0,0 +1,285 @@ +# iproute2 tools completion + +have ip && +_ip() +{ + COMPREPLY=() + local cur prev words cword + _get_comp_words_by_ref cur prev words cword + + case $prev in + -V|-Version|-rc|-rcvbuf) + return 0 + ;; + -f|-family) + COMPREPLY=( $( compgen -W 'inet inet6 ipx dnet link' -- "$cur" ) ) + return 0 + ;; + -b|-batch) + _filedir + return 0 + ;; + -force) + COMPREPLY=( $( compgen -W '-batch' -- "$cur" ) ) + return 0 + ;; + esac + + local subcword cmd subcmd + for (( subcword=1; subcword < ${#words[@]}-1; subcword++ )); do + [[ ${words[subcword]} == -b?(atch) ]] && return 0 + [[ -n $cmd ]] && subcmd=${words[subcword]} && break + [[ ${words[subcword]} != -* && \ + ${words[subcword-1]} != -@(f?(amily)|rc?(vbuf)) ]] && \ + cmd=${words[subcword]} + done + + if [[ -z $cmd ]]; then + case $cur in + -*) + local c="-Version -statistics -details -resolve -family + -oneline -timestamp -batch -rcvbuf" + [[ $cword -eq 1 ]] && c="$c -force" + COMPREPLY=( $( compgen -W "$c" -- "$cur" ) ) + return 0 + ;; + *) + COMPREPLY=( $( compgen -W "help $( ip help 2>&1 | \ + sed -e '/OBJECT := /,/}/!d' \ + -e 's/.*{//' -e 's/}.*//' -e 's/|//g' )" -- "$cur" ) ) + return 0 + ;; + esac + fi + + [[ $subcmd == help ]] && return 0 + + case $cmd in + link) + case $subcmd in + add) + # TODO + ;; + delete) + case $(($cword-$subcword)) in + 1) + _available_interfaces + ;; + 2) + COMPREPLY=( $( compgen -W 'type' -- "$cur" ) ) + ;; + 3) + [[ $prev == type ]] && \ + COMPREPLY=( $( compgen -W 'vlan veth vcan dummy + ifb macvlan can' -- "$cur" ) ) + ;; + esac + ;; + set) + if [[ $cword-$subcword -eq 1 ]]; then + _available_interfaces + else + case $prev in + arp|dynamic|multicast|allmulticast|promisc|\ + trailers) + COMPREPLY=( $( compgen -W 'on off' \ + -- "$cur" ) ) + ;; + txqueuelen|name|address|broadcast|mtu|netns|alias) + ;; + *) + local c="arp dynamic multicast allmulticast + promisc trailers txqueuelen name address + broadcast mtu netns alias" + [[ $prev != @(up|down) ]] && c="$c up down" + COMPREPLY=( $( compgen -W "$c" -- "$cur" ) ) + ;; + esac + fi + ;; + show) + [[ $cword -eq $subcword+1 ]] && _available_interfaces + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help add delete set show' \ + -- "$cur" ) ) + ;; + esac + ;; + + addr) + case $subcmd in + add|change|replace) + # TODO + ;; + del) + # TODO + ;; + show|flush) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help add change replace del + show flush' -- "$cur" ) ) + ;; + esac + ;; + + addrlabel) + case $subcmd in + list|add|del|flush) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help list add del flush' \ + -- "$cur" ) ) + ;; + esac + ;; + + route) + case $subcmd in + list|flush) + # TODO + ;; + get) + # TODO + ;; + add|del|change|append|replace|monitor) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help list flush get add del + change append replace monitor' -- "$cur" ) ) + ;; + esac + ;; + + rule) + case $subcmd in + list|add|del|flush) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help list add del flush' \ + -- "$cur" ) ) + ;; + esac + ;; + + neigh) + case $subcmd in + add|del|change|replace) + # TODO + ;; + show|flush) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help add del change replace + show flush' -- "$cur" ) ) + ;; + esac + ;; + + ntable) + case $subcmd in + change) + # TODO + ;; + show) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help change show' \ + -- "$cur" ) ) + ;; + esac + ;; + + tunnel) + case $subcmd in + add|change|del|show|prl|6rd) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help add change del show prl + 6rd' -- "$cur" ) ) + ;; + esac + ;; + + maddr) + case $subcmd in + add|del) + # TODO + ;; + show) + if [[ $cword -eq $subcword+1 || $prev == dev ]]; then + _available_interfaces + [[ $prev != dev ]] && \ + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} dev' \ + -- "$cur" ) ) + fi + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help add del show' \ + -- "$cur" ) ) + ;; + esac + ;; + + mroute) + case $subcmd in + show) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help show' -- "$cur" ) ) + ;; + esac + ;; + + monitor) + case $subcmd in + all) ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'help all' -- "$cur" ) ) + ;; + esac + ;; + + xfrm) + case $subcmd in + state|policy|monitor) + # TODO + ;; + *) + [[ $cword -eq $subcword ]] && \ + COMPREPLY=( $( compgen -W 'state policy monitor' \ + -- "$cur" ) ) + ;; + esac + ;; + esac +} && +complete -F _ip ip + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ipsec b/completions/ipsec new file mode 100644 index 00000000..acb8c995 --- /dev/null +++ b/completions/ipsec @@ -0,0 +1,51 @@ +# Linux ipsec(8) completion (for FreeS/WAN) +# +[ $UNAME = Linux ] && have ipsec && +_ipsec() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look manual \ + pluto ranbits rsasigkey setup showdefaults showhostkey spi spigrp \ + tncfg whack' -- "$cur" ) ) + return 0 + fi + + case ${COMP_WORDS[1]} in + auto) + COMPREPLY=( $( compgen -W '--asynchronous --up --add --delete \ + --replace --down --route --unroute \ + --ready --status --rereadsecrets' \ + -- "$cur" ) ) + ;; + manual) + COMPREPLY=( $( compgen -W '--up --down --route --unroute \ + --union' -- "$cur" ) ) + ;; + ranbits) + COMPREPLY=( $( compgen -W '--quick --continuous --bytes' \ + -- "$cur" ) ) + ;; + setup) + COMPREPLY=( $( compgen -W '--start --stop --restart' -- "$cur" ) ) + ;; + *) + ;; + esac + + return 0 +} && +complete -F _ipsec ipsec + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/iptables b/completions/iptables new file mode 100644 index 00000000..bd0e4622 --- /dev/null +++ b/completions/iptables @@ -0,0 +1,70 @@ +# bash completion for iptables + +have iptables && +_iptables() +{ + local cur prev table chain + + COMPREPLY=() + _get_comp_words_by_ref cur prev + chain='s/^Chain \([^ ]\{1,\}\).*$/\1/p' + + if [[ $COMP_LINE == *-t\ *filter* ]]; then + table="-t filter" + elif [[ $COMP_LINE == *-t\ *nat* ]]; then + table="-t nat" + elif [[ $COMP_LINE == *-t\ *mangle* ]]; then + table="-t mangle" + fi + + _split_longopt + + case $prev in + -*[AIDRPFXLZ]) + COMPREPLY=( $( compgen -W '`iptables $table -nL | \ + sed -ne "s/^Chain \([^ ]\{1,\}\).*$/\1/p"`' -- "$cur" ) ) + ;; + -*t) + COMPREPLY=( $( compgen -W 'nat filter mangle' -- "$cur" ) ) + ;; + -j) + if [[ "$table" == "-t filter" || -z "$table" ]]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + `iptables $table -nL | sed -ne "$chain" \ + -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ + "$cur" ) ) + elif [ "$table" = "-t nat" ]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + MIRROR SNAT DNAT MASQUERADE `iptables $table -nL | \ + sed -ne "$chain" -e "s/OUTPUT|PREROUTING|POSTROUTING//"`' \ + -- "$cur" ) ) + elif [ "$table" = "-t mangle" ]; then + COMPREPLY=( $( compgen -W 'ACCEPT DROP LOG ULOG REJECT \ + MARK TOS `iptables $table -nL | sed -ne "$chain" \ + -e "s/INPUT|OUTPUT|FORWARD|PREROUTING|POSTROUTING//"`' -- \ + "$cur" ) ) + fi + ;; + *) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--in-interface --out-interface --source \ + --destination --protocol --fragment --match --append \ + --delete --insert --replace --list --flush --zero --new \ + --delete-chain --policy --rename-chain --proto --source \ + --destination --in-interface --jump --match --numeric \ + --out-interface --table --verbose --line-numbers --exact \ + --fragment --modprobe --set-counters --version' -- "$cur") ) + fi + ;; + esac + +} && +complete -F _iptables iptables + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ipv6calc b/completions/ipv6calc new file mode 100644 index 00000000..20e810df --- /dev/null +++ b/completions/ipv6calc @@ -0,0 +1,57 @@ +have ipv6calc && +_ipv6calc() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref -n = cur prev + #cur=`_get_cword =` + #prev=`_get_pword` + + _split_longopt && split=true + + case "$prev" in + -d|--debug) + return 0 + ;; + -I|--in|-O|--out|-A|--action) + # With ipv6calc < 0.73.0, -m does nothing here, so use sed instead. + COMPREPLY=( $( compgen -W "$( ipv6calc "$prev" -h 2>&1 | \ + sed -ne 's/^[[:space:]]\{1,\}\([^[:space:]:]\{1,\}\)[[:space:]]*:.*/\1/p' )" \ + -- "$cur" ) ) + return 0 + ;; + --db-geoip|--db-ip2location-ipv4|--db-ip2location-ipv6) + _filedir + return 0 + ;; + --printstart|--printend) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --debug --quiet --in \ + --out --action --examples --showinfo --show_types \ + --machine_readable --db-geoip --db-geoip-default \ + --db-ip2location-ipv4 --db-ip2location-ipv6 \ + --lowercase --uppercase --printprefix --printsuffix \ + --maskprefix --masksuffix --printstart --printend \ + --printcompressed --printuncompressed \ + --printfulluncompressed --printmirrored' -- "$cur" ) ) + return 0 + fi + + return 0 +} && +complete -F _ipv6calc ipv6calc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/isql b/completions/isql new file mode 100644 index 00000000..f0ddbd75 --- /dev/null +++ b/completions/isql @@ -0,0 +1,20 @@ +# isql completion by Victor Bogado da Silva Lins <victor@bogado.net> + +have isql && +_isql() +{ + local cur + _get_comp_words_by_ref cur + + [ -f "$ODBCINI" ] \ + && COMPREPLY=( $( command grep \\["$cur" "$ODBCINI" | tr -d \\[\\] ) ) +} && +complete -F _isql isql + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/jar b/completions/jar new file mode 100644 index 00000000..d703019d --- /dev/null +++ b/completions/jar @@ -0,0 +1,36 @@ +# jar(1) completion + +have jar && +_jar() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD = 1 ]; then + COMPREPLY=( $( compgen -W 'c t x u' -- "$cur" ) ) + return 0 + fi + + case ${COMP_WORDS[1]} in + *c*f) + _filedir + ;; + *f) + _filedir '@([ejw]ar|zip|apk)' + ;; + *) + _filedir + ;; + esac +} && +complete -F _jar jar + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/java b/completions/java new file mode 100644 index 00000000..460ae285 --- /dev/null +++ b/completions/java @@ -0,0 +1,533 @@ +# bash completion for java, javac and javadoc + +# available path elements completion +have java || have javac || have javadoc && +_java_path() +{ + cur=${cur##*:} + _filedir '@(jar|zip)' +} + +have java || have javadoc && { +# exact classpath determination +_java_find_classpath() +{ + local i + + # search first in current options + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(cp|classpath) ]]; then + classpath=${COMP_WORDS[i+1]} + break + fi + done + + # default to environment + [ -z "$classpath" ] && classpath=$CLASSPATH + + # default to current directory + [ -z "$classpath" ] && classpath=. +} + +# exact sourcepath determination +_java_find_sourcepath() +{ + local i + + # search first in current options + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -sourcepath ]]; then + sourcepath=${COMP_WORDS[i+1]} + break + fi + done + + # default to classpath + if [ -z "$sourcepath" ]; then + _java_find_classpath + sourcepath=$classpath + fi +} + +# available classes completion +_java_classes() +{ + local classpath i + + # find which classpath to use + _java_find_classpath + + # convert package syntax to path syntax + cur=${cur//.//} + # parse each classpath element for classes + for i in ${classpath//:/ }; do + if [[ "$i" == *.@(jar|zip) && -r $i ]]; then + if type zipinfo &>/dev/null; then + COMPREPLY=( "${COMPREPLY[@]}" $( zipinfo -1 \ + "$i" "$cur*" 2>/dev/null | \ + command grep '^[^$]*\.class$' ) ) + else + COMPREPLY=( "${COMPREPLY[@]}" $( jar tf "$i" \ + "$cur" | command grep '^[^$]*\.class$' ) ) + fi + + elif [ -d $i ]; then + # Intentionally looking for *.class only in $i (not subdirs), + # see Debian bug #496828. + COMPREPLY=( "${COMPREPLY[@]}" + $( command ls $i/$cur*.class 2>/dev/null | \ + sed -ne '/\$/d' -e "s|^$i//*||p" ) ) + + # FIXME: if we have foo.class and foo/, the completion + # returns "foo/"... how to give precedence to files + # over directories? + fi + done + + # remove class extension + COMPREPLY=( ${COMPREPLY[@]%.class} ) + # convert path syntax to package syntax + COMPREPLY=( ${COMPREPLY[@]//\//.} ) +} + +# available packages completion +_java_packages() +{ + local sourcepath i + + # find which sourcepath to use + _java_find_sourcepath + + # convert package syntax to path syntax + cur=${cur//.//} + # parse each sourcepath element for packages + for i in ${sourcepath//:/ }; do + if [ -d $i ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -F -d \ + $i/$cur* 2>/dev/null | sed -e 's|^'$i'/||' ) ) + fi + done + # keep only packages + COMPREPLY=( $( tr " " "\n" <<<"${COMPREPLY[@]}" | command grep "/$" ) ) + # remove packages extension + COMPREPLY=( ${COMPREPLY[@]%/} ) + # convert path syntax to package syntax + cur=${COMPREPLY[@]//\//.} +} +} + +# java completion +# +have java && +_java() +{ + local cur prev words cword i + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev words cword + + for ((i=1; i < $cword; i++)); do + case ${words[$i]} in + -cp|-classpath) + ((i++)) # skip the classpath string. + ;; + -*) + # this is an option, not a class/jarfile name. + ;; + *) + # once we've seen a class, just do filename completion + _filedir + return 0 + ;; + esac + done + + case $cur in + # standard option completions + -verbose:*) + COMPREPLY=( $( compgen -W 'class gc jni' -- "${cur#*:}" ) ) + return 0 + ;; + -javaagent:*) + cur=${cur#*:} + _filedir '@(jar|zip)' + return 0 + ;; + -agentpath:*) + cur=${cur#*:} + _filedir so + return 0 + ;; + # various non-standard option completions + -splash:*) + cur=${cur#*:} + _filedir '@(gif|jp?(e)g|png)' + return 0 + ;; + -Xbootclasspath*:*) + _java_path + return 0 + ;; + -Xcheck:*) + COMPREPLY=( $( compgen -W 'jni' -- "${cur#*:}" ) ) + return 0 + ;; + -Xgc:*) + COMPREPLY=( $( compgen -W 'singlecon gencon singlepar genpar' \ + -- "${cur#*:}" ) ) + return 0 + ;; + -Xgcprio:*) + COMPREPLY=( $( compgen -W 'throughput pausetime deterministic' \ + -- "${cur#*:}" ) ) + return 0 + ;; + -Xloggc:*|-Xverboselog:*) + cur=${cur#*:} + _filedir + return 0 + ;; + -Xshare:*) + COMPREPLY=( $( compgen -W 'auto off on' -- "${cur#*:}" ) ) + return 0 + ;; + -Xverbose:*) + COMPREPLY=( $( compgen -W 'memory load jni cpuinfo codegen opt + gcpause gcreport' -- "${cur#*:}" ) ) + return 0 + ;; + -Xverify:*) + COMPREPLY=( $( compgen -W 'all none remote' -- "${cur#*:}" ) ) + return 0 + ;; + # the rest that we have no completions for + -D*|-*:*) + return 0 + ;; + esac + + case $prev in + -cp|-classpath) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # standard options + COMPREPLY=( $( compgen -W '-client -server -agentlib: -agentpath: + -classpath -D -d32 -d64 -enableassertions -disableassertions + -enablesystemassertions -disablesystemassertions -jar -javaagent: + -verbose -verbose -version -showversion -help -X' -- "$cur" ) ) + else + if [[ "$prev" == -jar ]]; then + # jar file completion + _filedir jar + else + # classes completion + _java_classes + fi + fi + + [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == -*[:=] ]] && \ + type compopt &>/dev/null && compopt -o nospace + + __ltrim_colon_completions "$cur" +} && +complete -F _java java + +have javadoc && +_javadoc() +{ + COMPREPLY=() + local cur prev classpath + + _get_comp_words_by_ref cur prev + + case $prev in + -overview|-helpfile) + _filedir '?(x)htm?(l)' + return 0 + ;; + -stylesheetfile) + _filedir css + return 0 + ;; + -d|-link|-linkoffline) + # TODO: -linkoffline takes two arguments + _filedir -d + return 0 + ;; + -classpath|-bootclasspath|-docletpath|-sourcepath|-extdirs) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-overview -public -protected \ + -package -private -help -doclet -docletpath \ + -sourcepath -classpath -exclude -subpackages \ + -breakiterator -bootclasspath -source -extdirs \ + -verbose -locale -encoding -J -d -use -version \ + -author -docfilessubdirs -splitindex \ + -windowtitle -doctitle -header -footer -bottom \ + -link -linkoffline -excludedocfilessubdir \ + -group -nocomment -nodeprecated -noqualifier \ + -nosince -nodeprecatedlist -notree -noindex \ + -nohelp -nonavbar -quiet -serialwarn -tag \ + -taglet -tagletpath -charset -helpfile \ + -linksource -stylesheetfile -docencoding' -- "$cur" ) ) + else + # source files completion + _filedir java + # packages completion + _java_packages + fi +} && +complete -F _javadoc javadoc + +have javac && +_javac() +{ + COMPREPLY=() + local cur prev + + _get_comp_words_by_ref cur prev + + case $prev in + -d) + _filedir -d + return 0 + ;; + -classpath|-bootclasspath|-sourcepath|-extdirs) + _java_path + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-g -g:none -g:lines -g:vars \ + -g:source -O -nowarn -verbose -deprecation -classpath \ + -sourcepath -bootclasspath -extdirs -d -encoding -source \ + -target -help' -- "$cur" ) ) + else + # source files completion + _filedir java + fi +} && +complete -F _javac javac + +have pack200 && +_pack200() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -S|--segment-limit|-P|--pass-file|-C|--class-attribute|\ + -F|--field-attribute|-M|--method-attribute|-D|--code-attribute|\ + '-?'|-h|--help|-V|--version|-J) + return 0 + ;; + -E|--effort) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + -H|--deflate-hint) + COMPREPLY=( $( compgen -W 'true false keep' -- "$cur" ) ) + return 0 + ;; + -m|--modification-time) + COMPREPLY=( $( compgen -W 'latest keep' -- "$cur" ) ) + return 0 + ;; + -U|--unknown-attribute) + COMPREPLY=( $( compgen -W 'error strip pass' -- "$cur" ) ) + return 0 + ;; + -f|--config-file) + _filedir properties + return 0 + ;; + -l|--log-file) + COMPREPLY=( $( compgen -W '-' -- "$cur" ) ) + _filedir log + return 0 + ;; + -r|--repack) + _filedir jar + return 0 + ;; + esac + + # Check if a pack or a jar was already given. + local i pack=false jar=false + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do + case ${COMP_WORDS[i]} in + *.pack|*.pack.gz) pack=true ;; + *.jar) jar=true ;; + esac + done + + if ! $pack ; then + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '--no-gzip --gzip --strip-debug \ + --no-keep-file-order --segment-limit= --effort= \ + --deflate-hint= --modification-time= --pass-file= \ + --unknown-attribute= --class-attribute= --field-attribute= \ + --method-attribute= --code-attribute= --config-file= \ + --verbose --quiet --log-file= --help --version -J \ + --repack' -- "$cur" ) ) + [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && \ + type compopt &>/dev/null && compopt -o nospace + else + _filedir 'pack?(.gz)' + fi + elif ! $jar ; then + _filedir jar + fi +} && +complete -F _pack200 pack200 + +have unpack200 && +_unpack200() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + '-?'|-h|--help|-V|--version|-J) + return 0 + ;; + -H|--deflate-hint) + COMPREPLY=( $( compgen -W 'true false keep' -- "$cur" ) ) + return 0 + ;; + -l|--log-file) + COMPREPLY=( $( compgen -W '-' -- "$cur" ) ) + _filedir log + return 0 + ;; + esac + + # Check if a pack or a jar was already given. + local i pack=false jar=false + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do + case ${COMP_WORDS[i]} in + *.pack|*.pack.gz) pack=true ;; + *.jar) jar=true ;; + esac + done + + if ! $pack ; then + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '--deflate-hint= --remove-pack-file \ + --verbose --quiet --log-file= --help --version' -- "$cur" ) ) + [[ ${#COMPREPLY[@]} -eq 1 && ${COMPREPLY[0]} == *= ]] && \ + type compopt &>/dev/null && compopt -o nospace + else + _filedir 'pack?(.gz)' + fi + elif ! $jar ; then + _filedir jar + fi +} && +complete -F _unpack200 unpack200 + +have jarsigner && +_jarsigner() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -keystore) + COMPREPLY=( $( compgen -W 'NONE' -- "$cur" ) ) + _filedir '@(jks|ks|p12|pfx)' + return 0 + ;; + -storepass|-keypass|-sigfile|-digestalg|-sigalg|-tsacert|-altsigner|\ + -altsignerpath|-providerName|-providerClass|-providerArg) + return 0 + ;; + -storetype) + COMPREPLY=( $( compgen -W 'JKS PKCS11 PKCS12' -- "$cur" ) ) + return 0 + ;; + -signedjar) + _filedir jar + return 0 + ;; + -tsa) + _filedir + return 0 + ;; + esac + + # Check if a jar was already given. + local i jar=false + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )) ; do + if [[ "${COMP_WORDS[i]}" == *.jar && \ + "${COMP_WORDS[i-1]}" != -signedjar ]] ; then + jar=true + break + fi + done + + if ! $jar ; then + if [[ "$cur" == -* ]] ; then + # Documented as "should not be used": -internalsf, -sectionsonly + COMPREPLY=( $( compgen -W '-keystore -storepass -storetype \ + -keypass -sigfile -signedjar -digestalg -sigalg -verify \ + -verbose -certs -tsa -tsacert -altsigner -altsignerpath \ + -protected -providerName -providerClass -providerArg' \ + -- "$cur" ) ) + fi + _filedir jar + fi +} && +complete -F _jarsigner jarsigner + +have javaws && +_javaws() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -help|-license|-about|-viewer|-arg|-param|-property|-update|-umask) + return 0 + ;; + -basedir|-codebase) + _filedir -d + return 0 + ;; + -uninstall|-import) + _filedir jnlp + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W "$( _parse_help "$1" -help ) " -- "$cur" ) ) + return 0 + fi + + _filedir jnlp +} && +complete -F _javaws javaws + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/k3b b/completions/k3b new file mode 100644 index 00000000..1965717b --- /dev/null +++ b/completions/k3b @@ -0,0 +1,55 @@ +# bash completion for k3b + +have k3b && +_k3b() +{ + local cur prev + _get_comp_words_by_ref cur prev + COMPREPLY=() + + case $prev in + --help*|--author|-v|--version|--license|--lang) + return 0 + ;; + --datacd|--audiocd|--videocd|--mixedcd|--emovixcd|--videodvd) + _filedir + return 0 + ;; + --copydvd|--formatdvd|--videodvdrip) + _dvd_devices + return 0 + ;; + --copycd|--erasecd|--cddarip|--videocdrip) + _cd_devices + _dvd_devices + return 0 + ;; + --cdimage|--image) + _filedir @(cue|iso|toc) + return 0 + ;; + --dvdimage) + _filedir iso + return 0 + ;; + --ao) + COMPREPLY=( $( compgen -W 'alsa arts' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W "$( _parse_help "$1" )" -- "$cur" ) ) + else + _filedir + fi +} && +complete -F _k3b k3b + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/kldload b/completions/kldload new file mode 100644 index 00000000..e5bce0a3 --- /dev/null +++ b/completions/kldload @@ -0,0 +1,40 @@ +# bash completion for FreeBSD kernel module commands + +[ $UNAME = FreeBSD ] && +{ + +_kldload() +{ + local cur moddir + + moddir=/modules/ + [ -d $moddir ] || moddir=/boot/kernel/ + _get_comp_words_by_ref cur + + _compopt_o_filenames + COMPREPLY=( $( compgen -f "$moddir$cur" ) ) + COMPREPLY=( ${COMPREPLY[@]#$moddir} ) + COMPREPLY=( ${COMPREPLY[@]%.ko} ) + + return 0 +} +complete -F _kldload kldload + +_kldunload() +{ + local cur + _get_comp_words_by_ref cur + COMPREPLY=( $( kldstat | \ + sed -ne "s/^.*[ \t]\{1,\}\($cur[a-z_]\{1,\}\).ko$/\1/p" ) ) +} +complete -F _kldunload kldunload + +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/larch b/completions/larch new file mode 100644 index 00000000..e58374f7 --- /dev/null +++ b/completions/larch @@ -0,0 +1,48 @@ +# larch(1) completion by Alex Shinn <foof@synthcode.com> + +have larch && +_larch() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then + COMPREPLY=( $( compgen -W ' \ + my-id my-default-archive register-archive whereis-archive archives \ + init-tree tree-root tree-version set-tree-version inventory \ + tagging-method tree-lint missing-tags add delete \ + move explicit-default set-manifest manifest check-manifest mkpatch \ + dopatch patch-report empty-patch make-archive make-category \ + make-branch make-version categories branches versions revisions \ + cat-archive-log archive-cache-revision archive-cached-revisions \ + archive-uncache-revision category-readme branch-readme \ + version-readme make-log logs add-log log-ls cat-log \ + log-header-field changelog log-for-merge merge-points \ + new-on-branch import commit get get-patch lock-branch \ + lock-revision push-mirror build-config update-config replay-config \ + record-config show-config config-history update replay delta-patch \ + star-merge tag prepare-branch finish-branch join-branch \ + whats-missing what-changed file-diffs pristines lock-pristine \ + my-revision-library library-find library-add library-remove \ + library-archives library-categories library-branches \ + library-versions library-revisions library-log library-file \ + touched-files-prereqs patch-set-web update-distributions \ + distribution-name notify my-notifier mail-new-categories \ + mail-new-branches mail-new-versions mail-new-revisions \ + notify-library notify-browser push-new-revisions sendmail-mailx' \ + "$cur" )) + fi + + return 0 +} && +complete -F _larch -o default larch + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ldapvi b/completions/ldapvi new file mode 100644 index 00000000..31e26d1c --- /dev/null +++ b/completions/ldapvi @@ -0,0 +1,72 @@ +# bash completion for ldapvi + +have ldapvi && +_ldapvi() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h|--host) + _known_hosts_real "$cur" + return 0 + ;; + -Y|--sasl-mech) + COMPREPLY=( $( compgen -W 'EXTERNAL GSSAPI DIGEST-MD5 \ + CRAM-MD5 PLAIN ANONYMOUS' -- "$cur" ) ) + return 0 + ;; + --bind) + COMPREPLY=( $( compgen -W 'simple sasl' -- "$cur" ) ) + return 0 + ;; + --bind-dialog) + COMPREPLY=( $( compgen -W 'never auto always' -- $cur ) ) + return 0 + ;; + --scope) + COMPREPLY=( $( compgen -W 'base one sub' -- "$cur" ) ) + return 0 + ;; + --deref) + COMPREPLY=( $( compgen -W 'never searching finding always' \ + -- "$cur" ) ) + return 0 + ;; + --encoding) + COMPREPLY=( $( compgen -W 'ASCII UTF-8 binary' -- "$cur" ) ) + return 0 + ;; + --tls) + COMPREPLY=( $( compgen -W 'never allow try strict' \ + -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--discover --out --in --delete \ + --rename -h --host -D --user -w --password --bind \ + --bind-dialog -I --sasl-interactive --bind-dialog -O \ + --sasl-secprops -Q --sasl-quiet -R --sasl-realm -U \ + --sasl-authcid -X --sasl-authzid -Y --sasl-mech -b \ + --base -s --scope -S --sort --add -o --class --config \ + -c --continue --deleteoldrdn -a --deref -d --discover \ + -A --empty --ncoding -H --help --ldap-conf -m --may -M \ + --managedsait --noquestions -! --noninteractive -q \ + --quiet -R --read -Z --starttls --tls -v --verbose \ + --ldapsearch --ldapmodify --ldapdelete --ldapmoddn' \ + -- "$cur" ) ) + fi +} && +complete -F _ldapvi ldapvi + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lftp b/completions/lftp new file mode 100644 index 00000000..1de87aec --- /dev/null +++ b/completions/lftp @@ -0,0 +1,52 @@ +# bash completion for lftp + +have lftp && +_lftp() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f) + _filedir + return 0 + ;; + -c|-h|--help|-v|--version|-e|-u|-p) + return 0 + ;; + esac + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-f -c --help --version -e -u -p' \ + -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -W \ + '$( cut -f 1 -s ~/.lftp/bookmarks 2>/dev/null )' -- "$cur" ) ) + _known_hosts_real "$cur" +} && +complete -F _lftp lftp + +have lftpget && +_lftpget() +{ + COMPREPLY=() + local cur + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-c -d -v' -- "$cur" ) ) + fi +} && +complete -F _lftpget lftpget + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lilo b/completions/lilo new file mode 100644 index 00000000..ab0d9dc3 --- /dev/null +++ b/completions/lilo @@ -0,0 +1,60 @@ +# bash completion for lilo(8) + +have lilo && { +_lilo_labels() +{ + COMPREPLY=( $( compgen -W "$( awk -F'=' '/label/ {print $2}' \ + /etc/lilo.conf | sed -e 's/\"//g' )" -- "$cur" ) ) +} + +_lilo() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -C|-i|-m|-s|-S) + _filedir + return 0 + ;; + -r) + _filedir -d + return 0 + ;; + -I|-D|-R) + # label completion + _lilo_labels + return 0 + ;; + -A|-b|-M|-u|-U) + # device completion + cur=${cur:=/dev/} + _filedir + return 0 + ;; + -T) + # topic completion + COMPREPLY=( $( compgen -W 'help ChRul EBDA geom geom= \ + table= video' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # relevant options completion + COMPREPLY=( $( compgen -W '-A -b -c -C -d -f -g -i -I -l -L -m \ + -M -p -P -q -r -R -s -S -t -T -u -U -v -V -w -x -z' -- "$cur" ) ) + fi +} +complete -F _lilo lilo +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/links b/completions/links new file mode 100644 index 00000000..9b7b50f0 --- /dev/null +++ b/completions/links @@ -0,0 +1,43 @@ +# bash completion for links + +have links && +_links() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + case $cur in + --*) + COMPREPLY=( $( compgen -W '--help' -- "$cur" ) ) + ;; + -*) + COMPREPLY=( $( compgen -W '-async-dns -max-connections \ + -max-connections-to-host -retries -receive-timeout \ + -unrestartable-receive-timeout -format-cache-size \ + -memory-cache-size -http-proxy -ftp-proxy -download-dir \ + -assume-codepage -anonymous -dump -no-connect \ + -source -version -help' -- "$cur" ) ) + ;; + *) + if [ -r ~/.links/links.his ]; then + COMPREPLY=( $( compgen -W '$( < ~/.links/links.his )' \ + -- "$cur" ) ) + fi + _filedir '@(htm|html)' + return 0 + ;; + esac + + return 0 +} && +complete -F _links links + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lintian b/completions/lintian new file mode 100644 index 00000000..e2237893 --- /dev/null +++ b/completions/lintian @@ -0,0 +1,186 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for lintian(1) and lintian-info(1) + +have lintian && { +_lintian_tags() { + local match search tags + + tags=$( grep -e ^Tag /usr/share/lintian/checks/*.desc | cut -d\ -f2 ) + if [[ "$cur" == *, ]]; then + search=${cur//,/ } + for item in $search; do + match=$(grep -nE "^Tag: $item$" /usr/share/lintian/checks/*.desc \ + | cut -d: -f1 ) + tags=$( echo $tags | sed -e "s/\<$item\>//g" ) + done + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags") ) + elif [[ "$cur" == *,* ]]; then + COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$tags" -- \ + "${cur##*,}") ) + else + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$tags" -- "$cur") ) + fi + return 0 +} + +_lintian_checks() { + local match search todisable checks + + checks=$(grep -e ^Check-Script -e ^Abbrev \ + /usr/share/lintian/checks/*.desc | cut -d\ -f2 ) + if [[ "$cur" == *, ]]; then + search=${cur//,/ } + for item in $search; do + match=$(grep -nE "^(Check-Script|Abbrev): $item$" \ + /usr/share/lintian/checks/*.desc | cut -d: -f1 ) + todisable=$(grep -e ^Check-Script -e ^Abbrev $match | \ + cut -d\ -f2 ) + for name in $todisable; do + checks=$( echo $checks | sed -e "s/\<$name\>//g" ) + done + done + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks") ) + elif [[ "$cur" == *,* ]]; then + COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$checks" \ + -- "${cur##*,}") ) + else + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$checks" -- "$cur") ) + fi + return 0 +} + +_lintian_infos() { + local match search infos + + infos=$(grep -e ^Collector /usr/share/lintian/collection/*.desc \ + | cut -d\ -f2 ) + if [[ "$cur" == *, ]]; then + search=${cur//,/ } + for item in $search; do + match=$( grep -nE "^Collector: $item$" \ + /usr/share/lintian/collection/*.desc | cut -d: -f1 ) + infos=$( echo $infos | sed -e "s/\<$item\>//g" ) + done + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos") ) + elif [[ "$cur" == *,* ]]; then + COMPREPLY=( ${COMPREPLY[@]} $(compgen -P "${cur%,*}," -W "$infos" \ + -- "${cur##*,}") ) + else + COMPREPLY=( ${COMPREPLY[@]} $(compgen -W "$infos" -- "$cur") ) + fi + return 0 +} + +_lintian_arches() { + return 0 +} + +_lintian() { + local cur prev action lint_actions general_opts behaviour_opts \ + configuration_opts selection_opts + + _get_comp_words_by_ref cur prev + + lint_actions="--setup-lab --remove-lab --check --check-part --tags \ + --tags-from-file --ftp-master-rejects --dont-check-part \ + --unpack --remove" + general_opts="--help --version --print-version --verbose --debug --quiet" + behaviour_opts="--info --display-info --display-experimental --pedantic \ + --display-level --suppress-tags --unpack-level \ + --suppress-tags-from-file --no-override --show-overrides \ + --color --unpack-info --md5sums --checksums --allow-root \ + --fail-on-warnings --keep-lab" + configuration_opts="--cfg --lab --archivedir --dist --area --section \ + --arch --root" + selection_opts="--all --binary --source --udeb --packages-file" + + if [[ "$prev" = -* ]]; then + case $prev in + -C|--check-part|-X|--dont-check-part) + _lintian_checks + ;; + -T|--tags|--suppress-tags) + _lintian_tags + ;; + --tags-from-file|--suppress-tags-from-file|--cfg|-p|\ + --packages-file) + _filedir + ;; + --lab|--archivedir|--dist|--root) + _filedir -d + ;; + -l|--unpack-level) + COMPREPLY=($(compgen -W "0 none 1 basic 2 contents" -- \ + "$cur")) + ;; + --color) + COMPREPLY=($(compgen -W "never always auto html" -- "$cur")) + ;; + -U|--unpack-info) + _lintian_infos + ;; + --area|--section) + COMPREPLY=($(compgen -W "main contrib non-free" -- "$cur")) + ;; + --arch) + ;; + esac + fi + + case "$cur" in + --*) + COMPREPLY=($(compgen -W "$lint_actions $general_opts \ + $behaviour_opts $configuration_opts" -- "$cur")) + ;; + *,) + # If we're here, the user is trying to complete on + # --action tag,tag,<TAB> + # Only few actions permit that, re-complete them now. + echo $prev + case "$prev" in + -C|--check-part|-X|--dont-check-part) + _lintian_checks + ;; + -T|--tags|--suppress-tags) + _lintian_tags + ;; + -U|--unpack-info) + _lintian_infos + ;; + esac + ;; + *) + _filedir '@(?(u)deb|changes|dsc)' + ;; + esac + return 0 +} + +_lintian_info() { + local cur prev + + _get_comp_words_by_ref cur prev + + case "$prev" in + -t|--tags) + _lintian_tags + return 0 + ;; + esac + + case "$cur" in + --*) + COMPREPLY=($(compgen -W "--annotate --help --tags" -- "$cur")) + ;; + *) + _filedir + ;; + esac + return 0 +} + +complete -F _lintian lintian +complete -F _lintian_info lintian-info +} diff --git a/completions/lisp b/completions/lisp new file mode 100644 index 00000000..ee43a019 --- /dev/null +++ b/completions/lisp @@ -0,0 +1,31 @@ +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +have lisp && +_lisp() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-core -lib -batch -quit -edit -eval -init \ + -dynamic-space-size -hinit -noinit -nositeinit -load -slave ' \ + -- "$cur" ) ) + else + _filedir + fi + + return 0 +} && +complete -F _lisp -o default lisp + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lrzip b/completions/lrzip new file mode 100644 index 00000000..5cde88a8 --- /dev/null +++ b/completions/lrzip @@ -0,0 +1,64 @@ +# lrzip(1) completion + +have lrzip && +_lrzip() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* && $prev != -N ]]; then + COMPREPLY=( $( compgen -W '-w -d -o -O -S -f -D -q -L -n -l -b -g -M \ + -T -N -v -vv -V -h' -- "$cur" ) ) + return 0 + fi + + local xspec="*.lrz" + + case $prev in + -w|-S|-V|-h) + return 0 + ;; + -d) + xspec="!"$xspec + ;; + -o) + _filedir + return 0 + ;; + -O) + _filedir -d + return 0 + ;; + -L) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + -T) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9 10' -- "$cur" ) ) + return 0 + ;; + -N) + COMPREPLY=( $( compgen -W '-20 -19 -18 -17 -16 -15 -14 -13 -12 \ + -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 11 \ + 12 13 14 15 16 17 18 19' -- "$cur" ) ) + return 0 + ;; + esac + + _expand || return 0 + + local IFS=$'\n' + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _lrzip lrzip + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lsof b/completions/lsof new file mode 100644 index 00000000..ac010dad --- /dev/null +++ b/completions/lsof @@ -0,0 +1,64 @@ +# lsof(8) completion + +have lsof && +_lsof() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -'?'|-h|+c|-c|-d|-F|-i|+r|-r|-s|-S|-T) + return 0 + ;; + -A|-k|-m|+m|-o) + _filedir + return 0 + ;; + +d|+D) + _filedir -d + return 0 + ;; + -D) + COMPREPLY=( $( compgen -W '? b i r u' -- "$cur" ) ) + return 0 + ;; + -f) + COMPREPLY=( $( compgen -W 'c f g G n' -- "$cur" ) ) + return 0 + ;; + -g) + # TODO: handle ^foo exclusions, comma separated lists + _pgids + return 0 + ;; + -p) + # TODO: handle ^foo exclusions, comma separated lists + _pids + return 0 + ;; + -u) + # TODO: handle ^foo exclusions, comma separated lists + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == [-+]* ]]; then + COMPREPLY=( $( compgen -W '-h -a -A -b -c +c -C +d -d +D -D +f -f -F -g + -i -k -l +L -L +m -m +M -M -n -N -o -O -p -P +r -r -R -s -S -T -t + -u -U -v -V +w -w -x -X -z -Z' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _lsof lsof + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lvm b/completions/lvm new file mode 100644 index 00000000..f4d3b77d --- /dev/null +++ b/completions/lvm @@ -0,0 +1,1094 @@ +# bash completion for lvm + +have lvm && { +_volumegroups() +{ + COMPREPLY=( $(compgen -W "$( vgscan 2>/dev/null | \ + sed -n -e 's|.*Found.*"\(.*\)".*$|\1|p' )" -- "$cur" ) ) +} + +_physicalvolumes() +{ + COMPREPLY=( $(compgen -W "$( pvscan 2>/dev/null | \ + sed -n -e 's|^.*PV \(.*\) VG.*$|\1|p' )" -- "$cur" ) ) +} + +_logicalvolumes() +{ + COMPREPLY=( $(compgen -W "$( lvscan 2>/dev/null | \ + sed -n -e "s|^.*'\(.*\)'.*$|\1|p" )" -- "$cur" ) ) +} + +_units() +{ + COMPREPLY=( $( compgen -W 'h s b k m g t H K M G T' -- "$cur" ) ) +} + +_sizes() +{ + COMPREPLY=( $( compgen -W 'k K m M g G t T' -- "$cur" ) ) +} + +_args() +{ + args=0 + if [[ "${COMP_WORDS[0]}" == lvm ]]; then + offset=2 + else + offset=1 + fi + for (( i=$offset; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" != -* ]]; then + args=$(($args + 1)) + fi + done +} + +_lvmdiskscan() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --help \ + --lvmpartition --verbose --version' -- "$cur" ) ) + fi +} +complete -F _lvmdiskscan lvmdiskscan + +_pvscan() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --exported --novolumegroup \ + --help --ignorelockingfailure --partial --short --uuid \ + --verbose --version' -- "$cur" ) ) + fi +} +complete -F _pvscan pvscan + +_pvs() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o|-O|--options|--sort) + COMPREPLY=( $( compgen -W 'pv_fmt pv_uuid \ + pv_size pv_free pv_used pv_name \ + pv_attr pv_pe_count \ + pv_pe_alloc_count' -- "$cur" ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned --all --debug \ + --help --ignorelockingfailure --noheadings \ + --nosuffix --options --sort --separator --unbuffered --units \ + --verbose --version' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvs pvs + +_pvdisplay() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--colon --columns --units \ + --verbose --debug --help --version' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvdisplay pvdisplay + +_pvchange() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|-x|--autobackup|--allocatable) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --autobackup \ + --debug --help --test --uuid \ + --allocatable --verbose --addtag --deltag \ + --version' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvchange pvchange + +_pvcreate() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --restorefile) + _filedir + return 0 + ;; + -M|--metadatatype) + COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) ) + return 0 + ;; + --metadatacopies) + COMPREPLY=( $( compgen -W '0 1 2' -- "$cur" ) ) + return 0 + ;; + --metadatasize|--setphysicalvolumesize) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--restorefile --debug \ + --force --help --labelsector --metadatatype \ + --metadatacopies --metadatasize \ + --setphysicalvolumesize --test --uuid \ + --verbose --yes --version' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvcreate pvcreate + +_pvmove() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -n|--name) + _logicalvolumes + return 0 + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--abort --autobackup \ + --background --debug --force --help --interval --test --verbose \ + --version --name' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvmove pvmove + +_pvremove() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --force \ + --help --yes --test --verbose --version' -- "$cur" ) ) + else + _physicalvolumes + fi +} +complete -F _pvremove pvremove + +_vgscan() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --help \ + --ignorelockingfailure --mknodes \ + --partial --verbose --version' -- "$cur" ) ) + fi +} +complete -F _vgscan vgscan + +_vgs() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o|-O|--options|--sort) + COMPREPLY=( $( compgen -W 'vg_fmt vg_uuid vg_name \ + vg_attr vg_size vg_free vg_sysid \ + vg_extent_size vg_extent_count vg_free_count \ + max_lv max_pv pv_count lv_count snap_count \ + vg_seqno' -- "$cur" ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned --debug \ + --help --ignorelockingfailure --noheadings \ + --nosuffix --options --sort --partial \ + --separator --unbuffered --units \ + --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgs vgs + +_vgdisplay() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--colon --columns --units \ + --partial --activevolumegroups --verbose \ + --debug --help --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgdisplay vgdisplay + +_vgchange() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-A|-x|--available|--autobackup|--resizeable) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --alloc \ + --partial --debug --help --ignorelockingfailure \ + --test --uuid --verbose --version \ + --available --resizeable --logicalvolume \ + --addtag --deltag' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgchange vgchange + +_vgcreate() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -M|--metadatatype) + COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) ) + return 0 + ;; + -s|--physicalextentsize) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --addtag --alloc \ + --debug --help --maxlogicalvolumes --metadatatype \ + --maxphysicalvolumes --physicalextentsize --test \ + --verbose --version' -- "$cur" ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgcreate vgcreate + +_vgremove() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --help --test \ + --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgremove vgremove + +_vgrename() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug \ + --help --test --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgrename vgrename + +_vgreduce() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --autobackup \ + --debug --help --removemissing --test \ + --verbose --version' -- "$cur" ) ) + + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgreduce vgreduce + +_vgextend() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -L|--size) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug \ + --help --test --verbose --version' -- "$cur" ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgextend vgextend + +_vgport() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --debug \ + --help --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgport vgimport vgexport + +_vgck() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug \ + --help --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgck vgck + +_vgconvert() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -M|--metadatatype) + COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) ) + return 0 + ;; + --metadatacopies) + COMPREPLY=( $( compgen -W '0 1 2' -- "$cur" ) ) + return 0 + ;; + --metadatasize) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --help --labelsector \ + --metadatatype --metadatacopies --metadatasize \ + --test --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgconvert vgconvert + +_vgcfgbackup() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--file) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --file --help \ + --ignorelockingfailure --partial --verbose \ + --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgcfgbackup vgcfgbackup + +_vgcfgrestore() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--file) + _filedir + return 0 + ;; + -M|--metadatatype) + COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) ) + return 0 + ;; + -n|--name) + _volumegroups + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --file --list \ + --help --metadatatype --name --test \ + --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgcfgrestore vgcfgrestore + +_vgmerge() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug --help \ + --list --test --verbose --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgmerge vgmerge + +_vgsplit() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -M|--metadatatype) + COMPREPLY=( $( compgen -W '1 2' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug \ + --help --list --metadatatype --test \ + --verbose --version' -- "$cur" ) ) + else + _args + if [[ $args -eq 0 || $args -eq 1 ]]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _vgsplit vgsplit + +_vgmknodes() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--debug --help --verbose \ + --version' -- "$cur" ) ) + else + _volumegroups + fi +} +complete -F _vgmknodes vgmknodes + +_lvscan() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--blockdevice --debug \ + --help --ignorelockingfailure \ + --partial --verbose --version' -- "$cur" ) ) + fi +} +complete -F _lvscan lvscan + +_lvs() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o|-O|--options|--sort) + COMPREPLY=( $( compgen -W 'lv_uuid lv_name lv_attr lv_minor \ + lv_size seg_count origin snap_percent segtype stripes \ + stripesize chunksize seg_start seg_size' -- "$cur" ) ) + return 0 + ;; + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--aligned --debug --help \ + --ignorelockingfailure --noheadings --nosuffix --options \ + --sort --partial --segments --separator --unbuffered --units \ + --verbose --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvs lvs + +_lvdisplay() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --units) + _units + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--colon --columns --units \ + --partial --maps --verbose --debug --help --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvdisplay lvdisplay + +_lvchange() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-A|-C|-M|--available|--autobackup|--continguous|--persistent) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -p|--permission) + COMPREPLY=( $( compgen -W 'r rw' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --available \ + --addtag --alloc --contiguous --debug --deltag \ + --force --help --ignorelockingfailure \ + --persistent --major --minor --partial \ + --permission --readahead --refresh --test \ + --verbose --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvchange lvchange + +_lvcreate() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|-C|-M|-Z|--autobackup|--continguous|--persistent|--zero) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -L|--size) + _sizes + return 0 + ;; + -p|--permission) + COMPREPLY=( $( compgen -W 'r rw' -- "$cur" ) ) + return 0 + ;; + -n|--name) + _logicalvolumes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --addtag --alloc \ + --contiguous --debug --help --stripes \ + --stripesize --extents --size --persistent \ + --major --minor --name --permission \ + --readahead --test --type --verbose --zero \ + --version' -- "$cur" ) ) + else + _args + if [ $args -eq 0 ]; then + _volumegroups + else + _physicalvolumes + fi + fi +} +complete -F _lvcreate lvcreate + +_lvremove() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug \ + --force --help --test --verbose --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvremove lvremove + +_lvrename() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --debug \ + --help --test --verbose --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvrename lvrename + +_lvreduce() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -L|--size) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup \ + --debug --force --help --extents \ + --size --nofsck --resizefs --test --verbose --version' -- "$cur" ) ) + else + _logicalvolumes + fi +} +complete -F _lvreduce lvreduce + +_lvresize() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -L|--size) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --alloc \ + --debug --help --stripes --stripesize \ + --extents --size --nofsck --resizefs \ + --test --type --verbose --version' -- "$cur" ) ) + else + _args + if [ $args -eq 0 ]; then + _logicalvolumes + else + _physicalvolumes + fi + fi +} +complete -F _lvresize lvresize + +_lvextend() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -A|--autobackup) + COMPREPLY=( $( compgen -W 'y n' -- "$cur" ) ) + return 0 + ;; + -L|--size) + _sizes + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--autobackup --alloc \ + --debug --help --stripes --stripesize \ + --extents --size --nofsck --resizefs \ + --test --type --verbose --version' -- "$cur" ) ) + else + _args + if [ $args -eq 0 ]; then + _logicalvolumes + else + _physicalvolumes + fi + fi +} +complete -F _lvextend lvextend + +_lvm() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'dumpconfig help lvchange \ + lvcreate lvdisplay lvextend lvmchange \ + lvmdiskscan lvmsadc lvmsar lvreduce \ + lvremove lvrename lvresize lvs lvscan \ + pvchange pvcreate pvdata pvdisplay pvmove \ + pvremove pvresize pvs pvscan vgcfgbackup \ + vgcfgrestore vgchange vgck vgconvert \ + vgcreate vgdisplay vgexport vgextend \ + vgimport vgmerge vgmknodes vgreduce \ + vgremove vgrename vgs vgscan vgsplit \ + version' -- "$cur" ) ) + else + case ${COMP_WORDS[1]} in + pvchange) + _pvchange + ;; + pvcreate) + _pvcreate + ;; + pvdisplay) + _pvdisplay + ;; + pvmove) + _pvmove + ;; + pvremove) + _pvremove + ;; + pvresize) + _pvresize + ;; + pvs) + _pvs + ;; + pvscan) + _pvscan + ;; + vgcfgbackup) + _vgcfgbackup + ;; + vgcfgrestore) + _vgcfgrestore + ;; + vgchange) + _vgchange + ;; + vgck) + _vgck + ;; + vgconvert) + _vgconvert + ;; + vgcreate) + _vgcreate + ;; + vgdisplay) + _vgdisplay + ;; + vgexport) + _vgexport + ;; + vgextend) + _vgextend + ;; + vgimport) + _vgimport + ;; + vgmerge) + _vgmerge + ;; + vgmknodes) + _vgmknodes + ;; + vgreduce) + _vgreduce + ;; + vgremove) + _vgremove + ;; + vgrename) + _vgrename + ;; + vgs) + _vgs + ;; + vgscan) + _vgscan + ;; + vgsplit) + _vgsplit + ;; + lvchange) + _lvchange + ;; + lvcreate) + _lvcreate + ;; + lvdisplay) + _lvdisplay + ;; + lvextend) + _lvextend + ;; + lvreduce) + _lvreduce + ;; + lvremove) + _lvremove + ;; + lvrename) + _lvrename + ;; + lvresize) + _lvresize + ;; + lvs) + _lvs + ;; + lvscan) + _lvscan + ;; + esac + fi +} +complete -F _lvm lvm +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lzma b/completions/lzma new file mode 100644 index 00000000..295ef37b --- /dev/null +++ b/completions/lzma @@ -0,0 +1,46 @@ +# lzma(1) completion by Per Øyvind Karlsen <peroyvind@mandriva.org> + +have lzma && +_lzma() +{ + local cur prev xspec + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 \ + --help --decompress --compress --keep --force --suffix \ + --test --stdout --quiet --verbose --license --list \ + --version --small --fast --best --text' -- "$cur" ) ) + return 0 + fi + + local IFS=$'\n' + + xspec="*.@(lzma|tlz)" + if [[ "$prev" == --* ]]; then + [[ "$prev" == --decompress || \ + "$prev" == --list || \ + "$prev" == --test ]] && xspec="!"$xspec + [[ "$prev" == --compress ]] && xspec= + elif [[ "$prev" == -* ]]; then + [[ "$prev" == -*[dt]* ]] && xspec="!"$xspec + [[ "$prev" == -*z* ]] && xspec= + fi + + _expand || return 0 + + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _lzma lzma + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/lzop b/completions/lzop new file mode 100644 index 00000000..6d384128 --- /dev/null +++ b/completions/lzop @@ -0,0 +1,69 @@ +# lzop(1) completion + +have lzop && +_lzop() +{ + local cur prev xspec + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-1 -2 -3 -4 -5 -6 -7 -8 -9 -P \ + --fast --best --decompress --extract --test --list --ls --info \ + --sysinfo --license --help --version --stdout --output --path \ + --force --no-checksum --no-name --name --no-mode --no-time \ + --suffix --keep --delete --crc32 --no-warn --ignore-warn --quiet \ + --verbose --no-stdin --filter --checksum --no-color --mono \ + --color' -- "$cur" ) ) + return 0 + fi + + case $prev in + -o|--output) + _filedir + return 0 + ;; + --path) + _filedir -d + return 0 + ;; + -S|--suffix) + return 0 + ;; + esac + + xspec="*.?(t)lzo" + case $prev in + --decompress|--uncompress|--extract|--list|--ls|--info|--test) + xspec="!"$xspec + ;; + --force) + xspec= + ;; + --*) + ;; + -*f*|'<'|'>') + xspec= + ;; + -*[dltx]*) + xspec="!"$xspec + ;; + esac + + _expand || return 0 + + local IFS=$'\n' + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _lzop lzop + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mailman b/completions/mailman new file mode 100644 index 00000000..b239cbbf --- /dev/null +++ b/completions/mailman @@ -0,0 +1,587 @@ +# mailman completion + +have list_lists && { +_mailman_lists() +{ + COMPREPLY=( $( compgen -W '$( list_lists -b )' -- "$cur" ) ) +} + +_list_lists() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--advertised --virtual-host-overview \ + --bare --help' -- "$cur" ) ) + fi + +} && +complete -F _list_lists list_lists +} + +have add_members && +_add_members() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -r|-d|--regular-members-file|--digest-members-file) + _filedir + return 0 + ;; + -w|-a|--welcome-msg|--admin-notify) + COMPREPLY=( $( compgen -W 'y n' -- "$cur") ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--regular-members-file \ + --digest-members-file --welcome-msg \ + --admin-notify --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _add_members add_members + +have remove_members && +_remove_members() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -f|--file) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--file --all --fromall --nouserack \ + --noadminack --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _remove_members remove_members + +have find_member && +_find_member() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -l|-x|--listname|--exclude) + _mailman_lists + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--listname --exclude --owners \ + --help' -- "$cur" ) ) + fi + +} && +complete -F _find_member find_member + +have clone_member && +_clone_member() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -l|--listname) + _mailman_lists + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--listname --remove --admin \ + --quiet --nomodify --help' -- "$cur" ) ) + fi + +} && +complete -F _clone_member clone_member + +have sync_members && +_sync_members() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -w|-g|-d|--welcome-msg|--goodbye-msg|--digest) + COMPREPLY=( $( compgen -W 'y n' -- "$cur") ) + return 0 + ;; + -d|--file) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--no-change --welcome-msg \ + --goodbye-msg --digest --notifyadmin --file --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _sync_members sync_members + +have unshunt && +_unshunt() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help' -- "$cur" ) ) + else + _filedir -d + fi + +} && +complete -F _unshunt unshunt + +have list_admins && +_list_admins() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all-vhost --all --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _list_admins list_admins + +have list_owners && +_list_owners() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--with-listnames --moderators \ + --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _list_owners list_owners + +have list_members && +_list_members() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -o|--output) + _filedir + return 0 + ;; + -d|--digest) + COMPREPLY=( $( compgen -W 'mime plain' -- "$cur") ) + return 0 + ;; + -n|--nomail) + COMPREPLY=( $( compgen -W 'byadmin byuser bybounce unknown' \ + -- "$cur") ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--output --regular --digest \ + --nomail --fullnames --preserve --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _list_members list_members + +have change_pw && +_change_pw() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -l|--listname) + _mailman_lists + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --domain --listname \ + --password --quiet --help' -- "$cur" ) ) + fi + +} && +complete -F _change_pw change_pw + +have withlist && +_withlist() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--lock --interactive \ + --run --all --quiet --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _withlist withlist + +have newlist && +_newlist() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--language --quiet --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _newlist newlist + +have rmlist && +_rmlist() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--archives --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _rmlist rmlist + +have config_list && +_config_list() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -i|-o|--inputfile|--outputfile) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--inputfile --outputfile \ + --checkonly --verbose --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _config_list config_list + +# Try to detect whether this is the mailman "arch" to avoid installing +# it for the coreutils/util-linux-ng one. +have arch && have mailmanctl && +_arch() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -w|-g|-d|--welcome-msg|--goodbye-msg|--digest) + COMPREPLY=( $( compgen -W 'y n' -- "$cur") ) + return 0 + ;; + -d|--file) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--wipe --start --end --quiet \ + --help' -- "$cur" ) ) + else + args=$COMP_CWORD + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -* ]]; then + args=$(($args-1)) + fi + done + case $args in + 1) + _mailman_lists + ;; + 2) + _filedir + ;; + esac + fi + +} && +complete -F _arch arch + +have cleanarch && +_cleanarch() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--status --dry-run --quiet \ + --help' -- "$cur" ) ) + fi + +} && +complete -F _cleanarch cleanarch + +have inject && +_inject() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -l|--listname) + _mailman_lists + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--listname --queue --help' -- "$cur" ) ) + else + _filedir + fi + +} && +complete -F _inject inject + +have dumpdb && +_dumpdb() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--marshal --pickle --noprint \ + --help' -- "$cur" ) ) + else + _filedir + fi + +} && +complete -F _dumpdb dumpdb + +have check_db && +_check_db() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --verbose --help' -- "$cur" ) ) + else + _mailman_lists + fi + +} && +complete -F _check_db check_db + +have check_perms && +_check_perms() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-f -v -h' -- "$cur" ) ) + fi + +} && +complete -F _check_perms check_perms + +have genaliases && +_genaliases() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--quiet --help' -- "$cur" ) ) + fi + +} && +complete -F _genaliases genaliases + +have mmsitepass && +_mmsitepass() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--listcreator --help' -- "$cur" ) ) + fi + +} && +complete -F _mmsitepass mmsitepass + +have qrunner && +_qrunner() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--runner --once \ + --list --verbose --subproc --help' -- "$cur" ) ) + fi + +} && +complete -F _qrunner qrunner + +have mailmanctl && +_mailmanctl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--no-restart --run-as-user \ + --stale-lock-cleanup --quiet --help' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W 'start stop restart reopen' -- "$cur" ) ) + fi + +} && +complete -F _mailmanctl mailmanctl + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/make b/completions/make new file mode 100644 index 00000000..76e95284 --- /dev/null +++ b/completions/make @@ -0,0 +1,78 @@ +# bash completion for GNU make + +have make || have gmake || have gnumake || have pmake && +_make() +{ + local file makef makef_dir="." makef_inc cur prev i split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -f|-o|-W|--file|--makefile|--old-file|--new-file|--assume-old|--assume-new|--what-if) + _filedir + return 0 + ;; + -I|-C|--directory|--include-dir) + _filedir -d + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -m -B -C -d -e -f -h -i -I\ + -j -l -k -n -o -p -q -r -R - s -S -t -v -w -W \ + --always-make --directory --debug \ + --environment-overrides --file --makefile --help \ + --ignore-errors --include-dir --jobs --load-average \ + --max-load --keep-going --just-print --dry-run \ + --recon --old-file --assume-old --print-data-base \ + --question --no-builtin-rules --no-builtin-variables \ + --silent --quiet --no-keep-goind --stop --touch \ + --version --print-directory --no-print-directory \ + --what-if --new-file --assume-new \ + --warn-undefined-variables' -- "$cur" ) ) + else + # before we check for makefiles, see if a path was specified + # with -C/--directory + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -@(C|-directory) ]]; then + # eval for tilde expansion + eval makef_dir=${COMP_WORDS[i+1]} + break + fi + done + + # before we scan for targets, see if a Makefile name was + # specified with -f/--file/--makefile + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -@(f|-?(make)file) ]]; then + # eval for tilde expansion + eval makef=${COMP_WORDS[i+1]} + break + fi + done + + [ -n "$makef" ] && makef="-f ${makef}" + [ -n "$makef_dir" ] && makef_dir="-C ${makef_dir}" + + COMPREPLY=( $( compgen -W "$( make -qp $makef $makef_dir 2>/dev/null | \ + awk -F':' '/^[a-zA-Z0-9][^$#\/\t=]*:([^=]|$)/ \ + {split($1,A,/ /);for(i in A)print A[i]}' )" \ + -- "$cur" ) ) + + fi +} && +complete -F _make make gmake gnumake pmake + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/man b/completions/man new file mode 100644 index 00000000..9e5cd3a8 --- /dev/null +++ b/completions/man @@ -0,0 +1,80 @@ +# man(1) completion + +[ $USERLAND = GNU -o $UNAME = Darwin \ + -o $UNAME = FreeBSD -o $UNAME = SunOS -o $UNAME = Cygwin \ + -o $UNAME = OpenBSD ] && +_man() +{ + local cur i prev sect manpath manext mansect uname + + manext="@([0-9lnp]|[0-9][px]|man|3pm)?(.@([gx]z|bz2|lzma|Z))" + mansect="@([0-9lnp]|[0-9][px]|3pm)" + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + + if [[ "$prev" == -l ]]; then + _filedir $manext + return 0 + fi + + _expand || return 0 + + # file based completion if parameter contains / + if [[ "$cur" == */* ]]; then + _filedir $manext + return 0 + fi + + uname=$( uname -s ) + if [[ $uname == @(Linux|GNU|GNU/*|FreeBSD|Cygwin|CYGWIN_*) ]]; then + manpath=$( manpath 2>/dev/null || command man --path ) + else + manpath=$MANPATH + fi + + if [ -z "$manpath" ]; then + COMPREPLY=( $( compgen -c -- "$cur" ) ) + return 0 + fi + + # determine manual section to search + [[ "$prev" == $mansect ]] && sect=$prev || sect='*' + + manpath=$manpath: + if [ -n "$cur" ]; then + manpath="${manpath//://*man$sect/$cur* } ${manpath//://*cat$sect/$cur* }" + else + manpath="${manpath//://*man$sect/ } ${manpath//://*cat$sect/ }" + fi + + # redirect stderr for when path doesn't exist + COMPREPLY=( $( eval command ls "$manpath" 2>/dev/null ) ) + # weed out directory path names and paths to man pages + COMPREPLY=( ${COMPREPLY[@]##*/?(:)} ) + # strip suffix from man pages + COMPREPLY=( ${COMPREPLY[@]%.@([gx]z|bz2|lzma|Z)} ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]%.*}' -- "${cur//\\\\/}" ) ) + + if [[ "$prev" != $mansect ]]; then + # File based completion for the rest, prepending ./ if needed + # (man 1.6f needs that for man pages in current dir) + local start=${#COMPREPLY[@]} + _filedir $manext + for (( i=$start; i < ${#COMPREPLY[@]}; i++ )); do + [[ ${COMPREPLY[i]} == */* ]] || COMPREPLY[i]=./${COMPREPLY[i]} + done + fi + + __ltrim_colon_completions "$cur" + return 0 +} && +complete -F _man man apropos whatis + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mc b/completions/mc new file mode 100644 index 00000000..09e9eabe --- /dev/null +++ b/completions/mc @@ -0,0 +1,47 @@ +# bash completion for mc + +have mc && +_mc() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -e|--edit|-v|--view|-l|--ftplog|-P|--printwd) + _filedir + return 0 + ;; + -C|--colors|-D|--debuglevel) + # argument required but no completions available + return 0 + ;; + -h|--help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--stickchars --nocolor --color --colors \ + --nomouse --edit --datadir --resetsoft --ftplog --printwd --slow \ + --termcap --nosubshell --subshell --view --version --xterm \ + --debuglevel --help' -- "$cur" ) ) + else + _filedir -d + fi +} && +complete -F _mc mc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mcrypt b/completions/mcrypt new file mode 100644 index 00000000..32c4f89f --- /dev/null +++ b/completions/mcrypt @@ -0,0 +1,84 @@ +# mcrypt(1) completion by Ariel Fermani <the_end@bbs.frc.utn.edu.ar> + +have mcrypt || have mdecrypt && +_mcrypt() +{ + local cur prev i decrypt + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -g|--openpgp-z) + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + -o|--keymode) + COMPREPLY=( $( compgen -W '$( mcrypt --list-keymodes \ + 2>/dev/null )' -- "$cur" ) ) + return 0 + ;; + -m|--mode) + COMPREPLY=( $( compgen -W "$( mcrypt --list \ + 2>/dev/null | sed -e 's/.*: //' -e 's/ $//' | \ + sort -u )" -- "$cur" ) ) + return 0 + ;; + -a|--algorithm) + COMPREPLY=( $( compgen -W "$( mcrypt --list 2>/dev/null | \ + awk '{print $1}' )" -- "$cur" ) ) + return 0 + ;; + -h|--hash) + COMPREPLY=( $( compgen -W '$( mcrypt --list-hash 2>/dev/null | \ + sed -e 1d )' -- "$cur" ) ) + return 0 + ;; + -k|-s|--key|--keysize) + return 0 + ;; + -f|-c|--keyfile|--config) + _filedir + return 0 + ;; + --algorithms-directory|--modes-directory) + _filedir -d + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--openpgp --openpgp-z \ + --decrypt --keysize --keymode --keyfile \ + --config --algorithm --algorithms-directory \ + --mode --modes-directory --hash --key \ + --noiv --bare --gzip --bzip2 --flush \ + --doublecheck --unlink --nodelete --time \ + --force --echo --random --list --list-keymodes \ + --list-hash --verbose --quiet --help \ + --version --license' -- "$cur" ) ) + elif [[ ${COMP_WORDS[0]} == mdecrypt ]]; then + _filedir nc + else + decrypt=0 + for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -@(d|-decrypt) ]]; then + _filedir nc + decrypt=1 + break + fi + done + if [[ $decrypt -eq 0 ]]; then + _filedir + fi + fi +} && +complete -F _mcrypt mcrypt mdecrypt + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mdadm b/completions/mdadm new file mode 100644 index 00000000..9cbaad7b --- /dev/null +++ b/completions/mdadm @@ -0,0 +1,162 @@ +# bash completion for mdadm + +have mdadm && +{ +_mdadm_raid_level() +{ + local mode + + for (( i=1; i < COMP_CWORD; i++ )); do + case ${COMP_WORDS[i]} in + -C|--create) + mode=create + break + ;; + -B|--build) + mode=build + break + ;; + esac + done + + case $mode in + create) + COMPREPLY=( $( compgen -W 'linear raid0 0 stripe raid1 1 mirror \ + raid4 4 raid5 5 raid6 6 raid10 10 multipath mp faulty' \ + -- "$cur" ) ) + ;; + build) + COMPREPLY=( $( compgen -W 'linear stripe raid0 0 raid1 multipath \ + mp faulty' -- "$cur" ) ) + ;; + esac +} + +_mdadm_raid_layout() +{ + local level + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(l|-level) ]]; then + level=${COMP_WORDS[i+1]} + break + fi + done + + case $level in + raid5) + COMPREPLY=( $( compgen -W 'left-asymmetric left-symmetric \ + right-asymmetric right-symmetric la ra ls rs' -- "$cur" ) ) + ;; + raid10) + COMPREPLY=( $( compgen -W 'n o p' -- "$cur" ) ) + ;; + faulty) + COMPREPLY=( $( compgen -W 'write-transient wt read-transient rt \ + write-persistent wp read-persistent rp write-all read-fixable \ + rf clear flush none' -- $cur ) ) + ;; + esac +} + +_mdadm_auto_flag() +{ + COMPREPLY=( $( compgen -W 'no yes md mdp part p' -- "$cur" ) ) +} + +_mdadm_update_flag() +{ + COMPREPLY=( $( compgen -W 'sparc2.2 summaries uuid name homehost resync \ + byteorder super-minor' -- "$cur" ) ) +} + + +_mdadm() +{ + local cur prev mode options split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -c|--config|-b|--bitmap|--backup-file) + _filedir + return 0 + ;; + -l|--level) + _mdadm_raid_level + return 0 + ;; + -p|--layout|--parity) + _mdadm_raid_layout + return 0 + ;; + -a|--auto) + _mdadm_auto_flag + return 0 + ;; + -U|--update) + _mdadm_update_flag + return 0 + ;; + esac + + $split && return 0 + + options='--help --help-options --version --verbose --quiet \ + --brief --force --config --scan --metadata --homehost' + + if [[ "$cur" == -* ]]; then + if [[ $COMP_CWORD -eq 1 ]] ; then + COMPREPLY=( $( compgen -W "$options --assemble --build \ + --create --monitor --grow" -- "$cur" ) ) + else + case ${COMP_WORDS[COMP_CWORD-1]} in + -A|--assemble) + COMPREPLY=( $( compgen -W "$options --uuid \ + --super-minor --name --force --run \ + --no-degraded --auto --bitmap --backup-file \ + --update --auto-update-homehost" -- "$cur" ) ) + ;; + -B|-C|-G|--build|--create|--grow) + COMPREPLY=( $( compgen -W "$options --raid-devices \ + --spare-devices --size --chunk --rounding \ + --level --layout --parity --bitmap \ + --bitmap-chunk --write-mostly --write-behind \ + --assume-clean --backup-file --name --run \ + --force --auto" -- "$cur" ) ) + ;; + -F|--follow|--monitor) + COMPREPLY=( $( compgen -W "$options --mail --program \ + --alert --syslog --delay --daemonise \ + --pid-file --oneshot --test" -- "$cur" ) ) + + ;; + /dev/*|--add|--fail|--remove) + COMPREPLY=( $( compgen -W "$options --add --re-add \ + --remove --fail --set-faulty" -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W "$options --query --detail \ + --examine --sparc2.2 --examine-bitmap --run \ + --stop --readonly --readwrite \ + --zero-superblock --test" -- "$cur" ) ) + ;; + esac + fi + else + cur=${cur:=/dev/} + _filedir + fi +} +complete -F _mdadm mdadm +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/medusa b/completions/medusa new file mode 100644 index 00000000..d8dcfe41 --- /dev/null +++ b/completions/medusa @@ -0,0 +1,41 @@ +# bash completion for medusa + +have medusa && +_medusa() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=`_get_pword` + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H|-U|-P|-C|-O) + _filedir + return 0 + ;; + -M) + COMPREPLY=( $( compgen -W "$(medusa -d | awk '/^ +\+/ {print $2}' \ + | sed -e 's/\.mod$//')" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h -H -u -U -p -P -C -O -e -M -m -d -n -s \ + -g -r -R -t -T -L -f -F -b -q -v -w -V -Z' -- "$cur" ) ) + fi +} && +complete -F _medusa medusa + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/minicom b/completions/minicom new file mode 100644 index 00000000..76553317 --- /dev/null +++ b/completions/minicom @@ -0,0 +1,53 @@ +# bash completion for minicom + +have minicom && +_minicom() +{ + local cur prev confdir + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-c) + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + -S|-C) + _filedir + return 0 + ;; + -P) + COMPREPLY=( $( printf '%s\n' /dev/tty* ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} ${COMPREPLY[@]#/dev/}' \ + -- "$cur" ) ) + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-s -o -m -M -z -l -L -w -a -t \ + -c -S -d -p -C -T -7 -8' -- "$cur" ) ) + return 0 + else + [ -n "$( command ls /etc/minirc.* 2>/dev/null)" ] \ + && confdir=/etc + [ -n "$( command ls /etc/minicom/minirc.* 2>/dev/null)" ] \ + && confdir=/etc/minicom + if [ -n "$confdir" ]; then + COMPREPLY=( $( compgen -W '$( printf "%s\n" $confdir/minirc.* | \ + sed -e "s|$confdir/minirc.||")' -- "$cur" ) ) + return 0 + fi + fi +} && +complete -F _minicom -o default minicom + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mkinitrd b/completions/mkinitrd new file mode 100644 index 00000000..48893471 --- /dev/null +++ b/completions/mkinitrd @@ -0,0 +1,59 @@ +# bash completion for mkinitrd + +have mkinitrd && +_mkinitrd() +{ + local cur prev args split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + --preload|--with|--builtin) + _modules + return 0 + ;; + --fstab|--dsdt) + _filedir + return 0 + ;; + --net-dev) + _available_interfaces + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version --help -v -f --preload \ + --force-scsi-probe --omit-scsi-modules \ + --omit-ide-modules --image-version --force-raid-probe \ + --omit-raid-modules --with --force-lvm-probe \ + --omit-lvm-modules --builtin --omit-dmraid --net-dev \ + --fstab --nocompress --dsdt --bootchart' -- "$cur" ) ) + else + _count_args + + case $args in + 1) + _filedir + ;; + 2) + _kernel_versions + ;; + esac + fi + +} && +complete -F _mkinitrd mkinitrd + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/module-init-tools b/completions/module-init-tools new file mode 100644 index 00000000..bf2d24d1 --- /dev/null +++ b/completions/module-init-tools @@ -0,0 +1,61 @@ +# bash completion for Linux module-init-tools + +# Linux rmmod(8) completion. This completes on a list of all currently +# installed kernel modules. +# +have rmmod && +_rmmod() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _installed_modules "$cur" + return 0 +} && +complete -F _rmmod rmmod + +# Linux insmod(8), modprobe(8) and modinfo(8) completion. This completes on a +# list of all available modules for the version of the kernel currently +# running. +# +have insmod || have modprobe || have modinfo && +_insmod() +{ + local cur prev modpath + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + # behave like lsmod for modprobe -r + if [[ ${1##*/} == modprobe && "${COMP_WORDS[1]}" == -r ]]; then + _installed_modules "$cur" + return 0 + fi + + # do filename completion if we're giving a path to a module + if [[ "$cur" == */* ]]; then + _filedir '@(?(k)o?(.gz))' + return 0 + fi + + if [[ $COMP_CWORD -gt 1 && "${COMP_WORDS[COMP_CWORD-1]}" != -* ]]; then + # do module parameter completion + COMPREPLY=( $( compgen -W "$( /sbin/modinfo -p ${COMP_WORDS[1]} | \ + cut -d: -f1 )" -- "$cur" ) ) + else + _modules $(uname -r) + fi + + return 0 +} && +complete -F _insmod insmod modprobe modinfo + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/monodevelop b/completions/monodevelop new file mode 100644 index 00000000..69b23445 --- /dev/null +++ b/completions/monodevelop @@ -0,0 +1,86 @@ +# Monodevelop completion + +have monodevelop && +_monodevelop() +{ + local cur + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-? -help -help2 -ipc-tcp -newwindow -nologo \ + -usage -V -version' -- "$cur" ) ) + else + _filedir + fi + return 0 +} && +complete -F _monodevelop monodevelop + +have mdtool && +_mdtool() +{ + local cur prev command i + + COMPREPLY=() + + _get_comp_words_by_ref cur prev + + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == @(build|generate-makefiles|setup) ]]; then + command=${COMP_WORDS[i]} + fi + done + + if [[ -n "$command" ]]; then + case $command in + "build") + COMPREPLY=( $( compgen -W '--f --buildfile --p --project' \ + -S":" -- "$cur" ) ) + # TODO: This does not work :( + #if [[ "$prev" == *: ]]; then + # case $prev in + # @(--p:|--project:)) + # COMPREPLY=( $( compgen -f -G "*.mdp" -- "$cur" ) ) + # ;; + # @(--f:|--buildfile:)) + # COMPREPLY=( $( compgen -f -G "*.mdp" -G "*.mds" -- "$cur" ) ) + # ;; + # esac + #fi + return 0 + ;; + "generate-makefiles") + _compopt_o_filenames + COMPREPLY=( $( compgen -o filenames -G"*.mds" -- "$cur" ) ) + if [[ "$prev" == *mds ]]; then + COMPREPLY=( $( compgen -W '--simple-makefiles --s --d:' \ + -- "$cur" ) ) + fi + return 0 + ;; + "setup") + # TODO: at least return filenames after these options. + COMPREPLY=( $( compgen -W 'install i uninstall u check-install \ + ci update up list l list-av la list-update lu rep-add ra \ + rep-remove rr rep-update ru rep-list rl reg-update \ + reg-build rgu info rep-build rb pack p help h dump-file' \ + -- "$cur" ) ) + return 0 + ;; + esac + fi + + COMPREPLY=( $( compgen -W 'gsetup build dbgen project-export \ + generate-makefiles gettext-update setup -q' -- "$cur" ) ) + + return 0 +} && +complete -F _mdtool mdtool + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mount b/completions/mount new file mode 100644 index 00000000..b14eef3e --- /dev/null +++ b/completions/mount @@ -0,0 +1,165 @@ +# mount(8) completion. This will pull a list of possible mounts out of +# /etc/{,v}fstab, unless the word being completed contains a ':', which +# would indicate the specification of an NFS server. In that case, we +# query the server for a list of all available exports and complete on +# that instead. +# +have mount && +{ + +# Just like COMPREPLY=(`compgen -W "${COMPREPLY[*]}" -- "$cur"`), only better! +# +# This will correctly escape special characters in COMPREPLY. +_reply_compgen_array() +{ + # Create the argument for compgen -W by escaping twice. + # + # One round of escape is because we want to reply with escaped arguments. A + # second round is required because compgen -W will helpfully expand it's + # argument. + local i wlist + for i in ${!COMPREPLY[*]}; do + local q=$(quote "$(printf %q "${COMPREPLY[$i]}")") + wlist+=$q$'\n' + done + + # We also have to add another round of escaping to $cur. + local ecur="$cur" + ecur="${ecur//\\/\\\\}" + ecur="${ecur//\'/\'}" + + # Actually generate completions. + local oldifs=$IFS + IFS=$'\n' eval 'COMPREPLY=(`compgen -W "$wlist" -- "${ecur}"`)' + IFS=$oldifs +} + +# Unescape strings in the linux fstab(5) format (with octal escapes). +__linux_fstab_unescape() { + eval $1="'${!1//\'/\047}'" + eval $1="'${!1/%\\/\\\\}'" + eval "$1=$'${!1}'" +} + +# Complete linux fstab entries. +# +# Reads a file from stdin in the linux fstab(5) format; as used by /etc/fstab +# and /proc/mounts. +_linux_fstab() +{ + COMPREPLY=() + + # Read and unescape values into COMPREPLY + local fs_spec fs_file fs_other + local oldifs="$IFS" + while read -r fs_spec fs_file fs_other; do + if [[ $fs_spec = [#]* ]]; then continue; fi + if [[ $1 == -L ]]; then + local fs_label=${fs_spec/#LABEL=} + if [[ $fs_label != "$fs_spec" ]]; then + __linux_fstab_unescape fs_label + IFS=$'\0' + COMPREPLY+=("$fs_label") + IFS=$oldifs + fi + else + __linux_fstab_unescape fs_spec + __linux_fstab_unescape fs_file + IFS=$'\0' + [[ $fs_spec = */* ]] && COMPREPLY+=("$fs_spec") + [[ $fs_file = */* ]] && COMPREPLY+=("$fs_file") + IFS=$oldifs + fi + done + + _reply_compgen_array +} + +_mount() +{ + local cur sm host prev + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + + case $prev in + -t|--types) + _fstypes + return 0 + ;; + esac + + [[ "$cur" == \\ ]] && cur="/" + + if [[ "$cur" == *:* ]]; then + for sm in "$(type -P showmount)" {,/usr}/{,s}bin/showmount; do + [ -x "$sm" ] || continue + COMPREPLY=( $( compgen -W "$( "$sm" -e ${cur%%:*} | \ + awk 'NR>1 {print $1}' )" -- "${cur#*:}" ) ) + return 0 + done + fi + + if [[ "$cur" == //* ]]; then + host=${cur#//} + host=${host%%/*} + if [ -n "$host" ]; then + COMPREPLY=( $( compgen -P "//$host" -W \ + "$( smbclient -d 0 -NL $host 2>/dev/null | + sed -ne '/^['"$'\t '"']*Sharename/,/^$/p' | + sed -ne '3,$s|^[^A-Za-z]*\([^'"$'\t '"']*\).*$|/\1|p' )" \ + -- "${cur#//$host}" ) ) + fi + elif [ -r /etc/vfstab ]; then + # Solaris + COMPREPLY=( $( compgen -W "$( awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' /etc/vfstab )" -- "$cur" ) ) + elif [ ! -e /etc/fstab ]; then + # probably Cygwin + COMPREPLY=( $( compgen -W "$( mount | awk '! /^[ \t]*#/ {if ($3 ~ /\//) print $3}' )" -- "$cur" ) ) + else + # probably Linux + if [ "$prev" = -L ]; then + _linux_fstab -L < /etc/fstab + elif [ "$prev" = -U ]; then + COMPREPLY=( $( compgen -W '$(sed -ne "s/^[[:space:]]*UUID=\([^[:space:]]*\).*/\1/p" /etc/fstab )' -- "$cur" ) ) + else + _linux_fstab < /etc/fstab + fi + fi + + return 0 +} && +complete -F _mount -o default -o dirnames mount + +# umount(8) completion. This relies on the mount point being the third +# space-delimited field in the output of mount(8) +# +have umount && +_umount() +{ + local cur + _get_comp_words_by_ref cur + COMPREPLY=() + + if [[ $(uname -s) = Linux && -r /proc/mounts ]]; then + # Linux /proc/mounts is properly quoted. This is important when + # unmounting usb devices with pretty names. + _linux_fstab < /proc/mounts + else + local IFS=$'\n' + COMPREPLY=( $( compgen -W '$( mount | cut -d" " -f 3 )' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _umount -o dirnames umount + +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mplayer b/completions/mplayer new file mode 100644 index 00000000..39711370 --- /dev/null +++ b/completions/mplayer @@ -0,0 +1,269 @@ +# mplayer(1) completion + +have mplayer && { +_mplayer_options_list() +{ + cur=${cur%\\} + COMPREPLY=( $( compgen -W "$( $1 -nomsgcolor -nomsgmodule $2 help 2>/dev/null | \ + sed -e '/^Available/,/^$/!d' -e '/^Available/d' | awk '{print $1}' | \ + sed -e 's/:$//' -e 's/^'${2#-}'$//' -e 's/<.*//' )" -- "$cur" ) ) +} + +_mplayer() +{ + local cmd cur prev i j k=0 + + COMPREPLY=() + cmd=${COMP_WORDS[0]} + _get_comp_words_by_ref cur prev + + case $prev in + -[av][cfo]|-[av]fm|-vop|-fstype|-demuxer|-o[av]c|-of|-profile| \ + -audio-demuxer|-sub-demuxer) + _mplayer_options_list $cmd $prev + return 0 + ;; + -show-profile) + _mplayer_options_list $cmd -profile + return 0 + ;; + -audiofile) + _filedir '@(mp3|mpg|ogg|w?(a)v|mid|flac|mka|ape)' + return 0 + ;; + -font|-subfont) + if [ "$prev" = -font ]; then + _filedir '@(desc|ttf)' + else + _filedir ttf + fi + local IFS=$'\n' + COMPREPLY=( "${COMPREPLY[@]}" + $( compgen -W '$( fc-list 2>/dev/null )' -- "$cur" ) ) + return 0 + ;; + -sub) + _filedir '@(srt|sub|txt|utf|rar|mpsub|smi|js|ssa|ass)' + return 0 + ;; + -vobsub) + _filedir '@(idx|ifo|sub)' + local IFS=$'\n' + COMPREPLY=( $( for i in "${COMPREPLY[@]}"; do + if [[ -f $i && -r $i ]]; then + printf '%s\n' ${i%.*} + else + printf '%s\n' $i + fi + done ) ) + return 0 + ;; + -ifo) + _filedir ifo + return 0 + ;; + -cuefile) + _filedir '@(bin|cue)' + return 0 + ;; + -skin) + # if you don't have installed mplayer in /usr you + # may want to set the MPLAYER_SKINS_DIR global variable + local -a dirs + if [ -n "$MPLAYER_SKINS_DIR" ]; then + dirs=($MPLAYER_SKINS_DIR) + else + dirs=(/usr/share/mplayer/skins /usr/local/share/mplayer/skins) + fi + + local IFS=$'\n' + for i in ~/.mplayer/skins ${dirs[@]}; do + if [[ -d $i && -r $i ]]; then + for j in $( compgen -d $i/$cur ); do + COMPREPLY[$k]=${j#$i/} + k=$((++k)) + done + fi + done + return 0 + ;; + -cdrom-device) + _cd_devices + _dvd_devices + return 0 + ;; + -dvd-device) + _filedir + return 0 + ;; + -mixer|-dvdauth|-fb|-zrdev) + cur=${cur:=/dev/} + _filedir + return 0 + ;; + -edl|-edlout|-lircconf|-menu-cfg|-playlist|-csslib|-dumpfile| \ + -subfile|-vobsub|-aofile|-fbmodeconfig|-include|-o|-dvdkey| \ + -passlogfile) + _filedir + return 0 + ;; + -autoq|-autosync|-loop|-menu-root|-speed|-sstep|-aid|-alang| \ + -bandwidth|-cache|-chapter| \ + -dvd|-dvdangle|-fps|-frames|-mc|-passwd|-user|-sb|-srate|-ss|-vcd| \ + -vi|-vid|-vivo|-ffactor|-sid|-slang|-spualign|-spuaa|-spugauss| \ + -vobsubid|-delay|-bpp|-brightness|-contrast|-dfbopts|-display| \ + -fbmode|-geometry|-guiwid|-hue|-icelayer|-screen[wh]|-wid| \ + -monitoraspect|-monitor-dotclock|-monitor-[hv]freq|-panscan| \ + -saturation|-xineramascreen|-zrcrop|-zrnorm|-zrquality| \ + -zr[xy]doff|-zr[vh]dec|-aspect|-pp|-x|-y|-xy|-z|-stereo| \ + -audio-density|-audio-delay|-audio-preload|-endpos|-osdlevel| \ + -ffourcc|-sws|-channels|-skiplimit|-format|-ofps|-aadriver| \ + -aaosdcolor|-aasubcolor|-vobsubout|-vobsuboutid|-vobsuboutindex| \ + -sub-bg-alpha|-sub-bg-color|-sub-cp|-sub-delay|-sub-fps|-sub-pos| \ + -sub-align|-sub-width|-subfont-blur|-subfont-outline| \ + -subfont-autoscale|-subfont-encoding|-subfont-osd-scale| \ + -subfont-osd-text) + return 0 + ;; + -lavdopts) + COMPREPLY=( $( compgen -W 'bitexact bug= debug= ec= er= fast gray idct= lowres= sb= st= skiploopfilter= skipidct= skipframe= threads= vismv= vstats' -- "$cur" ) ) + return 0 + ;; + -lavcopts) + COMPREPLY=( $( compgen -W 'vcodec= vqmin= vqscale= vqmax= mbqmin= \ + mbqmax= vqdiff= vmax_b_frames= vme= vhq v4mv keyint= \ + vb_strategy= vpass= aspect= vbitrate= vratetol= vrc_maxrate= \ + vrc_minrate= vrc_buf_size= vb_qfactor= vi_qfactor= vb_qoffset= \ + vi_qoffset= vqblur= vqcomp= vrc_eq= vrc_override= \ + vrc_init_cplx= vqsquish= vlelim= vcelim= vstrict= vdpart \ + vpsize= gray vfdct= idct= lumi_mask= dark_mask= tcplx_mask= \ + scplx_mask= naq ildct format= pred qpel precmp= cmp= subcmp= \ + predia= dia= trell last_pred= preme= subq= psnr mpeg_quant aic \ + umv' -- "$cur" ) ) + return 0 + ;; + -ssf) + COMPREPLY=( $( compgen -W 'lgb= cgb= ls= cs= chs= cvs=' \ + -- "$cur" ) ) + return 0 + ;; + -jpeg) + COMPREPLY=( $( compgen -W 'noprogressive progressive nobaseline \ + baseline optimize= smooth= quality= outdir=' -- "$cur" ) ) + return 0 + ;; + -xvidopts) + COMPREPLY=( $( compgen -W 'dr2 nodr2' -- "$cur" ) ) + return 0 + ;; + -xvidencopts) + COMPREPLY=( $( compgen -W 'pass= bitrate= fixed_quant= me_quality= \ + 4mv rc_reaction_delay_factor= rc_averaging_period= rc_buffer= \ + quant_range= min_key_interval= max_key_interval= mpeg_quant \ + mod_quant lumi_mask hintedme hintfile debug keyframe_boost= \ + kfthreshold= kfreduction=' -- "$cur" ) ) + return 0 + ;; + -divx4opts) + COMPREPLY=( $( compgen -W 'br= key= deinterlace q= min_quant= \ + max_quant= rc_period= rc_reaction_period= crispness= \ + rc_reaction_ratio= pass= vbrpass= help' -- "$cur" ) ) + return 0 + ;; + -info) + COMPREPLY=( $( compgen -W 'name= artist= genre= subject= \ + copyright= srcform= comment= help' -- "$cur" ) ) + return 0 + ;; + -lameopts) + COMPREPLY=( $( compgen -W 'vbr= abr cbr br= q= aq= ratio= vol= \ + mode= padding= fast preset= help' -- "$cur" ) ) + return 0 + ;; + -rawaudio) + COMPREPLY=( $( compgen -W 'on channels= rate= samplesize= format=' \ + -- "$cur" ) ) + return 0 + ;; + -rawvideo) + COMPREPLY=( $( compgen -W 'on fps= sqcif qcif cif 4cif pal ntsc w= \ + h= y420 yv12 yuy2 y8 format= size=' -- "$cur" ) ) + return 0 + ;; + -aop) + COMPREPLY=( $( compgen -W 'list= delay= format= fout= volume= mul= \ + softclip' -- "$cur" ) ) + return 0 + ;; + -dxr2) + COMPREPLY=( $( compgen -W 'ar-mode= iec958-encoded iec958-decoded \ + mute ucode= 75ire bw color interlaced macrovision= norm= \ + square-pixel ccir601-pixel cr-left= cr-right= cr-top= cr-bot= \ + ck-rmin= ck-gmin= ck-bmin= ck-rmax= ck-gmax= ck-bmax= ck-r= \ + ck-g= ck-b= ignore-cache= ol-osd= olh-cor= olw-cor= olx-cor= \ + oly-cor= overlay overlay-ratio= update-cache' -- "$cur" )) + return 0 + ;; + -tv) + COMPREPLY=( $( compgen -W 'on noaudio driver= device= input= freq= \ + outfmt= width= height= buffersize= norm= channel= chanlist= \ + audiorate= forceaudio alsa amode= forcechan= adevice= audioid= \ + volume= bass= treble= balance= fps= channels= immediatemode=' \ + -- "$cur" ) ) + return 0 + ;; + -mf) + COMPREPLY=( $( compgen -W 'on w= h= fps= type=' -- "$cur" ) ) + return 0 + ;; + -cdda) + COMPREPLY=( $( compgen -W 'speed= paranoia= generic-dev= \ + sector-size= overlap= toc-bias toc-offset= skip noskip' \ + -- "$cur" ) ) + return 0 + ;; + -input) + COMPREPLY=( $( compgen -W 'conf= ar-delay ar-rate keylist cmdlist \ + js-dev file' -- "$cur" ) ) + return 0 + ;; + -af) + COMPREPLY=( $( compgen -W 'resample resample= channels channels= \ + format format= volume volume= delay delay= pan pan= sub sub= \ + surround surround=' -- "$cur" ) ) + return 0 + ;; + -af-adv) + COMPREPLY=( $( compgen -W 'force= list=' -- "$cur" ) ) + return 0 + ;; + -noconfig) + COMPREPLY=( $( compgen -W 'all gui system user' -- "$cur" ) ) + return 0 + ;; + esac + + case $cur in + -*) + COMPREPLY=( $( compgen -W '$( $cmd -nomsgcolor -nomsgmodule -list-options 2>/dev/null | \ + sed -ne '1,/^[[:space:]]*Name/d' \ + -e "s/^[[:space:]]*/-/" -e "s/[[:space:]:].*//" \ + -e "/^-\(Total\|.*\*\)\{0,1\}$/!p" )' -- "$cur" ) ) + ;; + *) + _filedir '@(mp?(e)g|MP?(E)G|wm[av]|WM[AV]|avi|AVI|asf|ASF|vob|VOB|bin|BIN|dat|DAT|vcd|VCD|ps|PS|pes|PES|fl[iv]|FL[IV]|fxm|FXM|viv|VIV|rm?(j)|RM?(J)|ra?(m)|RA?(M)|yuv|YUV|mov|MOV|qt|QT|mp[234]|MP[234]|m4[av]|M4[AV]|og[gmavx]|OG[GMAVX]|w?(a)v|W?(A)V|dump|DUMP|mk[av]|MK[AV]|m4a|M4A|aac|AAC|m[24]v|M[24]V|dv|DV|rmvb|RMVB|mid|MID|t[ps]|T[PS]|3g[p2]|3gpp?(2)|mpc|MPC|flac|FLAC|vro|VRO|divx|DIVX|aif?(f)|AIF?(F)|m2t?(s)|M2T?(S)|vdr|VDR|xvid|XVID|ape|APE|gif|GIF|nut|NUT|bik|BIK|webm|WEBM|amr|AMR|awb|AWB|iso|ISO)?(.part)' + ;; + esac + + return 0 +} +complete -F _mplayer mplayer mencoder gmplayer kplayer +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/msynctool b/completions/msynctool new file mode 100644 index 00000000..3f9afb7f --- /dev/null +++ b/completions/msynctool @@ -0,0 +1,51 @@ +# bash completion for msynctool + +have msynctool && +_msynctool() +{ + local cur prev anteprev + + COMPREPLY=() + _get_comp_words_by_ref cur prev anteprev + + case $anteprev in + --configure) + COMPREPLY=( $( compgen -W "$(msynctool --showgroup \ + $prev | awk '/^Member/ {print $2}' | sed \ + -e 's/:$//' )" -- "$cur" ) ) + return 0 + ;; + --addmember) + COMPREPLY=( $( compgen -W '$(msynctool --listplugins \ + | sed -e '1d' )' -- "$cur" ) ) + return 0 + ;; + esac + + case $prev in + --configure|--addgroup|--delgroup|--showgroup|--sync|--addmember) + COMPREPLY=( $( compgen -W '$(msynctool --listgroups \ + | sed -e '1d' )' -- "$cur" ) ) + return 0 + ;; + --showformats|--filter-objtype|--slow-sync) + COMPREPLY=( $( compgen -W '$(msynctool --listobjects \ + | sed -e '1d' )' -- "$cur" ) ) + return 0 + ;; + esac + + COMPREPLY=( $( compgen -W '--listgroups --listplugins --listobjects \ + --showformats --showgroup --sync --filter-objtype --slow-sync \ + --wait --multi --addgroup --delgroup --addmember --configure \ + --manual --configdir --conflict' -- "$cur" ) ) +} && +complete -F _msynctool msynctool + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mtx b/completions/mtx new file mode 100644 index 00000000..0454f032 --- /dev/null +++ b/completions/mtx @@ -0,0 +1,51 @@ +# mtx completion by Jon Middleton <jjm@ixtab.org.uk> + +have mtx && +_mtx() +{ + local cur prev options tapes drives + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + options="-f nobarcode invert noattach --version inquiry noattach \ + inventory status load unload eepos first last next" + + tapes=$(mtx status | \ + awk '/Storage Element [0-9]+:Full/ { printf "%s ", $3 }') + tapes=${tapes//:Full} + + drives=$(mtx status | \ + awk '/Data Transfer Element [0-9]+:(Full|Empty)/ { printf "%s ", $4 }') + drives=${drives//:Full} + drives=${drives//:Empty} + + if [ $COMP_CWORD -gt 1 ]; then + case $prev in + load) + COMPREPLY=( $( compgen -W "$tapes" -- "$cur" ) ) + ;; + unload|first|last|next) + COMPREPLY=( $( compgen -W "$drives" -- "$cur" ) ) + ;; + -f) + true + ;; + *) + true + ;; + esac + else + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + fi + return 0 +} && +complete -F _mtx mtx + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/munin-node b/completions/munin-node new file mode 100644 index 00000000..abf2b0f6 --- /dev/null +++ b/completions/munin-node @@ -0,0 +1,113 @@ +# bash completion for munin node + +have munin-run && +_munin_run() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --config|--sconffile) + _filedir + return 0 + ;; + --servicedir|--sconfdir) + _filedir -d + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--config --servicedir --sconfdir \ + --sconffile --help --debug --version' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W '$( command ls /etc/munin/plugins )' \ + -- "$cur" ) ) + fi +} && +complete -F _munin_run munin-run + +have munindoc && +_munindoc() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + COMPREPLY=( $( compgen -W '$( command ls /usr/share/munin/plugins )' \ + -- "$cur" ) ) +} && +complete -F _munindoc munindoc + +have munin-update && +_munin_update() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --config) + _filedir + return 0 + ;; + --host) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--force-root --[no]force-root \ + --service --host --config --help --debug --nodebug \ + --fork --nofork --stdout --nostdout --timeout' -- "$cur" ) ) + fi +} && +complete -F _munin_update munin-update + +have munin-node-configure && +_munin_node_configure() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --config) + _filedir + return 0 + ;; + --servicedir|--libdir) + _filedir -d + return 0 + ;; + --snmp) + _known_hosts_real "$cur" + return 0 + ;; + --snmpversion) + COMPREPLY=( $( compgen -W '1 2c 3' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --debug --config \ + --servicedir --libdir --families --suggest --shell \ + --remove-also --snmp --snmpversion --snmpcommunity' -- "$cur" ) ) + fi +} && +complete -F _munin_node_configure munin-node-configure + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mutt b/completions/mutt new file mode 100644 index 00000000..e5e9d289 --- /dev/null +++ b/completions/mutt @@ -0,0 +1,186 @@ +# mutt completion +# +# Mutt doesn't have an "addressbook" like Pine, but it has aliases and +# a "query" function to retrieve addresses, so that's what we use here. + +have mutt || have muttng && { + +# @param $1 (cur) Current word to complete +_muttaddr() +{ + _muttaliases "$1" + _muttquery "$1" + + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -u -- "$1" ) ) + + return 0 +} # _muttaddr() + + +# Find muttrc to use +# @output muttrc filename +_muttrc() +{ + # Search COMP_WORDS for '-F muttrc' or '-Fmuttrc' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + muttrc="$(dequote "${1:2}")" + else + shift + [ "$1" ] && muttrc="$(dequote "$1")" + fi + break + fi + shift + done + + if [ -z "$muttrc" ]; then + if [ -f ~/.${muttcmd}rc ]; then + muttrc="~/.${muttcmd}rc" + elif [ -f ~/.${muttcmd}/${muttcmd}rc ]; then + muttrc="~/.${muttcmd}/${muttcmd}rc" + fi + fi + printf "%s" "$muttrc" +} # _muttrc() + + +# Recursively build list of sourced config files +# @param $1 List of config files found so far +# @param $2 Config file to process +# @output List of config files +_muttconffiles() +{ + local file sofar + local -a newconffiles + + sofar=" $1 " + shift + while [[ "$1" ]]; do + newconffiles=( $(sed -n 's|^source[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*$|\1|p' $(eval echo $1) ) ) + for file in "${newconffiles[@]}"; do + [[ ! -f "$file" || "${sofar/ ${file} / }" != "$sofar" ]] && + continue + sofar="$sofar $file" + sofar=" $(eval _muttconffiles \"$sofar\" $file) " + done + shift + done + printf '%s\n' $sofar +} # _muttconffiles() + + +# @param $1 (cur) Current word to complete +_muttaliases() +{ + local cur=$1 muttrc muttcmd=${COMP_WORDS[0]} + local -a conffiles aliases + + muttrc=$(_muttrc) + [ -z "$muttrc" ] && return 0 + + conffiles=( $(eval _muttconffiles $muttrc $muttrc) ) + aliases=( $( sed -n 's|^alias[[:space:]]\{1,\}\([^[:space:]]\{1,\}\).*$|\1|p' \ + $(eval echo "${conffiles[@]}") ) ) + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${aliases[*]}" -- "$cur" ) ) + + return 0 +} + + +# @param $1 (cur) Current word to complete +_muttquery() +{ + local cur=$1 querycmd muttcmd=${COMP_WORDS[0]} + local -a queryresults + + querycmd="$( $muttcmd -Q query_command | sed -e 's|^query_command=\"\(.*\)\"$|\1|' -e 's|%s|'$cur'|' )" + if [[ -z "$cur" || -z "$querycmd" ]]; then + queryresults=() + else + queryresults=( $( $querycmd | \ + sed -n '2,$s|^\([^[:space:]]\{1,\}\).*|\1|p' ) ) + fi + + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W "${queryresults[*]}" \ + -- "$cur" ) ) + + return 0 +} + + +# @param $1 (cur) Current word to complete +_muttfiledir() +{ + local cur=$1 folder muttrc spoolfile muttcmd=${COMP_WORDS[0]} + + muttrc=$(_muttrc) + if [[ $cur == [=+]* ]]; then + folder="$( $muttcmd -F "$muttrc" -Q folder | sed -e 's|^folder=\"\(.*\)\"$|\1|' )" + : folder:=~/Mail + + # Match any file in $folder beginning with $cur + # (minus the leading '=' sign). + _compopt_o_filenames + COMPREPLY=( $( compgen -f -- "$folder/${cur:1}" ) ) + COMPREPLY=( ${COMPREPLY[@]#$folder/} ) + return 0 + elif [ "$cur" == !* ]; then + spoolfile="$( $muttcmd -F "$muttrc" -Q spoolfile | \ + sed -e 's|^spoolfile=\"\(.*\)\"$|\1|' )" + [ ! -z "$spoolfile" ] && eval cur="${cur/^!/$spoolfile}"; + fi + _filedir + + return 0 +} # _muttfiledir + + +_mutt() +{ + local cur prev + _get_comp_words_by_ref -n =+! cur prev + #cur=`_get_cword =+!` + #prev=`_get_pword =+!` + + COMPREPLY=() + + case $cur in + -*) + COMPREPLY=( $( compgen -W '-A -a -b -c -e -f -F -H -i -m -n \ + -p -Q -R -s -v -x -y -z -Z -h' -- "$cur" ) ) + return 0 + ;; + *) + case $prev in + -a|-f|-F|-H|-i) + _muttfiledir "$cur" + return 0 + ;; + -A) + _muttaliases "$cur" + return 0 + ;; + -e|-m|-Q|-s|-h|-p|-R|-v|-y|-z|-Z) + return 0 + ;; + *) + _muttaddr "$cur" + return 0 + ;; + esac + ;; + esac +} # _mutt() +complete -F _mutt -o default mutt muttng +} # have mutt + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/mysqladmin b/completions/mysqladmin new file mode 100644 index 00000000..c9415696 --- /dev/null +++ b/completions/mysqladmin @@ -0,0 +1,71 @@ +# bash completion for mysqladmin + +have mysqladmin && +_mysqladmin() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -u|--user) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + -h|--host) + _known_hosts_real "$cur" + return 0 + ;; + --character-sets-dir|--ssl-capath) + _filedir -d + return 0 + ;; + -S|--socket) + _filedir sock + return 0 + ;; + --defaults-file|--defaults-extra-file) + _filedir + return 0 + ;; + -c|--count|--default-character-set|-P|--port|-O|--set-variable|\ + -i|--sleep|--ssl-ca|--ssl-cert|--ssl-cipher|--ssl-key|-w|--wait|\ + --connect_timeout|--shutdown_timeout) + # Argument required but no completions available + return 0 + ;; + '-?'|--help|-V|--version) + # All other options are noop with these + return 0 + ;; + esac + + $split && return 0 + + COMPREPLY=( $( compgen -W '--count --debug-check --debug-info --force \ + --compress --character-sets-dir --default-character-set --help --host \ + --no-beep --password --port --protocol --relative --set-variable \ + --silent --socket --sleep --ssl --ssl-ca --ssl-capath --ssl-cert \ + --ssl-cipher --ssl-key --ssl-verify-server-cert --user --verbose \ + --version --vertical --wait --connect_timeout --shutdown_timeout \ + --print-defaults --no-defaults --defaults-file --defaults-extra-file' \ + -- "$cur" ) ) + + COMPREPLY=( "${COMPREPLY[@]}" \ + $( compgen -W 'create debug drop extended-status flush-hosts \ + flush-logs flush-status flush-tables flush-threads flush-privileges \ + kill password old-password ping processlist reload refresh shutdown \ + status start-slave stop-slave variables version' -- "$cur" ) ) +} && +complete -F _mysqladmin mysqladmin + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ncftp b/completions/ncftp new file mode 100644 index 00000000..b831f444 --- /dev/null +++ b/completions/ncftp @@ -0,0 +1,26 @@ +# bash completion for ncftp + +have ncftp && +_ncftp() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ $COMP_CWORD -eq 1 && -f ~/.ncftp/bookmarks ]]; then + COMPREPLY=( $( compgen -W '$( sed -ne "s/^\([^,]\{1,\}\),.*$/\1/p" \ + ~/.ncftp/bookmarks )' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _ncftp -o default ncftp + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/net-tools b/completions/net-tools new file mode 100644 index 00000000..e7de2b04 --- /dev/null +++ b/completions/net-tools @@ -0,0 +1,131 @@ +# bash completion for net tools + +have mii-tool && +_mii_tool() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--force) + COMPREPLY=( $( compgen -W '100baseTx-FD 100baseTx-HD \ + 10baseT-FD 10baseT-HD' -- "$cur" ) ) + return 0 + ;; + -A|--advertise) + COMPREPLY=( $( compgen -W '100baseT4 100baseTx-FD 100baseTx-HD \ + 10baseT-FD 10baseT-HD' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--verbose --version --reset --restart \ + --watch --log --advertise --force' -- "$cur" ) ) + else + _available_interfaces -a + fi +} && +complete -F _mii_tool -o default mii-tool + +have mii-diag && +_mii_diag() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|-A|--advertise|--fixed-speed) + COMPREPLY=( $( compgen -W '100baseT4 100baseTx \ + 100baseTx-FD 100baseTx-HD 10baseT 10baseT-FD \ + 10baseT-HD' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--advertise --fixed-speed --all-interfaces \ + --status --debug --read-parameters --set-parameters --msg-level \ + --phy --restart --reset --verbose --version --watch --help' \ + -- "$cur" ) ) + else + _available_interfaces -a + fi +} && +complete -F _mii_diag -o default mii-diag + +# Linux route(8) completion +# +[ $UNAME = Linux ] && have route && +_route() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ "$prev" = dev ]; then + _available_interfaces + return 0 + fi + + # Remove already given options from completions + local i found + for opt in add del -host -net netmask metric mss window irtt reject mod \ + dyn reinstate dev default gw; do + found=false + for (( i=1; i < ${#COMP_WORDS[@]}-1; i++ )); do + [ "${COMP_WORDS[i]}" = "$opt" ] && found=true && break + done + $found || COMPREPLY[${#COMPREPLY[@]}]="$opt" + done + + COMPREPLY=( $( compgen -W '"${COMPREPLY[@]}"' -- "$cur" ) ) +} && +complete -F _route route + +have ether-wake && +_ether_wake() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref -n : cur prev + + case $prev in + -i) + _available_interfaces + return 0 + ;; + -p) + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-b -D -i -p -V' -- "$cur" ) ) + return 0 + fi + + _mac_addresses +} && +complete -F _ether_wake ether-wake + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/nmap b/completions/nmap new file mode 100644 index 00000000..19f0a07e --- /dev/null +++ b/completions/nmap @@ -0,0 +1,60 @@ +# bash completion for nmap + +have nmap && +_nmap() +{ + local cur prev + + COMPREPLY=() + cur=`_get_cword` + prev=`_get_pword` + + case $prev in + -iL|-oN|-oX|-oS|-oG|---excludefile|--resume|--stylesheet) + _filedir + return 0 + ;; + -oA|--datadir) + _filedir -d + return 0 + ;; + -e) + _available_interfaces + return 0 + ;; + -b|--dns-servers) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-iL -iR --exclude --excludefile -sL -sP \ + -PN -PS -PA -PU -PY -PE -PP -PM -PO -n -R --dns-servers \ + --system-dns --traceroute -sS -sT -sA -sW -sM -sU -sN -sF -sX \ + --scanflags -sI -sY -sZ -sO -b -p -F -r --top-ports --port-ratio \ + -sV --version-intensity --version-light --version-all \ + --version-trace -sC --script= --script-args= --script-trace \ + --script-updatedb -O --osscan-limit --osscan-guess -T0 -T1 -T2 -T3 \ + -T4 -T5 --min-hostgroup --max-hostgroup --min-parallelism \ + --max-parallelism --min-rtt-timeout --max-rtt-timeout \ + --initial-rtt-timeout --max-retries --host-timeout --scan-delay \ + --max-scan-delay --min-rate --max-rate -f --mtu -D -S -e \ + --source-port --data-length --ip-options --ttl --spoof-mac \ + --badsum --adler32 -oN -oX -oS -oG -oA -v -d --reason --open \ + --packet-trace --iflist --log-errors --append-output --resume \ + --stylesheet --webxml --no-stylesheet -6 -A --datadir --send-eth \ + --send-ip --privilege--unprivileged -V -h' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi +} && +complete -F _nmap nmap + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ntpdate b/completions/ntpdate new file mode 100644 index 00000000..bf004b55 --- /dev/null +++ b/completions/ntpdate @@ -0,0 +1,37 @@ +# bash completion for ntpdate + +have ntpdate && +_ntpdate() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -k) + _filedir + return 0 + ;; + -U) + COMPREPLY=( $( compgen -u "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-4 -6 -b -B -d -Q -q -s -u -v -a\ + -e -k -p -o -r -t' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi +} && +complete -F _ntpdate ntpdate + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/open-iscsi b/completions/open-iscsi new file mode 100644 index 00000000..8c650d59 --- /dev/null +++ b/completions/open-iscsi @@ -0,0 +1,78 @@ +# iscsiadm(1) completion + +have iscsiadm && +_iscsiadm() +{ + local cur prev mode split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -m|--mode) + COMPREPLY=( $( compgen -W 'discovery node session iface fw host' \ + -- "$cur" ) ) + return 0; + ;; + -o|--op) + COMPREPLY=( $( compgen -W 'new delete update show' -- "$cur" ) ) + return 0; + ;; + -t|--type) + COMPREPLY=( $( compgen -W 'sendtargets st slp isns fw' -- "$cur" ) ) + return 0; + ;; + -L|-U|--loginall|--logoutall) + COMPREPLY=( $( compgen -W 'all manual automatic' -- "$cur" ) ) + return 0; + ;; + esac + + $split && return 0 + + local options + if [[ $COMP_CWORD -gt 1 ]] ; then + mode=${COMP_WORDS[2]} + + case $mode in + discovery) + options='--help --version --debug --print --interface --type \ + --portal --login --op --name --value' + ;; + node) + options='--help --version --debug --print --loginall \ + --logoutall--show -T --portal --interface --login \ + --logout --rescan --stats --op --name --value' + ;; + session) + options='--help --version --debug --print --sid --logout \ + --rescan --stats' + ;; + iface) + options='--help --version --debug --print --interface --op \ + --name --value' + ;; + fw) + options='--login' + ;; + host) + options='--print -H' + ;; + esac + else + options='--mode' + fi + + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) +} && +complete -F _iscsiadm iscsiadm + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/openldap b/completions/openldap new file mode 100644 index 00000000..e4bbba1f --- /dev/null +++ b/completions/openldap @@ -0,0 +1,266 @@ +# bash completion for openldap + +have ldapsearch && { +_ldap_uris() +{ + COMPREPLY=( $( compgen -W 'ldap:// ldaps://' -- "$cur" ) ) +} + +_ldap_protocols() +{ + COMPREPLY=( $( compgen -W '2 3' -- "$cur" ) ) +} + +_ldapsearch() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -T) + _filedir -d + return 0 + ;; + -f|-y) + _filedir + return 0 + ;; + -s) + COMPREPLY=( $( compgen -W 'base one sub children' -- "$cur" ) ) + return 0 + ;; + -a) + COMPREPLY=( $( compgen -W 'never always search find' \ + -- "$cur" ) ) + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -u -v -t -tt -T -F -A -C -L -LL \ + -LLL -M -MM -S -d -f -x -D -W -w -y -H -h -p -b -s -a \ + -P -e -E -l -z -O -I -Q -U -R -X -Y -Z -ZZ' -- "$cur" ) ) + fi +} +complete -F _ldapsearch ldapsearch + +_ldapaddmodify() +{ + local cur prev options + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -S|-f|-y) + _filedir + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + options='-c -S -n -v -M -MM -d -D -W -w -y -h -H -p -P -O -I \ + -Q -U -R -x -X -Y -Z -ZZ -f' + if [[ ${COMP_WORDS[0]} == ldapmodify ]]; then + options="$options -a" + fi + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + fi +} +complete -F _ldapaddmodify ldapadd ldapmodify + +_ldapdelete() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -f|-y) + _filedir + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -v -c -M -MM -d -f -D -W -w -y \ + -H -h -P -p -O -U -R -r -x -I -Q -X -Y -Z -ZZ' -- "$cur" ) ) + fi +} +complete -F _ldapdelete ldapdelete + +_ldapcompare() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -y) + _filedir + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -v -z -M -MM -d -D -W -w -y \ + -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) ) + fi +} +complete -F _ldapcompare ldapcompare + +_ldapmodrdn() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -f|-y) + _filedir + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r -s -n -v -c -M -MM -d -D -W -w \ + -y -H -h -P -p -O -I -Q -U -R -x -X -Y -Z -ZZ -f' -- "$cur" ) ) + fi +} +complete -F _ldapmodrdn ldapmodrdn + +_ldapwhoami() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -f|-y) + _filedir + return 0 + ;; + -P) + _ldap_protocols + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-n -v -z -d -D -W -w -y -H -h -p -P \ + -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) ) + fi +} +complete -F _ldapwhoami ldapwhoami + +_ldappasswd() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h) + _known_hosts_real "$cur" + return 0 + ;; + -H) + _ldap_uris + return 0 + ;; + -t|-T|-y) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-A -a -t -d -D -H -h -n -p -S -s -T \ + -v -W -w -y -O -I -Q -U -R -x -X -Y -Z -ZZ' -- "$cur" ) ) + fi +} +complete -F _ldappasswd ldappasswd +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/openssl b/completions/openssl new file mode 100644 index 00000000..e9796e6f --- /dev/null +++ b/completions/openssl @@ -0,0 +1,254 @@ +# bash completion for openssl + +have openssl && { +_openssl_sections() +{ + local config f + + # check if a specific configuration file is used + for (( i=2; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -config ]]; then + config=${COMP_WORDS[i+1]} + break + fi + done + + # if no config given, check some usual default locations + if [ -z "$config" ]; then + for f in /etc/ssl/openssl.cnf /etc/pki/tls/openssl.cnf \ + /usr/share/ssl/openssl.cnf; do + [ -f $f ] && config=$f && break + done + fi + + [ ! -f "$config" ] && return 0 + + COMPREPLY=( $( compgen -W "$( awk '/\[.*\]/ {print $2}' $config )" \ + -- "$cur" ) ) +} + +_openssl() +{ + local cur prev commands command options formats + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + commands='asn1parse ca ciphers crl crl2pkcs7 dgst dh dhparam dsa \ + dsaparam ec ecparam enc engine errstr gendh gendsa genrsa \ + nseq ocsp passwd pkcs12 pkcs7 pkcs8 prime rand req rsa \ + rsautl s_client s_server s_time sess_id smime speed spkac \ + verify version x509 md2 md4 md5 rmd160 sha sha1 aes-128-cbc \ + aes-128-ecb aes-192-cbc aes-192-ecb aes-256-cbc aes-256-ecb \ + base64 bf bf-cbc bf-cfb bf-ecb bf-ofb camellia-128-cbc \ + camellia-128-ecb camellia-192-cbc camellia-192-ecb \ + camellia-256-cbc camellia-256-ecb cast cast-cbc cast5-cbc \ + cast5-cfb cast5-ecb cast5-ofb des des-cbc des-cfb des-ecb \ + des-ede des-ede-cbc des-ede-cfb des-ede-ofb des-ede3 \ + des-ede3-cbc des-ede3-cfb des-ede3-ofb des-ofb des3 desx rc2 \ + rc2-40-cbc rc2-64-cbc rc2-cbc rc2-cfb rc2-ecb rc2-ofb rc4 \ + rc4-40' + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) ) + else + command=${COMP_WORDS[1]} + case $prev in + -CA|-CAfile|-CAkey|-CAserial|-cert|-certfile|-config|-content| \ + -dcert|-dkey|-dhparam|-extfile|-in|-inkey|-kfile|-key|-keyout| \ + -out|-oid|-prvrify|-rand|-recip|-revoke|-sess_in|-sess_out| \ + -spkac|-sign|-signkey|-signer|-signature|-ss_cert|-untrusted| \ + -verify) + _filedir + return 0 + ;; + -outdir|-CApath) + _filedir -d + return 0 + ;; + -name|-crlexts|-extensions) + _openssl_sections + return 0 + ;; + -inform|-outform|-keyform|-certform|-CAform|-CAkeyform|-dkeyform|-dcertform) + formats='DER PEM' + case $command in + x509) + formats="$formats NET" + ;; + smime) + formats="$formats SMIME" + ;; + esac + COMPREPLY=( $( compgen -W "$formats" -- "$cur" ) ) + return 0 + ;; + -connect) + _known_hosts_real "$cur" + return 0 + ;; + -starttls) + COMPREPLY=( $( compgen -W 'smtp pop3 imap ftp' \ + -- "$cur" ) ) + return 0 + ;; + -cipher) + COMPREPLY=( $( compgen -W "$(openssl ciphers | \ + tr ':' '\n')" -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + asn1parse) + options='-inform -in -out -noout -offset -length -i -oid \ + -strparse' + ;; + ca) + options='-verbose -config -name -gencrl -revoke \ + -crl_reason -crl_hold -crl_compromise \ + -crl_CA_compromise -crldays -crlhours -crlexts \ + -startdate -enddate -days -md -policy -keyfile -key \ + -passin -cert -selfsig -in -out -notext -outdir \ + -infiles -spkac -ss_cert -preserveDN -noemailDN \ + -batch -msie_hack -extensions -extfile -engine \ + -subj -utf8 -multivalue-rdn' + ;; + ciphers) + options='-v -ssl2 -ssl3 -tls1' + ;; + crl) + options='-inform -outform -text -in -out -noout -hash \ + -issuer -lastupdate -nextupdate -CAfile -CApath' + ;; + crl2pkcs7) + options='-inform -outform -in -out -print_certs' + ;; + dgst) + options='-md5 -md4 -md2 -sha1 -sha -mdc2 -ripemd160 -dss1 \ + -c -d -hex -binary -out -sign -verify -prverify \ + -signature' + ;; + dsa) + options='-inform -outform -in -passin -out -passout -des \ + -des3 -idea -text -noout -modulus -pubin -pubout' + ;; + dsaparam) + options='-inform -outform -in -out -noout -text -C -rand \ + -genkey' + ;; + enc) + options='-ciphername -in -out -pass -e -d -a -A -k -kfile \ + -S -K -iv -p -P -bufsize -debug' + ;; + dhparam) + options='-inform -outform -in -out -dsaparam -noout -text \ + -C -2 -5 -rand' + ;; + gendsa) + options='-out -des -des3 -idea -rand' + ;; + genrsa) + options='-out -passout -des -des3 -idea -f4 -3 -rand' + ;; + pkcs7) + options='-inform -outform -in -out -print_certs -text \ + -noout' + ;; + rand) + options='-out -rand -base64' + ;; + req) + options='-inform -outform -in -passin -out -passout -text \ + -noout -verify -modulus -new -rand -newkey -newkey \ + -nodes -key -keyform -keyout -md5 -sha1 -md2 -mdc2 \ + -config -x509 -days -asn1-kludge -newhdr -extensions \ + -reqexts section' + ;; + rsa) + options='-inform -outform -in -passin -out -passout \ + -sgckey -des -des3 -idea -text -noout -modulus -check \ + -pubin -pubout -engine' + ;; + rsautl) + options='-in -out -inkey -pubin -certin -sign -verify \ + -encrypt -decrypt -pkcs -ssl -raw -hexdump -asn1parse' + ;; + s_client) + options='-connect -verify -cert -certform -key -keyform \ + -pass -CApath -CAfile -reconnect -pause -showcerts \ + -debug -msg -nbio_test -state -nbio -crlf -ign_eof \ + -quiet -ssl2 -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 \ + -bugs -cipher -starttls -engine -tlsextdebug \ + -no_ticket -sess_out -sess_in -rand' + ;; + s_server) + options='-accept -context -verify -Verify -crl_check \ + -crl_check_all -cert -certform -key -keyform -pass \ + -dcert -dcertform -dkey -dkeyform -dpass -dhparam \ + -nbio -nbio_test -crlf -debug -msg -state -CApath \ + -CAfile -nocert -cipher -quiet -no_tmp_rsa -ssl2 \ + -ssl3 -tls1 -no_ssl2 -no_ssl3 -no_tls1 -no_dhe \ + -bugs -hack -www -WWW -HTTP -engine -tlsextdebug \ + -no_ticket -id_prefix -rand' + ;; + s_time) + options='-connect -www -cert -key -CApath -CAfile -reuse \ + -new -verify -nbio -time -ssl2 -ssl3 -bugs -cipher' + ;; + sess_id) + options='-inform -outform -in -out -text -noout -context \ + ID' + ;; + smime) + options='-encrypt -decrypt -sign -verify -pk7out -des \ + -des3 -rc2-40 -rc2-64 -rc2-128 -aes128 -aes192 -aes256 \ + -in -certfile -signer -recip -inform -passin -inkey \ + -out -outform -content -to -from -subject -text -rand' + ;; + speed) + options='-engine' + ;; + verify) + options='-CApath -CAfile -purpose -untrusted -help \ + -issuer_checks -verbose -certificates' + ;; + x509) + options='-inform -outform -keyform -CAform -CAkeyform -in \ + -out -serial -hash -subject_hash -issuer_hash -subject \ + -issuer -nameopt -email -startdate -enddate -purpose \ + -dates -modulus -fingerprint -alias -noout -trustout \ + -clrtrust -clrreject -addtrust -addreject -setalias \ + -days -set_serial -signkey -x509toreq -req -CA -CAkey \ + -CAcreateserial -CAserial -text -C -md2 -md5 -sha1 \ + -mdc2 -clrext -extfile -extensions -engine' + ;; + md5|md4|md2|sha1|sha|mdc2|ripemd160) + options='-c -d' + ;; + esac + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + else + if [[ "$command" == speed ]]; then + COMPREPLY=( $( compgen -W 'md2 mdc2 md5 hmac sha1 rmd160 \ + idea-cbc rc2-cbc rc5-cbc bf-cbc des-cbc des-ede3 rc4 \ + rsa512 rsa1024 rsa2048 rsa4096 dsa512 dsa1024 dsa2048 idea \ + rc2 des rsa blowfish' -- "$cur" ) ) + else + _filedir + fi + fi + fi +} +complete -F _openssl -o default openssl +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/p4 b/completions/p4 new file mode 100644 index 00000000..59b02c1d --- /dev/null +++ b/completions/p4 @@ -0,0 +1,58 @@ +# Perforce completion by Frank Cusack <frank@google.com> + +have p4 && +_p4() +{ + local cur prev words cword p4commands p4filetypes + + COMPREPLY=() + _get_comp_words_by_ref cur prev words cword + + # rename isn't really a command + p4commands="$( p4 help commands | awk 'NF>3 {print $1}' )" + p4filetypes="ctext cxtext ktext kxtext ltext tempobj ubinary \ + uresource uxbinary xbinary xltext xtempobj xtext \ + text binary resource" + + if [ $cword -eq 1 ]; then + COMPREPLY=( $( compgen -W "$p4commands" -- "$cur" ) ) + elif [ $cword -eq 2 ]; then + case $prev in + help) + COMPREPLY=( $( compgen -W "simple commands \ + environment filetypes jobview revisions \ + usage views $p4commands" -- "$cur" ) ) + ;; + admin) + COMPREPLY=( $( compgen -W "checkpoint stop" -- "$cur" ) ) + ;; + *) + ;; + esac + elif [ $cword -gt 2 ]; then + case $prev in + -t) + case ${words[$cword-2]} in + add|edit|reopen) + COMPREPLY=( $( compgen -W "$p4filetypes" -- "$cur") ) + ;; + *) + ;; + esac + ;; + *) + ;; + esac + fi + + return 0 +} && +complete -F _p4 -o default p4 g4 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/perl b/completions/perl new file mode 100644 index 00000000..843e249b --- /dev/null +++ b/completions/perl @@ -0,0 +1,131 @@ +# bash completion for perl + +have perl && +{ +_perlmodules() +{ + COMPREPLY=( $( compgen -P "$prefix" -W "$( $1 ${BASH_SOURCE[0]%/*}/helpers/perl modules $cur )" -- "$cur" ) ) + __ltrim_colon_completions "$prefix$cur" +} + +_perlfunctions() +{ + COMPREPLY=( $( compgen -P "$prefix" -W "$( ${BASH_SOURCE[0]%/*}/helpers/perl functions $cur )" -- "$cur" ) ) +} + +_perl() +{ + local cur prev prefix temp + local optPrefix optSuffix + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + prefix="" + + # If option not followed by whitespace, reassign prev and cur + if [[ "$cur" == -?* ]]; then + temp=$cur + prev=${temp:0:2} + cur=${temp:2} + optPrefix=-P$prev + optSuffix=-S/ + prefix=$prev + fi + + case $prev in + -D|-e|-E|-i|-F|-l) + return 0 + ;; + -I|-x) + local IFS=$'\n' + _compopt_o_filenames + COMPREPLY=( $( compgen -d $optPrefix $optSuffix -- "$cur" ) ) + return 0 + ;; + -m|-M) + temp="${cur#-}" + prefix="$prefix${cur%$temp}" + cur="$temp" + _perlmodules $1 + return 0 + ;; + -V) + if [[ $cur == :* ]]; then + temp="${cur##+(:)}" + prefix="$prefix${cur%$temp}" + local IFS=$'\n' + COMPREPLY=( $( compgen -P "$prefix" -W \ + '$( $1 -MConfig -e "print join \"\\n\", + keys %Config::Config" 2>/dev/null )' -- "$temp" ) ) + __ltrim_colon_completions "$prefix$temp" + fi + return 0 + ;; + -d|-dt) + if [[ $cur == :* ]]; then + temp="${cur#:}" + prefix="$prefix${cur%$temp}" + cur="Devel::$temp" + _perlmodules $1 + fi + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-C -s -T -u -U -W -X -h -v -V -c -w -d \ + -D -p -n -a -F -l -0 -I -m -M -P -S -x -i -e ' -- "$cur" ) ) + else + _filedir + fi +} +complete -F _perl perl + +_perldoc() +{ + local cur prev prefix temp + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + prefix="" + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -?* ]]; then + temp=$cur + prev=${temp:0:2} + cur=${temp:2} + prefix=$prev + fi + + # complete builtin perl functions + case $prev in + -f) + _perlfunctions "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h -v -t -u -m -l -F -X -f -q' -- "$cur" )) + else + # return available modules (unless it is clearly a file) + if [[ "$cur" != */* ]]; then + _perlmodules + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \ + '$( PAGER=/bin/cat man perl | \ + sed -ne "/perl.*Perl overview/,/perlwin32/p" | \ + awk "\$NF=2 { print \$1}" | command grep perl )' -- "$cur" ) ) + fi + _filedir 'p@(l|m|od)' + fi +} +complete -F _perldoc -o bashdefault perldoc +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/pine b/completions/pine new file mode 100644 index 00000000..2f069287 --- /dev/null +++ b/completions/pine @@ -0,0 +1,22 @@ +# PINE address-book completion + +have pine || have alpine && +_pineaddr() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -W '$( awk "{print \$1}" ~/.addressbook \ + 2>/dev/null)' -- "$cur" ) ) +} && +complete -F _pineaddr -o default pine alpine + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/pkg-config b/completions/pkg-config new file mode 100644 index 00000000..b999bd81 --- /dev/null +++ b/completions/pkg-config @@ -0,0 +1,51 @@ +# bash completion for pkgconfig + +have pkg-config && +_pkg_config() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + --variable|--define-variable|--atleast-version|--atleast-pkgconfig-version| \ + --exact-version|--max-version) + # argument required but no completions available + return 0 + ;; + -\?|--help|--version|--usage) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '--version --modversion \ + --atleast-pkgconfig-version --libs --static \ + --short-errors --libs-only-l --libs-only-other \ + --libs-only-L --cflags --cflags-only-I \ + --cflags-only-other --variable --define-variable \ + --exists --uninstalled --atleast-version \ + --exact-version --max-version --list-all --debug \ + --print-errors --silence-errors --errors-to-stdout \ + --print-provides --print-requires --help --usage' -- "$cur") ) + else + COMPREPLY=( $( compgen -W "$( pkg-config --list-all \ + 2>/dev/null | awk '{print $1}' )" -- "$cur" ) ) + fi +} && +complete -F _pkg_config pkg-config + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/pkg_install b/completions/pkg_install new file mode 100644 index 00000000..577d9c94 --- /dev/null +++ b/completions/pkg_install @@ -0,0 +1,30 @@ +# bash completion for FreeBSD base package management tools + +[ $UNAME = FreeBSD ] && +{ + +_pkg_delete() +{ + local cur pkgdir prev + + pkgdir=${PKG_DBDIR:-/var/db/pkg}/ + _get_comp_words_by_ref cur prev + + [[ "$prev" == -o || "$prev" == -p || "$prev" == -W ]] && return 0 + + COMPREPLY=( $( compgen -d "$pkgdir$cur" ) ) + COMPREPLY=( ${COMPREPLY[@]#$pkgdir} ) + + return 0 +} +complete -F _pkg_delete -o dirnames pkg_delete pkg_info + +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/pkgtools b/completions/pkgtools new file mode 100644 index 00000000..3a5df278 --- /dev/null +++ b/completions/pkgtools @@ -0,0 +1,22 @@ +# bash completion for Slackware Linux pkgtools + +have removepkg && [ -f /etc/slackware-version ] && +_removepkg() +{ + local packages cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( (cd /var/log/packages; compgen -f -- "$cur") ) ) +} && +complete -F _removepkg -o filenames removepkg && + complete -o dirnames -f -X '!*.t[bglx]z' installpkg upgradepkg explodepkg + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/pm-utils b/completions/pm-utils new file mode 100644 index 00000000..4deb82e7 --- /dev/null +++ b/completions/pm-utils @@ -0,0 +1,37 @@ +# bash completion for pm-utils + +have pm-is-supported && +_pm_is_supported() +{ + local cur + _get_comp_words_by_ref cur + COMPREPLY=( $( compgen -W '--help --suspend --hibernate --suspend-hybrid' \ + -- "$cur" ) ) +} && +complete -F _pm_is_supported pm-is-supported + +have pm-hibernate || have pm-suspend || have pm-suspend-hybrid && +_pm_action() +{ + local cur + _get_comp_words_by_ref cur + COMPREPLY=( $( compgen -W "--help $( _parse_help "$1" )" -- "$cur" ) ) +} && +complete -F _pm_action pm-hibernate pm-suspend pm-suspend-hybrid + +have pm-powersave && +_pm_powersave() +{ + local cur + _get_comp_words_by_ref cur + COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) +} && +complete -F _pm_powersave pm-powersave + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/portupgrade b/completions/portupgrade new file mode 100644 index 00000000..5389a5ca --- /dev/null +++ b/completions/portupgrade @@ -0,0 +1,57 @@ +# bash completion for FreeBSD portupgrade package + +have portupgrade && +_portupgrade() +{ + local cur pkgdir prev + + pkgdir=${PKG_DBDIR:-/var/db/pkg}/ + _get_comp_words_by_ref cur prev + + [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0 + + COMPREPLY=( $( compgen -d "$pkgdir$cur" ) ) + COMPREPLY=( ${COMPREPLY[@]#$pkgdir} ) + COMPREPLY=( ${COMPREPLY[@]%-*} ) + + return 0 +} && +complete -F _portupgrade -o dirnames portupgrade + +have portinstall && +_portinstall() +{ + local cur portsdir prev indexfile + local -a COMPREPLY2 + + portsdir=${PORTSDIR:-/usr/ports}/ + _get_comp_words_by_ref cur prev + # First try INDEX-5 + indexfile=$portsdir/INDEX-5 + # Then INDEX if INDEX-5 does not exist or system is not FreeBSD 5.x + [[ "${OSTYPE%.*}" == freebsd5 && -f $indexfile ]] || + indexfile=$portsdir/INDEX + + [[ "$prev" == -l || "$prev" == -L || "$prev" == -o ]] && return 0 + + COMPREPLY=( $( command grep -E "^$cur" < $indexfile | cut -d'|' -f1 ) ) + COMPREPLY2=( $( command grep -E "^[^\|]+\|$portsdir$cur" < $indexfile | \ + cut -d'|' -f2 ) ) + COMPREPLY2=( ${COMPREPLY2[@]#$portsdir} ) + COMPREPLY=( "${COMPREPLY[@]}" "${COMPREPLY2[@]}" ) + + return 0 +} && +complete -F _portinstall -o dirnames portinstall + +# _pkg_delete is in pkg_install +type _pkg_delete &>/dev/null && have pkg_deinstall && \ +complete -F _pkg_delete -o dirnames pkg_deinstall + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/postfix b/completions/postfix new file mode 100644 index 00000000..1311c987 --- /dev/null +++ b/completions/postfix @@ -0,0 +1,233 @@ +# bash completion for postfix + +have postfix && { +# postfix(1) +# +_postfix() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -c) + _filedir -d + return 0 + ;; + -D) + COMPREPLY=( $( compgen -W 'start' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-c -D -v' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -W 'check start stop abort flush reload status \ + set-permissions upgrade-configuration' -- "$cur" ) ) +} +complete -F _postfix postfix + +# postalias(1) and postmap(1) +# +_postmap() +{ + local cur prev len idx + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -c) + _filedir -d + return 0 + ;; + -[dq]) + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-N -f -i -n -o -p -r -v -w -c -d -q' \ + -- "$cur" ) ) + return 0 + fi + + if [[ "$cur" == *:* ]]; then + _compopt_o_filenames + COMPREPLY=( $( compgen -f -- "${cur#*:}" ) ) + else + len=${#cur} + idx=0 + for pval in $( /usr/sbin/postconf -m ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]="$pval:" + idx=$(($idx+1)) + fi + done + if [[ $idx -eq 0 ]]; then + _compopt_o_filenames + COMPREPLY=( $( compgen -f -- "$cur" ) ) + fi + fi + return 0 +} +complete -F _postmap postmap postalias + +# postcat(1) +# +_postcat() +{ + local cur prev pval len idx qfile + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -c) + _filedir -d + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-c -q -v' -- "$cur" ) ) + return 0 + fi + + qfile=0 + for idx in "${COMP_WORDS[@]}"; do + [[ "$idx" = -q ]] && qfile=1 && break + done + if [[ $qfile == 1 ]]; then + len=${#cur} + idx=0 + for pval in $( mailq 2>/dev/null | \ + sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* !].*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + else + _filedir + return 0 + fi +} +complete -F _postcat postcat + +# postconf(1) +# +_postconf() +{ + local cur prev pval len idx eqext + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -b|-t) + _filedir + return 0 + ;; + -c) + _filedir -d + return 0 + ;; + -e) + cur=${cur#[\"\']} + eqext='=' + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-A -a -b -c -d -e -h -m -l -n -t -v' \ + -- "$cur" ) ) + return 0 + fi + + len=${#cur} + idx=0 + for pval in $( /usr/sbin/postconf 2>/dev/null | cut -d ' ' -f 1 ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]="$pval$eqext" + idx=$(($idx+1)) + fi + done + return 0 +} +complete -F _postconf postconf + +# postsuper(1) +# +_postsuper() +{ + local cur prev pval len idx + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -c) + _filedir -d + return 0 + ;; + -[dr]) + len=${#cur} + idx=0 + for pval in ALL $( mailq 2>/dev/null | \ + sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* !].*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + -h) + len=${#cur} + idx=0 + for pval in ALL $( mailq 2>/dev/null | \ + sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; s/[* ].*$//; /!$/d' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + -H) + len=${#cur} + idx=0 + for pval in ALL $( mailq 2>/dev/null | \ + sed -e '1d; $d; /^[^0-9A-Z]/d; /^$/d; /^[0-9A-Z]*[* ]/d; s/!.*$//' ); do + if [[ "$cur" == "${pval:0:$len}" ]]; then + COMPREPLY[$idx]=$pval + idx=$(($idx+1)) + fi + done + return 0 + ;; + esac + + if [[ $cur == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -h -H -p -r -s -v' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -W 'hold incoming active deferred' -- "$cur" ) ) +} +complete -F _postsuper postsuper +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/postgresql b/completions/postgresql new file mode 100644 index 00000000..f874b67b --- /dev/null +++ b/completions/postgresql @@ -0,0 +1,162 @@ +# bash completion for Postgresql + +have psql && { +_pg_databases() +{ + # -w was introduced in 8.4, https://launchpad.net/bugs/164772 + # "Access privileges" in output may contain linefeeds, hence the NF > 1 + COMPREPLY=( $( compgen -W "$( psql -AtqwlF $'\t' 2>/dev/null | \ + awk 'NF > 1 { print $1 }' )" -- "$cur" ) ) +} + +_pg_users() +{ + # -w was introduced in 8.4, https://launchpad.net/bugs/164772 + COMPREPLY=( $( compgen -W "$( psql -Atqwc 'select usename from pg_user' \ + template1 2>/dev/null )" -- "$cur" ) ) + [ ${#COMPREPLY[@]} -eq 0 ] && COMPREPLY=( $( compgen -u -- "$cur" ) ) +} + +# createdb(1) completion +# +_createdb() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -h|--host) + _known_hosts_real "$cur" + return 0 + ;; + -U|--username|-O|--owner) + _pg_users + return 0 + ;; + -p|--port|-D|--tablespace|-E|--encoding|-T|--template) + # argument required but no completions available + return 0 + ;; + --help|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--tablespace --template --encoding --host \ + --port --username --password --echo --quiet --help --version' \ + -- "$cur" ) ) + else + _pg_databases + fi +} +complete -F _createdb -o default createdb + +# dropdb(1) completion +# +_dropdb() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -h|--host) + _known_hosts_real "$cur" + return 0 + ;; + -U|--username) + _pg_users + return 0 + ;; + --help|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--host --port --username --password \ + --interactive --echo --quiet --help --version' -- "$cur" ) ) + else + _pg_databases + fi +} +complete -F _dropdb -o default dropdb + +# psql(1) completion +# +_psql() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -h|--host) + _known_hosts_real "$cur" + return 0 + ;; + -U|--username) + _pg_users + return 0 + ;; + -d|--dbname) + _pg_databases + return 0 + ;; + -o|--output|-f|--file|-L|--log-file) + _filedir + return 0 + ;; + -c|--command|-F|--field-separator|-p|--port|-P|--pset|\ + -R|--record-separator|-T|--table-attr|-v|--set|--variable) + # argument required but no completions available + return 0 + ;; + -\?|--help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '--echo-all --no-align --command --dbname \ + --echo-queries --echo-hidden --file --field-separator --host \ + --html --list --log-file --output --port --pset --quiet \ + --record-separator --single-step --single-line --tuples-only \ + --table-attr --username --set --version --password --expanded \ + --no-psqlrc --single-transaction --help' -- "$cur" ) ) + else + # return list of available databases + _pg_databases + fi +} +complete -F _psql psql +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/povray b/completions/povray new file mode 100644 index 00000000..a843a5cb --- /dev/null +++ b/completions/povray @@ -0,0 +1,65 @@ +# povray completion by "David Necas (Yeti)" <yeti@physics.muni.cz> + +have povray || have xpovray || have spovray && +_povray() +{ + local cur prev povcur pfx oext defoext + defoext=png # default output extension, if cannot be determined FIXME + + COMPREPLY=() + _get_comp_words_by_ref -c povcur prev + + _expand || return 0 + + case $povcur in + [-+]I*) + cur="${povcur#[-+]I}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir pov + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + [-+]O*) + # guess what output file type user may want + case $( ( IFS=$'\n'; command grep '^[-+]F' <<<"${COMP_WORDS[*]}" ) ) in + [-+]FN) oext=png ;; + [-+]FP) oext=ppm ;; + [-+]F[CT]) oext=tga ;; + *) oext=$defoext ;; + esac + # complete filename corresponding to previously specified +I + COMPREPLY=( $( ( IFS=$'\n'; command grep '^[-+]I' <<<"${COMP_WORDS[*]}" ) ) ) + COMPREPLY=( ${COMPREPLY[@]#[-+]I} ) + COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} ) + cur="${povcur#[-+]O}" # to confuse _filedir + pfx="${povcur%"$cur"}" + _filedir $oext + COMPREPLY=( ${COMPREPLY[@]/#/$pfx} ) + return 0 + ;; + *.ini\[|*.ini\[*[^]]) # sections in .ini files + cur="${povcur#*\[}" + pfx="${povcur%\["$cur"}" # prefix == filename + [ -r "$pfx" ] || return 0 + COMPREPLY=( $(sed -e 's/^[[:space:]]*\[\('"$cur"'[^]]*\]\).*$/\1/' \ + -e 't' -e 'd' -- "$pfx") ) + # to prevent [bar] expand to nothing. can be done more easily? + COMPREPLY=( "${COMPREPLY[@]/#/$pfx[}" ) + return 0 + ;; + *) + cur="$povcur" + _filedir '@(ini|pov)' + return 0 + ;; + esac +} && +complete -F _povray povray xpovray spovray + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/procps b/completions/procps new file mode 100644 index 00000000..db8fc3d5 --- /dev/null +++ b/completions/procps @@ -0,0 +1,49 @@ +# Completions for tools included in procps and related + +# killall(1) (Linux and FreeBSD) and pkill(1) completion. +# +[[ $UNAME == Linux || $UNAME == FreeBSD ]] || have pkill && +_killall() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then + _signals + else + _pnames + fi + + return 0 +} +[[ $UNAME == Linux || $UNAME == FreeBSD ]] && complete -F _killall killall +have pkill && complete -F _killall pkill + +# pgrep(1) completion. +# +[ $UNAME = Linux ] || have pgrep && +_pgrep() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + _pnames + + return 0 +} +have pgrep && complete -F _pgrep pgrep + +# Linux pidof(8) completion. +[ $UNAME = Linux ] && complete -F _pgrep pidof + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/python b/completions/python new file mode 100644 index 00000000..17f96f50 --- /dev/null +++ b/completions/python @@ -0,0 +1,55 @@ +# bash completion for python + +have python && +_python() +{ + local prev cur i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -'?'|-h|--help|-V|--version|-c|-m) + return 0 + ;; + -Q) + COMPREPLY=( $( compgen -W "old new warn warnall" -- "$cur" ) ) + return 0 + ;; + -W) + COMPREPLY=( $( compgen -W "ignore default all module once error" \ + -- "$cur" ) ) + return 0 + ;; + !(?(*/)python*([0-9.])|-?)) + [[ $COMP_CWORD -lt 2 || ${COMP_WORDS[COMP_CWORD-2]} != -@(Q|W) ]] \ + && _filedir + ;; + esac + + + # if '-c' is already given, complete all kind of files. + for (( i=0; i < ${#COMP_WORDS[@]}-1; i++ )); do + if [[ ${COMP_WORDS[i]} == -c ]]; then + _filedir + fi + done + + + if [[ "$cur" != -* ]]; then + _filedir 'py?([co])' + else + COMPREPLY=( $( compgen -W "$( _parse_help $1 -h )" -- "$cur" ) ) + fi + + return 0 +} && +complete -F _python python python2 python3 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/qdbus b/completions/qdbus new file mode 100644 index 00000000..879df68d --- /dev/null +++ b/completions/qdbus @@ -0,0 +1,23 @@ +# Qt qdbus, dcop completion + +have qdbus || have dcop && +_qdbus() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + [ -n "$cur" ] && unset COMP_WORDS[${#COMP_WORDS[@]}-1] + COMPREPLY=( $( compgen -W '$( command ${COMP_WORDS[@]} 2>/dev/null | \ + sed s/\(.*\)// )' -- "$cur" ) ) +} && +complete -F _qdbus qdbus dcop + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/qemu b/completions/qemu new file mode 100644 index 00000000..03fa5632 --- /dev/null +++ b/completions/qemu @@ -0,0 +1,132 @@ +# bash completion for qemu + +have qemu && +_qemu() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -fd[ab]|-hd[abcd]|-cdrom|-option-rom|-kernel|-initrd|-bootp|-pidfile| \ + -loadvm|-mtdblock|-sd|-pflash|-bios) + _filedir + return 0 + ;; + -tftp|-smb|-L|-chroot) + _filedir -d + return 0 + ;; + -boot) + COMPREPLY=( $( compgen -W 'a c d n' -- "$cur" ) ) + return 0 + ;; + -k) + COMPREPLY=( $( compgen -W 'ar de-ch es fo fr-ca hu ja \ + mk no pt-br sv da en-gb et fr fr-ch is lt nl pl\ + ru th de en-us fi fr-be hr it lv nl-be pt sl tr' -- "$cur" ) ) + return 0 + ;; + -soundhw) + COMPREPLY=( $( compgen -W "$( qemu -soundhw ? | awk \ + '/^[[:lower:]]/ {print $1}' ) all" -- "$cur" ) ) + return 0 + ;; + -M) + COMPREPLY=( $( compgen -W "$( qemu -M ? | awk \ + '/^[[:lower:]]/ {print $1}' )" -- "$cur" ) ) + return 0 + ;; + -cpu) + COMPREPLY=( $( compgen -W "$( qemu -cpu ? | awk \ + '{print $2}' )" -- "$cur" ) ) + return 0 + ;; + -usbdevice) + COMPREPLY=( $( compgen -W 'mouse tablet disk: host: \ + serial: braille net' -- "$cur" ) ) + return 0 + ;; + -net) + COMPREPLY=( $( compgen -W 'nic user tap socket vde none dump' \ + -- "$cur" ) ) + return 0 + ;; + -serial|-parallel|-monitor) + COMPREPLY=( $( compgen -W 'vc pty none null /dev/ \ + file: stdio pipe: COM udp: tcp: telnet: unix: \ + mon: braille' -- "$cur" ) ) + return 0 + ;; + -redir) + COMPREPLY=( $( compgen -S":" -W 'tcp udp' -- "$cur" ) ) + return 0 + ;; + -bt) + COMPREPLY=( $( compgen -W 'hci vhci device' -- "$cur" ) ) + return 0 + ;; + -vga) + COMPREPLY=( $( compgen -W 'cirrus std vmware xenfb none' \ + -- "$cur" ) ) + return 0 + ;; + -drive) + COMPREPLY=( $( compgen -S"=" -W 'file if bus unit index media \ + cyls snapshot cache format serial addr' -- "$cur" ) ) + return 0 + ;; + -ballon) + COMPREPLY=( $( compgen -W 'none virtio' -- "$cur" ) ) + return 0 + ;; + -smbios) + COMPREPLY=( $( compgen -W 'file type' -- "$cur" ) ) + return 0 + ;; + -watchdog) + COMPREPLY=( $( compgen -W "$( qemu -watchdog ? 2>&1 | \ + awk '{print $1}' )" -- "$cur" ) ) + return 0 + ;; + -watchdog-action) + COMPREPLY=( $( compgen -W 'reset shutdown poweroff pause debug \ + none' -- "$cur" ) ) + return 0 + ;; + -runas) + _allowed_users + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-M -fda -fdb -hda -hdb -hdc -hdd \ + -cdrom -boot -snapshot -no-fd-bootchk -m -smp -nographic -vnc \ + -k -audio-help -soundhw -localtime -full-screen -pidfile \ + -daemonize -win2k-hack -option-rom -usb -usbdevice -net -tftp \ + -smb -redir -kernel -append -initrd -serial -parallel -monitor \ + -s -p -S -d -hdachs -L -std-vga -no-acpi -no-reboot -loadvm \ + -semihosting -cpu -bt -vga -drive -startdate -name -curses \ + -no-frame -no-quit -bootp -echr -no-shutdown -icount -g \ + -prom-env -help -version -numa -mtdblock -sd -pflash \ + -device -uuid -alt-grab -sdl -portrait -rtc-td-hack -no-hpet \ + -balloon -acpitable -smbios -singlestep -gdb -hdachs -bios \ + -kernel-kqemu -enable-kqemu -enable-kvm -clock -watchdog \ + -watchdog-action -virtioconsole -show-cursor -tb-size -incoming \ + -chroot -runas' -- "$cur" ) ) + else + _filedir + fi +} && +complete -F _qemu qemu + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/quota-tools b/completions/quota-tools new file mode 100644 index 00000000..2b528d92 --- /dev/null +++ b/completions/quota-tools @@ -0,0 +1,257 @@ +# bash completion for quota-tools + +have quota && { +_user_or_group() +{ + local i + + # complete on groups if -g was given + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -g ]]; then + COMPREPLY=( $( compgen -g -- "$cur" ) ) + return 0 + fi + done + + # otherwise complete on users + COMPREPLY=( $( compgen -u -- "$cur" ) ) +} + +_quota_formats() +{ + COMPREPLY=( $( compgen -W 'vfsold vfsv0 rpc xfs' -- "$cur" ) ) +} + +_filesystems() +{ + # Only list filesystems starting with "/", otherwise we also get + #+ "binfmt_misc", "proc", "tmpfs", ... + COMPREPLY=( $( compgen -W "$(awk '/^\// {print $1}' /etc/mtab)" \ + -- "$cur" ) ) +} + +_quota() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-F --format -g --group -u --user -v \ + --verbose -s --human-readable -p --raw-grace -i --no-autofs -l \ + --local-only -A --all-nfs -m --no-mixed-pathnames -q --quiet -Q \ + --quiet-refuse -w --no-wrap' -- "$cur" ) ) + else + _user_or_group + fi +} +complete -F _quota -o default quota + +_setquota() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \ + -F --format -g --group -u --user -p --prototype -b --batch \ + -c --continue-batch -t --edit-period -T --edit-times -a --all' \ + -- "$cur" ) ) + else + _count_args + + case $args in + 1) + _user_or_group + ;; + 2) + _filesystems + ;; + esac + + fi +} +complete -F _setquota -o default setquota + +_edquota() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + -f|--filesystem) + _filesystems + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r --remote -m --no-mixed-pathnames \ + -g --group -u --user -p --prototype -F --format -f --filesystem \ + -t --edit-period -T --edit-times' -- "$cur" ) ) + else + _user_or_group + fi +} +complete -F _edquota -o default edquota + +_quotacheck() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b --backup -v --verbose -d --debug \ + -g --group -u --user -c --create-files -f --force -i \ + --interactive -n --use-first-dquot -M --try-remount -m \ + --no-remount -R --exclude-root -F --format -a --all' -- "$cur" ) ) + else + _filesystems + fi +} +complete -F _quotacheck -o default quotacheck + +_repquota() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -s --human-readable \ + -c --batch-translation -C --no-batch-translation -t \ + --truncate-names -n --no-names -p --raw-grace -i --no-autofs \ + -u --user -g --group -F --format' -- "$cur" ) ) + else + _filesystems + fi +} +complete -F _repquota -o default repquota + +_quotaon() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \ + -g --group -f --off -p --print-state -F --format' -- "$cur" ) ) + else + _filesystems + fi +} +complete -F _quotaon -o default quotaon + +_quotaoff() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -F|--format) + _quota_formats + return 0 + ;; + -x|--xfs-command) + COMPREPLY=( $( compgen -W 'delete enforce' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --all -v --verbose -u --user \ + -g --group -p --print-state -x --xfs-command -F --format' \ + -- "$cur" ) ) + else + _filesystems + fi +} +complete -F _quotaoff -o default quotaoff +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rcs b/completions/rcs new file mode 100644 index 00000000..d859b8a9 --- /dev/null +++ b/completions/rcs @@ -0,0 +1,43 @@ +# bash completion for rcs + +have rcs && +_rcs() +{ + local cur prev file dir i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + file=${cur##*/} + dir=${cur%/*} + + # deal with relative directory + [ "$file" = "$dir" ] && dir=. + + COMPREPLY=( $( compgen -f "$dir/RCS/$file" ) ) + + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + file=${COMPREPLY[$i]##*/} + dir=${COMPREPLY[$i]%RCS/*} + COMPREPLY[$i]=$dir$file + done + + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -G "$dir/$file*,v" ) ) + + for (( i=0; i < ${#COMPREPLY[@]}; i++ )); do + COMPREPLY[$i]=${COMPREPLY[$i]%,v} + done + + # default to files if nothing returned and we're checking in. + # otherwise, default to directories + [[ ${#COMPREPLY[@]} -eq 0 && $1 == ci ]] && _filedir || _filedir -d +} && +complete -F _rcs ci co rlog rcs rcsdiff + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rdesktop b/completions/rdesktop new file mode 100644 index 00000000..7acf47a5 --- /dev/null +++ b/completions/rdesktop @@ -0,0 +1,57 @@ +# bash completion for rdesktop + +have rdesktop && +_rdesktop() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -k) + COMPREPLY=( $( command ls \ + /usr/share/rdesktop/keymaps 2>/dev/null | \ + command grep -E -v '(common|modifiers)' ) ) + COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \ + $HOME/.rdesktop/keymaps 2>/dev/null ) ) + COMPREPLY=( ${COMPREPLY[@]:-} $( command ls \ + ./keymaps 2>/dev/null ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) ) + return 0 + ;; + -a) + COMPREPLY=( $( compgen -W '8 15 16 24' -- "$cur" ) ) + return 0 + ;; + -x) + COMPREPLY=( $( compgen -W 'b broadband m modem l lan' \ + -- $cur ) ) + return 0 + ;; + -r) + # FIXME: should do -o nospace for the colon options + COMPREPLY=( $( compgen -W 'comport: disk: lptport: \ + printer: sound: lspci scard' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-u -d -s -c -p -n -k -g -f -b -L \ + -A -B -e -E -m -C -D -K -S -T -N -X -a -z -x -P -r \ + -0 -4 -5' -- "$cur" ) ) + else + _known_hosts_real "$cur" + fi + +} && +complete -F _rdesktop rdesktop + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/reportbug b/completions/reportbug new file mode 100644 index 00000000..0c44bd68 --- /dev/null +++ b/completions/reportbug @@ -0,0 +1,132 @@ +# bash completion for (Debian) reportbug package + +have reportbug && +_reportbug() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -f|--filename|-i|--include|--mta|-o|--output) + _filedir + return 0 + ;; + -B|--bts) + COMPREPLY=( $( compgen -W "debian guug kde mandrake help" -- \ + "$cur" )) + return 0 + ;; + -e|--editor|--mua) + COMP_WORDS=(COMP_WORDS[0] "$cur") + COMP_CWORD=1 + _command + return 0 + ;; + --mode) + COMPREPLY=( $( compgen -W "novice standard expert" -- "$cur" ) ) + return 0 + ;; + -S|--severity) + COMPREPLY=( $( compgen -W "grave serious important normal \ + minor wishlist" -- "$cur" ) ) + return 0 + ;; + -u|--ui|--interface) + COMPREPLY=( $( compgen -W "newt text gnome" -- "$cur" ) ) + return 0 + ;; + -t|--type) + COMPREPLY=( $( compgen -W "gnats debbugs" -- "$cur" ) ) + return 0 + ;; + -T|--tag) + COMPREPLY=( $( compgen -W "none \ + woody potato sarge sarge-ignore etch etch-ignore \ + lenny lenny-ignore sid experimental confirmed \ + d-i fixed fixed-in-experimental fixed-upstream \ + help l10n moreinfo patch pending security \ + unreproducible upstream wontfix ipv6 lfs" -- "$cur" )) + return 0 + ;; + --from-buildd) + COMPREPLY=( $( compgen -S "_" -W '$( apt-cache dumpavail | \ + command grep "^Source: $cur" | sort -u | cut -f2 -d" " )' )) + return 0 + ;; + *) + ;; + esac + + COMPREPLY=($( compgen -W '--help --version --attach \ + --no-query-bts --query-bts --bts --body --body-file --bodyfile \ + --no-config-files --class --configure --check-available --debug \ + --no-check-available --debconf --test --draftpath --editor --email \ + --exit-prompt --filename --from-buildd --gnupg --gpg --path --gnus \ + --header --include --no-check-installed --check-installed \ + --justification --kudos --keyid --license --list-cc \ + --maintonly --mirror --mode --mua --mta --mutt --mh --nmh \ + --bugnumber --no-bug-script --no-cc-menu --output --offline \ + --print --paranoid --no-paranoid --pgp --proxy --http_proxy \ + --pseudo-header --quiet --query-only --query-source --no-query-source \ + --realname --report-quiet --reply-to --replyto --subject --severity \ + --smtphost --timeout --tls --smtpuser --smtppasswd --src --source --type \ + --tag --template --verify --no-verify --no-cc --package-version \ + --no-compress --ui --interface \ + wnpp boot-floppies kernel bugs.debian.org \ + cdimage.debian.org general installation-reports \ + listarchives lists.debian.org mirrors nm.debian.org \ + press project qa.debian.org release-notes \ + security.debian.org tech-ctte upgrade-reports \ + www.debian.org' -- "$cur" ) \ + $( apt-cache pkgnames -- "$cur" 2> /dev/null) ) + _filedir + return 0 +} && +complete -F _reportbug reportbug + +have querybts && +_querybts() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -B|--bts) + COMPREPLY=( $( compgen -W "debian guug kde mandrake help" \ + -- "$cur" )) + return 0 + ;; + -u|--ui|--interface) + COMPREPLY=($( compgen -W "newt text gnome" -- "$cur" )) + return 0 + ;; + esac + + $split && return 0 + + COMPREPLY=($( compgen -W '-h --help -v --version -A --archive \ + -B --bts -l --ldap --no-ldap --proxy --http_proxy \ + -s --source -w --web -u --ui --interface \ + wnpp boot-floppies kernel bugs.debian.org \ + cdimage.debian.org general installation-reports \ + listarchives lists.debian.org mirrors nm.debian.org \ + press project qa.debian.org release-notes \ + security.debian.org tech-ctte upgrade-reports \ + www.debian.org' -- "$cur" ) \ + $( apt-cache pkgnames -- "$cur" 2> /dev/null) ) +} && +complete -F _querybts querybts + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/resolvconf b/completions/resolvconf new file mode 100644 index 00000000..9773696d --- /dev/null +++ b/completions/resolvconf @@ -0,0 +1,30 @@ +# bash completion for resolvconf + +have resolvconf && +_resolvconf() +{ + local cur command + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-d) + _available_interfaces + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -u' -- "$cur" ) ) + fi +} && +complete -F _resolvconf resolvconf + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rfkill b/completions/rfkill new file mode 100644 index 00000000..5c51ff9d --- /dev/null +++ b/completions/rfkill @@ -0,0 +1,37 @@ +# bash completion for rfkill + +have rfkill && +_rfkill() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version' -- "$cur" ) ) + else + case $COMP_CWORD in + 1) + COMPREPLY=( $( compgen -W "help event list block unblock" \ + -- "$cur" ) ) + ;; + 2) + if [[ $prev == block || $prev == unblock ]]; then + COMPREPLY=( $( compgen -W "$(rfkill list | awk -F: \ + '/^[0-9]/ {print $1}') all wifi bluetooth uwb wimax \ + wwan gps" -- "$cur" ) ) + fi + ;; + esac + fi +} && +complete -F _rfkill rfkill + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ri b/completions/ri new file mode 100644 index 00000000..be66d98f --- /dev/null +++ b/completions/ri @@ -0,0 +1,96 @@ +# ri completion for Ruby documentation by Ian Macdonald <ian@caliban.org> + +have ri && { +ri_get_methods() +{ + local regex + + if [ "$ri_version" = integrated ]; then + if [ -z "$separator" ]; then + regex="(Instance|Class)" + elif [ "$separator" = "#" ]; then + regex=Instance + else + regex=Class + fi + + COMPREPLY=( ${COMPREPLY[@]} \ + "$( ri ${classes[@]} 2>/dev/null | ruby -ane \ + 'if /^'"$regex"' methods:/.../^------------------|^$/ and \ + /^ / then print $_.split(/, |,$/).grep(/^[^\[]*$/).join("\n"); \ + end' | sort -u )" ) + else + # older versions of ri didn't distinguish between class/module and + # instance methods + COMPREPLY=( ${COMPREPLY[@]} \ + "$( ruby -W0 $ri_path ${classes[@]} | ruby -ane \ + 'if /^-/.../^-/ and ! /^-/ and ! /^ +(class|module): / then \ + print $_.split(/, |,$| +/).grep(/^[^\[]*$/).join("\n"); \ + end' | sort -u )" ) + fi + COMPREPLY=( $( compgen $prefix -W '${COMPREPLY[@]}' -- $method ) ) +} + +# needs at least Ruby 1.8.0 in order to use -W0 +_ri() +{ + local cur class method prefix ri_path ri_version separator IFS + local -a classes + + COMPREPLY=() + _get_comp_words_by_ref cur + + ri_path=$(type -p ri) + # which version of ri are we using? + # -W0 is required here to stop warnings from older versions of ri + # from being captured when used with Ruby 1.8.1 and later + ri_version="$(ruby -W0 $ri_path -v 2>&1)" || ri_version=integrated + [ "$ri_version" != "${ri_version%200*}" ] && ri_version=integrated + + # need to also split on commas + IFS=$', \n\t' + if [[ "$cur" == [A-Z]*[#.]* ]]; then + [[ "$cur" == *#* ]] && separator=# || separator=. + # we're completing on class and method + class=${cur%$separator*} + method=${cur#*$separator} + classes=( $class ) + prefix="-P $class$separator" + ri_get_methods + return 0 + fi + + if [ "$ri_version" = integrated ]; then + # integrated ri from Ruby 1.9 + classes=( $( ri -c | ruby -ne 'if /^\s*$/..$stdin.eof then \ + if /, [A-Z]+/ then print; end; end' ) ) + elif [ "$ri_version" = "ri 1.8a" ]; then + classes=( $( ruby -W0 $ri_path | \ + ruby -ne 'if /^'"'"'ri'"'"' has/..$stdin.eof then \ + if /^ .*[A-Z]/ then print; end; end' )) + else + classes=( $( ruby -W0 $ri_path | \ + ruby -ne 'if /^I have/..$stdin.eof then \ + if /^ .*[A-Z]/ then print; end; end' )) + fi + + COMPREPLY=( $( compgen -W '${classes[@]}' -- "$cur" ) ) + if [[ "$cur" == [A-Z]* ]]; then + # we're completing on class or module alone + return 0 + fi + + # we're completing on methods + method=$cur + ri_get_methods +} +complete -F _ri ri +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rpcdebug b/completions/rpcdebug new file mode 100644 index 00000000..be2a8709 --- /dev/null +++ b/completions/rpcdebug @@ -0,0 +1,57 @@ +# bash completion for rpcdebug + +have rpcdebug && { +_rpcdebug_flags() +{ + + local i module + + for (( i=0; i < ${#COMP_WORDS[@]}; i++ )); do + if [[ ${COMP_WORDS[i]} == -m ]]; then + module=${COMP_WORDS[i+1]} + fi + done + + if [ -n "$module" ]; then + COMPREPLY=( $( compgen -W "$(rpcdebug -vh 2>&1 \ + | command grep '^'$module' '\ + | awk '{$1 = ""; print $0}')" -- "$cur" ) ) + fi +} + +_rpcdebug() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -s) + _rpcdebug_flags + return 0 + ;; + -c) + _rpcdebug_flags + return 0 + ;; + -m) + COMPREPLY=( $( compgen -W 'rpc nfs nfsd nlm' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-v -h -m -s -c' -- "$cur" ) ) + fi +} +complete -F _rpcdebug rpcdebug +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rpm b/completions/rpm new file mode 100644 index 00000000..bbab0368 --- /dev/null +++ b/completions/rpm @@ -0,0 +1,309 @@ +# bash completion for rpm + +have rpm && { +# helper functions + +_rpm_installed_packages() +{ + local nodig="$1" nosig="$2" + + if [[ -r /var/log/rpmpkgs && \ + /var/log/rpmpkgs -nt /var/lib/rpm/Packages ]]; then + # using RHL 7.2 or later - this is quicker than querying the DB + COMPREPLY=( $( compgen -W "$( sed -ne \ + 's|^\([^[:space:]]\{1,\}\)-[^[:space:]-]\{1,\}-[^[:space:]-]\{1,\}\.rpm$|\1|p' \ + /var/log/rpmpkgs )" -- "$cur" ) ) + elif type rpmqpack &>/dev/null ; then + # SUSE's rpmqpack is faster than rpm -qa + COMPREPLY=( $( compgen -W '$( rpmqpack )' -- "$cur" ) ) + else + _rpm_nodigsig + COMPREPLY=( $( rpm -qa $nodig $nosig --qf='%{NAME} ' "$cur*" ) ) + fi +} + +_rpm_groups() +{ + local IFS=$'\n' + COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig --queryformat \ + '%{group}\n' )" -- "$cur" ) ) +} + +_rpm_nodigsig() +{ + if [[ -z "$nodig" && -z "$nosig" ]]; then + local rpmver + + rpmver=$(rpm --version) + rpmver=${rpmver##* } + + if [[ "$rpmver" > "4.0.4" ]]; then + nodig="--nodigest" + fi + if [[ "$rpmver" > "4.0.99" ]]; then + nosig="--nosignature" + fi + fi +} + +# rpm(8) completion +# +_rpm() +{ + local cur prev opts nodig nosig + + COMPREPLY=() + _get_comp_words_by_ref cur prev + nodig="" + nosig="" + _rpm_nodigsig + + if [ $COMP_CWORD -eq 1 ]; then + # first parameter on line + case $cur in + -b*) + COMPREPLY=( $( compgen -W '-ba -bb -bc -bi -bl -bp -bs' \ + -- "$cur" ) ) + ;; + -t*) + COMPREPLY=( $( compgen -W '-ta -tb -tc -ti -tl -tp -ts' \ + -- "$cur" ) ) + ;; + --*) + COMPREPLY=( $( compgen -W '--help --version --initdb \ + --checksig --recompile --rebuild --resign --addsign \ + --rebuilddb --showrc --setperms --setugids --tarbuild \ + --eval --install --upgrade --query --freshen --erase \ + --verify --querytags --rmsource --rmspec --clean \ + --import' -- "$cur" ) ) + ;; + *) + COMPREPLY=( $( compgen -W '-b -e -E -F -i -q -t -U -V' \ + -- "$cur" ) ) + ;; + esac + + return 0 + fi + + case $prev in + --dbpath|--excludepath|--prefix|--relocate|--root) + _filedir -d + return 0 + ;; + --eval|-E) + # get a list of macros + COMPREPLY=( $( compgen -W "$( rpm --showrc | sed -ne \ + 's/^-\{0,1\}[0-9]\{1,\}[:=][[:space:]]\{1,\}\([^[:space:](]\{3,\}\).*/%\1/p' )" \ + -- "$cur" ) ) + return 0 + ;; + --pipe) + _compopt_o_filenames + COMPREPLY=( $( compgen -c -- "$cur" ) ) + return 0 + ;; + --rcfile) + _filedir + return 0 + ;; + --specfile) + # complete on .spec files + _filedir spec + return 0 + ;; + --whatprovides) + if [[ "$cur" == */* ]]; then + _filedir + else + # complete on capabilities + local IFS=$'\n' + COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig \ + --queryformat='%{providename}\n' )" -- "$cur" ) ) + fi + return 0 + ;; + --whatrequires) + if [[ "$cur" == */* ]]; then + _filedir + else + # complete on capabilities + local IFS=$'\n' + COMPREPLY=( $( compgen -W "$( rpm -qa $nodig $nosig \ + --queryformat='%{requirename}\n' )" -- "$cur" ) ) + fi + return 0 + ;; + --target) + COMPREPLY=( $( compgen -W "$( command rpm --showrc | sed -ne \ + 's/^\s*compatible\s\s*build\s\s*archs\s*:\s*\(.*\)/\1/ p' )" \ + -- "$cur" ) ) + return 0 + ;; + --define|-D|--fileid|--hdrid|--pkgid) + # argument required but no completions available + return 0 + ;; + esac + + # options common to all modes + opts="--define --eval --macros --nodigest --nosignature --rcfile \ + --quiet --pipe --verbose" + + case ${COMP_WORDS[1]} in + -[iFU]*|--install|--freshen|--upgrade) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --percent --force \ + --test --replacepkgs --replacefiles --root \ + --excludedocs --includedocs --noscripts --ignorearch \ + --dbpath --prefix --ignoreos --nodeps --allfiles \ + --ftpproxy --ftpport --justdb --httpproxy --httpport \ + --noorder --relocate --badreloc --notriggers \ + --excludepath --ignoresize --oldpackage \ + --queryformat --repackage --nosuggests" -- "$cur" ) ) + else + _filedir '[rs]pm' + fi + ;; + -e|--erase) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --allmatches \ + --noscripts --notriggers --nodeps --test --repackage" \ + -- "$cur" ) ) + else + _rpm_installed_packages "$nodig" "$nosig" + fi + ;; + -q*|--query) + # options common to all query types + opts="$opts --changelog --configfiles --conflicts --docfiles + --dump --enhances --filesbypkg --filecaps --fileclass + --filecolor --fileprovide --filerequire --filesbypkg --info + --list --obsoletes --pipe --provides --queryformat --rcfile + --requires --scripts --suggests --triggers --xml" + + if [[ $COMP_LINE == *\ -@(*([^ -])f|-file )* ]]; then + # -qf completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --dbpath --fscontext \ + --last --root --state" -- "$cur" ) ) + else + _filedir + fi + elif [[ $COMP_LINE == *\ -@(*([^ -])g|-group )* ]]; then + # -qg completion + _rpm_groups + elif [[ $COMP_LINE == *\ -@(*([^ -])p|-package )* ]]; then + # -qp; uninstalled package completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --ftpport --ftpproxy \ + --httpport --httpproxy --nomanifest" -- "$cur" ) ) + else + _filedir '[rs]pm' + fi + else + # -q; installed package completion + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --all --file --fileid + --dbpath --fscontext --ftswalk --group --hdrid --last + --package --pkgid --root --specfile --state + --triggeredby --whatprovides --whatrequires" \ + -- "$cur" ) ) + elif [[ $COMP_LINE != *\ -@(*([^ -])a|-all )* ]]; then + _rpm_installed_packages "$nodig" "$nosig" + fi + fi + ;; + -K*|--checksig) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --nopgp --nogpg --nomd5" \ + -- "$cur" ) ) + else + _filedir '[rs]pm' + fi + ;; + -[Vy]*|--verify) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --root --dbpath --nodeps \ + --nogroup --nolinkto --nomode --nomtime --nordev --nouser \ + --nofiles --noscripts --nomd5 --querytags --specfile \ + --whatrequires --whatprovides" -- "$cur" ) ) + # check whether we're doing file completion + elif [[ $COMP_LINE == *\ -@(*([^ -])f|-file )* ]]; then + _filedir + elif [[ $COMP_LINE == *\ -@(*([^ -])g|-group )* ]]; then + _rpm_groups + elif [[ $COMP_LINE == *\ -@(*([^ -])p|-package )* ]]; then + _filedir '[rs]pm' + else + _rpm_installed_packages "$nodig" "$nosig" + fi + ;; + -[bt]*) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --short-circuit --timecheck \ + --clean --rmsource --rmspec --test --sign --buildroot \ + --target --nobuild --nodeps --nodirtokens" -- "$cur" ) ) + elif [[ ${COMP_WORDS[1]} == -b* ]]; then + _filedir spec + else + _filedir '@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))' + fi + ;; + --rebuild|--recompile) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts --nodeps --rmsource \ + --rmspec --sign --nodirtokens --target" -- "$cur" ) ) + else + _filedir '@(?(no)src.r|s)pm' + fi + ;; + --tarbuild) + _filedir '@(t?(ar.)@([gx]z|bz?(2))|tar?(.@(lzma|Z)))' + ;; + --resign|--addsign) + _filedir '[rs]pm' + ;; + --setperms|--setgids) + _rpm_installed_packages "$nodig" "$nosig" + ;; + --clean|--rmsource|--rmspec) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--clean --rmsource --rmspec' \ + -- "$cur" ) ) + else + _filedir spec + fi + ;; + --import|--dbpath|--root) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--import --dbpath --root' \ + -- "$cur" ) ) + else + _filedir + fi + ;; + esac + + return 0 +} +complete -F _rpm rpm rpmbuild +} + +have gendiff && +_gendiff() +{ + COMPREPLY=() + local cur cword + _get_comp_words_by_ref cur cword + [[ $cword != 1 ]] || _filedir -d +} && +complete -F _gendiff gendiff + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rpmcheck b/completions/rpmcheck new file mode 100644 index 00000000..5d9aada7 --- /dev/null +++ b/completions/rpmcheck @@ -0,0 +1,33 @@ +# bash completion for rpmcheck + +have rpmcheck && +_rpmcheck() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -base) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-explain -failures -successes \ + -dump -dump-all -base -help -compressed-input' -- "$cur" ) ) + else + _filedir + fi +} && +complete -F _rpmcheck rpmcheck $files + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rrdtool b/completions/rrdtool new file mode 100644 index 00000000..0b15a23f --- /dev/null +++ b/completions/rrdtool @@ -0,0 +1,20 @@ +# bash completion for rrdtool + +have rrdtool && +_rrdtool () +{ + local cur + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -W 'create update updatev graph dump restore last \ + lastupdate first info fetch tune resize xport' -- "$cur" ) ) +} && +complete -F _rrdtool rrdtool + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rsync b/completions/rsync new file mode 100644 index 00000000..b0f2d106 --- /dev/null +++ b/completions/rsync @@ -0,0 +1,92 @@ +# bash completion for rsync + +have rsync && +_rsync() +{ + # TODO: _split_longopt + + COMPREPLY=() + local cur prev + _get_comp_words_by_ref -n : cur prev + + _expand || return 0 + + case $prev in + --config|--password-file|--include-from|--exclude-from) + _filedir + return 0 + ;; + -T|--temp-dir|--compare-dest) + _filedir -d + return 0 + ;; + -e|--rsh) + COMPREPLY=( $( compgen -W 'rsh ssh' -- "$cur" ) ) + return 0 + ;; + --compress-level) + COMPREPLY=( $( compgen -W '1 2 3 4 5 6 7 8 9' -- "$cur" ) ) + return 0 + ;; + esac + + case $cur in + -*) + COMPREPLY=( $( compgen -W '--verbose --quiet --no-motd --checksum \ + --archive --recursive --relative --no-implied-dirs \ + --backup --backup-dir --suffix= --update --inplace --append \ + --append-verify --dirs --old-dirs --links --copy-links \ + --copy-unsafe-links --safe-links --copy-dirlinks \ + --keep-dirlinks --hard-links --perms --executability --chmod= \ + --acls --xattrs --owner --group --devices --copy-devices \ + --specials --times --omit-dir-times --super --fake-super \ + --sparse --dry-run --whole-file --no-whole-file \ + --one-file-system --block-size= --rsh= --rsync-path= \ + --existing --ignore-existing --remove-source-files --delete \ + --delete-before --delete-during --delete-delay --delete-after \ + --delete-excluded --ignore-errors --force --max-delete= \ + --max-size= --min-size= --partial --partial-dir= \ + --delay-updates --prune-empty-dirs --numeric-ids --timeout= \ + --contimeout= --ignore-times --size-only --modify-window= \ + --temp-dir= --fuzzy --compare-dest= --copy-dest= --link-dest= \ + --compress --compress-level= --skip-compress= --cvs-exclude \ + --filter= --exclude= --exclude-from= --include= \ + --include-from= --files-from= --from0 --protect-args \ + --address= --port= --sockopts= --blocking-io --no-blocking-io \ + --stats --8-bit-output --human-readable --progress \ + --itemize-changes --out-format= --log-file= \ + --log-file-format= --password-file= --list-only --bwlimit= \ + --write-batch= --only-write-batch= --read-batch= --protocol= \ + --iconv= --ipv4 --ipv6 --version --help --daemon --config= \ + --no-detach' -- "$cur" ) ) + ;; + *:*) + if type _scp_remote_files &>/dev/null; then + # find which remote shell is used + local i shell=ssh + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == -@(e|-rsh) ]]; then + shell=${COMP_WORDS[i+1]} + break + fi + done + [ "$shell" = ssh ] && _scp_remote_files + fi + ;; + *) + _known_hosts_real -c -a "$cur" + type _scp_local_files &>/dev/null && _scp_local_files || _filedir + ;; + esac + + return 0 +} && +complete -F _rsync -o nospace rsync + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/rtcwake b/completions/rtcwake new file mode 100644 index 00000000..c95c1d76 --- /dev/null +++ b/completions/rtcwake @@ -0,0 +1,40 @@ +# bash completion for rtcwake + +have rtcwake && +_rtcwake() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case "$prev" in + --help|-h|--version|-V|--seconds|-s|--time|-t) + return 0 + ;; + --mode|-m) + COMPREPLY=( $( compgen -W 'standby mem disk on no off' -- "$cur" ) ) + return 0 + ;; + --device|-d) + COMPREPLY=( $( command ls -d /dev/rtc?* 2>/dev/null ) ) + COMPREPLY=( $( compgen -W '${COMPREPLY[@]#/dev/}' -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + COMPREPLY=( $( compgen -W '--device --local --mode --seconds --time --utc \ + --verbose --version --help' -- "$cur" ) ) +} && +complete -F _rtcwake rtcwake + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/samba b/completions/samba new file mode 100644 index 00000000..61d78abc --- /dev/null +++ b/completions/samba @@ -0,0 +1,298 @@ +# bash completion for samba + +have smbclient && { +_samba_resolve_order() +{ + COMPREPLY=( $( compgen -W 'lmhosts host wins bcast' -- "$cur" ) ) +} + +_samba_domains() +{ + if [ -n "${COMP_SAMBA_SCAN:-}" ]; then + COMPREPLY=( $( compgen -W '$( smbtree -N -D )' -- "$cur" ) ) + fi +} + +_samba_hosts() +{ + if [ -n "${COMP_SAMBA_SCAN:-}" ]; then + COMPREPLY=( $( compgen -W "$( smbtree -N -S | \ + sed -ne 's/^[[:space:]]*\\\\*\([^[:space:]]*\).*/\1/p' \ + )" -- $cur ) ) + fi +} + +_samba_debuglevel() +{ + COMPREPLY=( $( compgen -W '0 1 2 3 4 5 6 7 8 9 10' -- "$cur" ) ) +} + +_smbclient() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -R) + _samba_resolve_order + return 0; + ;; + -t) + COMPREPLY=( $( compgen -W 'SJIS EUC JIS7 JIS8 JUNET HEX CAP' \ + -- "$cur" ) ) + return 0; + ;; + -s|-A|--authentication-file) + _filedir + return 0; + ;; + -l|--log-basename|-D) + _filedir -d + return 0; + ;; + -O) + COMPREPLY=( $( compgen -W 'SO_KEEPALIVE SO_REUSEADDR \ + SO_BROADCAST TCP_NODELAY IPTOS_LOWDELAY \ + IPTOS_THROUGHPUT SO_SNDBUF SO_RCVBUF \ + SO_SNDLOWAT SO_RCVLOWAT' -- "$cur" ) ) + return 0; + ;; + -T) + COMPREPLY=( $( compgen -W 'c x I X F b g q r N a' -- "$cur" ) ) + return 0; + ;; + -W|--workgroup) + _samba_domains + return 0; + ;; + -d|--debuglevel) + _samba_debuglevel + return 0 + ;; + -p|--port|-M|-I|-b|-U|--user|-n|-i|-T|-c) + # argument required but no completions available + return 0 + ;; + -\?|--help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -d -L -U -I -M -m -A -N -i -O \ + -p -R -s -k -P -c -D -W -l -E --debuglevel \ + --log-basename --workgroup' -- "$cur" ) ) + fi +} +complete -F _smbclient smbclient + +_smbget() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -o|-f|--outputfile|--rcfile) + _filedir + return 0; + ;; + -d|--debuglevel) + _samba_debuglevel + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a --guest -r --resume -R --recursive -u \ + --username -p --password -w --workgroup -n --nonprompt -d \ + --debuglevel -D --dots -P --keep-permissions -o --outputfile -f \ + --rcfile -q --quiet -v --verbose -b --blocksize -? --help --usage' \ + -- "$cur" ) ) + fi +} +complete -F _smbget smbget + +_smbcacls() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -s) + _filedir + return 0; + ;; + -l|--log-basename) + _filedir -d + return 0; + ;; + -d|--debuglevel) + _samba_debuglevel + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -M -D -S -U -C -G --numeric -t \ + -h --help -V -s -d --debuglevel -l --log-basename' -- "$cur" ) ) + fi +} +complete -F _smbcacls smbcacls + +_smbcquotas() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -s|-A|--authentication-file) + _filedir + return 0; + ;; + -l|--log-basename) + _filedir -d + return 0; + ;; + -d|--debuglevel) + _samba_debuglevel + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-u -L -F -S -n -t -v -h --help -V \ + -s --debuglevel --log-basename -N -k \ + --authentication-file --user' -- "$cur" ) ) + fi +} +complete -F _smbcquotas smbcquotas + +_smbpasswd() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -r) + _samba_hosts + return 0; + ;; + -R) + _samba_resolve_order + return 0; + ;; + -c) + _filedir + return 0; + ;; + -D) + _samba_debuglevel + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -c -x -d -e -D -n -r -R -m -U -h \ + -s -w -W -i -L' -- "$cur" ) ) + fi +} +complete -F _smbpasswd smbpasswd + +_smbtar() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -r|-t) + _filedir tar + return 0; + ;; + -s) + _samba_hosts + return 0; + ;; + -l) + _samba_debuglevel + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r -i -a -v -s -p -x -X -N -b -d -l -u -t' \ + -- "$cur" ) ) + fi +} +complete -F _smbtar smbtar + +_smbtree() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -s|-A|--authentication-file) + _filedir + return 0; + ;; + -l|--log-basename) + _filedir -d + return 0; + ;; + -d|--debuglevel) + _samba_debuglevel + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-b -D -S -V -s -d --debuglevel -l \ + --log-basename -N -k -A --authentication-file -U --user\ + -h --help' -- "$cur" ) ) + fi +} +complete -F _smbtree smbtree +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sbcl b/completions/sbcl new file mode 100644 index 00000000..33671a6e --- /dev/null +++ b/completions/sbcl @@ -0,0 +1,31 @@ +# bash programmable completion for various Common Lisp implementations by +# Nikodemus Siivola <nikodemus@random-state.net> + +have sbcl || have sbcl-mt && +_sbcl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + # completing an option (may or may not be separated by a space) + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--core --noinform --help --version + --sysinit --userinit --eval --noprint --disable-debugger + --end-runtime-options --end-toplevel-options ' -- "$cur" ) ) + else + _filedir + fi + + return 0 +} && +complete -F _sbcl sbcl sbcl-mt + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/screen b/completions/screen new file mode 100644 index 00000000..952d9766 --- /dev/null +++ b/completions/screen @@ -0,0 +1,66 @@ +# bash completion for screen + +have screen && +_screen_sessions() +{ + COMPREPLY=( $( compgen -W "$( command screen -ls | sed -ne \ + 's|^\t\{1,\}\([0-9]\{1,\}\.[^\t]\{1,\}\).*'"$1"'.*$|\1|p' )" \ + -- "$cur" ) ) +} && +_screen() +{ + local cur prev words cword + + COMPREPLY=() + _get_comp_words_by_ref cur prev words cword + + if ((cword > 2)); then + case ${words[cword-2]} in + -[dD]) + _screen_sessions + return 0 + ;; + esac + fi + + case $prev in + -[rR]) + # list detached + _screen_sessions 'Detached' + return 0 + ;; + -[dD]) + # list attached + _screen_sessions 'Attached' + return 0 + ;; + -x) + # list both + _screen_sessions + return 0 + ;; + -s) + _shells + return 0 + ;; + -c) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -A -c -d -D -e -f -fn -fa -h -i -ln \ + -list -L -m -O -p -q -r -R -s -S -t -U -v -wipe -x -X --help \ + --version' -- "$cur" ) ) + fi +} && +complete -F _screen -o default screen + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/service b/completions/service new file mode 100644 index 00000000..1a36f59b --- /dev/null +++ b/completions/service @@ -0,0 +1,47 @@ +# service(8) and /etc/init.d/* completion + +# This completes on a list of all available service scripts for the +# 'service' command and/or the SysV init.d directory, followed by +# that script's available commands +# +{ have service || [ -d /etc/init.d/ ]; } && +_service() +{ + local cur prev sysvdir + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + # don't complete for things like killall, ssh and mysql if it's + # the standalone command, rather than the init script + [[ ${COMP_WORDS[0]} != @(*init.d/!(functions|~)|service) ]] && return 0 + + # don't complete past 2nd token + [ $COMP_CWORD -gt 2 ] && return 0 + + if [[ $COMP_CWORD -eq 1 && $prev == "service" ]]; then + _services + else + [ -d /etc/rc.d/init.d ] && \ + sysvdir=/etc/rc.d/init.d || sysvdir=/etc/init.d + COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \ + -ne "s/^.*\(U\|msg_u\)sage.*{\(.*\)}.*$/\2/p" \ + $sysvdir/${prev##*/} 2>/dev/null`' -- "$cur" ) ) + fi + + return 0 +} && +complete -F _service service +for svc in /etc/init.d/*; do + [ ! -x "$svc" ] || complete -p "${svc##*/}" &>/dev/null || \ + complete -F _service -o default "${svc##*/}" +done +unset svc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sh b/completions/sh new file mode 100644 index 00000000..9c7ca020 --- /dev/null +++ b/completions/sh @@ -0,0 +1,41 @@ +# POSIX sh(1) completion + +have sh && +_sh() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -c) + return 0 + ;; + -o|+o) + COMPREPLY=( $( compgen -W 'allexport errexit ignoreeof monitor + noclobber noglob noexec nolog notify nounset verbose vi + xtrace' -- "$cur" ) ) + return 0 + ;; + esac + + local opts="-a -b -C -e -f -h -i -m -n -o -u -v -x" + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W "$opts -c -s" -- "$cur" ) ) + return 0 + elif [[ "$cur" == +* ]]; then + COMPREPLY=( $( compgen -W "${opts//-/+}" -- "$cur" ) ) + return 0 + fi + + _filedir sh +} && +complete -F _sh sh + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/shadow b/completions/shadow new file mode 100644 index 00000000..6aea045b --- /dev/null +++ b/completions/shadow @@ -0,0 +1,482 @@ +# bash completion for shadow utils + +have useradd && +_useradd() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + # TODO: if -o/--non-unique is given, could complete on existing uids + # with -u/--uid + + case $prev in + -c|--comment|-h|--help|-e|--expiredate|-f|--inactive|-k|--key|\ + -p|--password|-u|--uid|-Z|--selinux-user) + return 0 + ;; + -b|--base-dir|-d|--home|-k|--skel) + _filedir -d + return 0 + ;; + -g|--gid) + _gids + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $( compgen -g )' \ + -- "$cur" ) ) + return 0 + ;; + -G|--groups) + COMPREPLY=( $( compgen -g -- "$cur" ) ) + return 0 + ;; + -s|--shell) + _shells + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--base-dir --comment --home-dir --defaults \ + --expiredate --inactive --gid --groups --help --skel --key \ + --no-log-init --create-home --no-create-home --no-user-group \ + --non-unique --password --system --shell --uid --user-group \ + --selinux-user' -- "$cur" ) ) + return 0 + fi +} && +complete -F _useradd useradd + +have usermod && +_usermod() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + # TODO: if -o/--non-unique is given, could complete on existing uids + # with -u/--uid + + case $prev in + -c|--comment|-d|--home|-e|--expiredate|-f|--inactive|-h|--help|\ + -l|--login|-p|--password|-u|--uid|-Z|--selinux-user) + return 0 + ;; + -g|--gid) + _gids + COMPREPLY=( $( compgen -W '${COMPREPLY[@]} $( compgen -g )' \ + -- "$cur" ) ) + return 0 + ;; + -G|--groups) + COMPREPLY=( $( compgen -g -- "$cur" ) ) + return 0 + ;; + -s|--shell) + _shells + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + # TODO: -U/--unlock, -p/--password, -L/--lock mutually exclusive + COMPREPLY=( $( compgen -W '--append --comment --home --expiredate \ + --inactive --gid --groups --help --login --lock --move-home \ + --non-unique --password --shell --uid --unlock --selinux-user' \ + -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -u -- "$cur" ) ) +} && +complete -F _usermod usermod + +have userdel && +_userdel() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--force --help --remove' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -u -- "$cur" ) ) +} && +complete -F _userdel userdel + +have chage && +_chage() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -d|--lastday|-E|--expiredate|-h|--help|-I|--inactive|-m|--mindays|\ + -M|--maxdays|-W|--warndays) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--lastday --expiredate --help --inactive \ + --list --mindays --maxdays --warndays' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -u -- "$cur" ) ) +} && +complete -F _chage chage + +have passwd && +_passwd() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -n|-x|-w|-i|-\?|--help|--usage) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-k -l --stdin -u -d -n -x -w -i -S \ + -? --help --usage' -- "$cur" ) ) + return 0 + fi + + _allowed_users +} && +complete -F _passwd passwd + +have chpasswd && +_chpasswd() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -c|--crypt) + COMPREPLY=( $( compgen -W 'DES MD5 NONE SHA256 SHA512' \ + -- "$cur" ) ) + return 0 + ;; + -s|--sha-rounds) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--crypt-method --encrypted \ + --help --md5 --sha-rounds' -- "$cur" ) ) + return 0 + fi +} && +complete -F _chpasswd chpasswd + +have newusers && +_newusers() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -c|--crypt) + COMPREPLY=( $( compgen -W 'DES MD5 NONE SHA256 SHA512' \ + -- "$cur" ) ) + return 0 + ;; + -s|--sha-rounds) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--crypt-method --help --system \ + --sha-rounds' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _newusers newusers + +have pwck && +_pwck() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-q -r -s' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _pwck pwck + +have groupadd && +_groupadd() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + # TODO: if -o/--non-unique is given, could complete on existing gids + # with -g/--gid + + case $prev in + -g|--gid|-K|--key|-p|--password) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--force --gid --help \ + --key --non-unique --password --system' -- "$cur" ) ) + return 0 + fi +} && +complete -F _groupadd groupadd + +have groupmod && +_groupmod() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + # TODO: if -o/--non-unique is given, could complete on existing gids + # with -g/--gid + + case $prev in + -g|--gid|-h|--help|-n|--new-name|-p|--password) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--gid --help --new-name \ + --non-unique --password' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -g -- "$cur" ) ) +} && +complete -F _groupmod groupmod + +complete -g groupdel + +have newgrp && +_newgrp() +{ + COMPREPLY=() + if [[ "`_get_cword`" == "-" ]]; then + COMPREPLY=( - ) + else + _allowed_groups + fi +} && +complete -F _newgrp newgrp + +have gpasswd && +_gpasswd() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-d|-A|-M) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -r -R -A -M' -- "$cur" ) ) + return 0 + fi + + COMPREPLY=( $( compgen -g -- "$cur" ) ) +} && +complete -F _gpasswd gpasswd + +have groupmems && +_groupmems() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -a|-d) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + -g) + COMPREPLY=( $( compgen -g -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -p -g -l' -- "$cur" ) ) + return 0 + fi +} && +complete -F _groupmems groupmems + +have grpck && +_grpck() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-r -s' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _grpck grpck + +have vipw || have vigr && +_vipw() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -h|--help) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--group --help --passwd \ + --quiet --shadow' -- "$cur" ) ) + return 0 + fi +} && +complete -F _vipw vipw vigr + +have faillog && +_faillog() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -h|--help|-l|--lock-time|-m|--maximum|-t|--time) + return 0 + ;; + -u|--user) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--all --help --lock-time \ + --maximum --reset --time --user' -- "$cur" ) ) + return 0 + fi +} && +complete -F _faillog faillog + +have lastlog && +_lastlog() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -b|--before|-h|--help|-t|--time) + return 0 + ;; + -u|--user) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--before --help --time --user' -- "$cur" ) ) + return 0 + fi +} && +complete -F _lastlog lastlog + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sitecopy b/completions/sitecopy new file mode 100644 index 00000000..616bc5e4 --- /dev/null +++ b/completions/sitecopy @@ -0,0 +1,40 @@ +# sitecopy(1) completion +# Copyright 2003 Eelco Lempsink <eelcolempsink@gmx.net> +# License: GNU GPL v2 or later + +have sitecopy && +_sitecopy() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + case $cur in + --*) + COMPREPLY=( $( compgen -W "$(sitecopy -h | command grep -e '--\w' |\ + awk '{sub (/=(FILE|PATH)/, "", $2); print $2}')" -- "$cur" ) ) + ;; + -*) + COMPREPLY=( $( compgen -W "$(sitecopy -h | command grep -e '-\w' | \ + awk '{sub (",", "", $1); print $1}')" -- "$cur" ) ) + ;; + *) + if [ -r ~/.sitecopyrc ]; then + COMPREPLY=( $( compgen -W "$(command grep '^["$'\t '"]*site' \ + ~/.sitecopyrc | awk '{print $2}')" -- "$cur" ) ) + fi + ;; + esac + + return 0 +} && +complete -F _sitecopy -o default sitecopy + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/smartctl b/completions/smartctl new file mode 100644 index 00000000..74e42816 --- /dev/null +++ b/completions/smartctl @@ -0,0 +1,146 @@ +# bash completion for smartctl(8) + +have smartctl && +{ +_smartctl_quietmode() +{ + COMPREPLY=( $( compgen -W 'errorsonly silent noserial' -- "$cur" ) ) +} +_smartctl_device() +{ + local i opts='ata scsi sat marvell hpt cciss' + for (( i=0; i <= 31; i++ )) ; do + opts="$opts 3ware,$i" + done + COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) ) +} +_smartctl_tolerance() +{ + COMPREPLY=( $( compgen -W 'normal conservative permissive \ + verypermissive' -- "$cur" ) ) +} +_smartctl_badsum() +{ + COMPREPLY=( $( compgen -W 'warn exit ignore' -- "$cur" ) ) +} +_smartctl_report() +{ + COMPREPLY=( $( compgen -W 'ioctl ataioctl scsiioctl' -- "$cur" ) ) +} +_smartctl_powermode() +{ + COMPREPLY=( $( compgen -W 'never sleep standby idle' -- "$cur" ) ) +} +_smartctl_feature() +{ + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) +} +_smartctl_log() +{ + COMPREPLY=( $( compgen -W 'error selftest selective directory' -- "$cur" ) ) +} +_smartctl_vendorattribute() +{ + COMPREPLY=( $( compgen -W 'help 9,minutes 9,seconds 9,halfminutes \ + 9,temp 192,emergencyretractcyclect 193,loadunload \ + 194,10xCelsius 194,unknown 198,offlinescanuncsectorct \ + 200,writeerrorcount 201,detectedtacount 220,temp' -- "$cur" ) ) +} +_smartctl_firmwarebug() +{ + COMPREPLY=( $( compgen -W 'none samsung samsung2 samsung3 swapid' \ + -- "$cur" ) ) +} +_smartctl_presets() +{ + COMPREPLY=( $( compgen -W 'use ignore show showall' -- "$cur" ) ) +} +_smartctl_test() +{ + COMPREPLY=( $( compgen -W 'offline short long conveyance select \ + afterselect,on afterselect,off pending scttempint' -- "$cur" ) ) +} + + +_smartctl() +{ + local cur prev split=false + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + case $prev in + -q|--quietmode) + _smartctl_quietmode + ;; + -d|--device) + _smartctl_device + return 0 + ;; + -t|--tolerance) + _smartctl_tolerance + return 0 + ;; + -b|--badsum) + _smartctl_badsum + return 0 + ;; + -r|--report) + _smartctl_report + return 0 + ;; + -n|--nocheck) + _smartctl_powermode + return 0 + ;; + -s|--smart|-o|--offlineauto|-S|--saveauto) + _smartctl_feature + return 0 + ;; + -l|--log) + _smartctl_log + return 0 + ;; + -v|--vendorattribute) + _smartctl_vendorattribute + return 0 + ;; + -F|--firmwarebug) + _smartctl_firmwarebug + return 0 + ;; + -P|--presets) + _smartctl_presets + return 0 + ;; + -t|--test) + _smartctl_test + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --info --all --quietmode \ + --device --tolerance --badsum --report --nocheck --smart \ + --offlineauto --saveauto --health --capabilities --attributes \ + --log --vendorattribute --firmwarebug --presets --test --captive \ + --abort' -- "$cur" ) ) + else + cur=${cur:=/dev/} + _filedir + fi +} +complete -F _smartctl smartctl +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/snownews b/completions/snownews new file mode 100644 index 00000000..9c99ed7c --- /dev/null +++ b/completions/snownews @@ -0,0 +1,25 @@ +# snownews(1) completion + +have snownews && +_snownews() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + # return list of available options + COMPREPLY=( $( compgen -W '--update --help --version \ + --disable-versioncheck -u -h -V' -- "$cur")) + fi +} && +complete -F _snownews snownews + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sqlite3 b/completions/sqlite3 new file mode 100644 index 00000000..b37c55f7 --- /dev/null +++ b/completions/sqlite3 @@ -0,0 +1,39 @@ +# sqlite3(1) completion + +have sqlite3 && +_sqlite3() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + local dbexts='@(sqlite?(3)|?(s?(3))db)' + + case $prev in + -help|-version|-separator|-nullvalue|*.$dbexts) + return 0 + ;; + -init) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-help -init -echo -header -noheader -bail + -interactive -batch -column -csv -html -line -list -separator + -nullvalue -version' -- "$cur" ) ) + return 0 + fi + + _filedir $dbexts +} && +complete -F _sqlite3 sqlite3 + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/ssh b/completions/ssh new file mode 100644 index 00000000..cf966ae5 --- /dev/null +++ b/completions/ssh @@ -0,0 +1,428 @@ +# ssh(1) completion + +have ssh && +{ + +_ssh_bindaddress() +{ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \ + "$( PATH="$PATH:/sbin" ifconfig -a | \ + sed -ne 's/.*addr:\([^[:space:]]*\).*/\1/p' \ + -ne 's/.*inet[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' )" \ + -- "$cur" ) ) +} + +_ssh_ciphers() +{ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W '3des-cbc aes128-cbc \ + aes192-cbc aes256-cbc aes128-ctr aes192-ctr aes256-ctr arcfour128 \ + arcfour256 arcfour blowfish-cbc cast128-cbc' -- "$cur" ) ) +} + +_ssh_macs() +{ + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W 'hmac-md5 hmac-sha1 \ + umac-64@openssh.com hmac-ripemd160 hmac-sha1-96 hmac-md5-96' \ + -- "$cur" ) ) +} + +_ssh_options() +{ + type compopt &>/dev/null && compopt -o nospace + COMPREPLY=( $( compgen -S = -W 'AddressFamily BatchMode BindAddress \ + ChallengeResponseAuthentication CheckHostIP Cipher Ciphers \ + ClearAllForwardings Compression CompressionLevel ConnectionAttempts \ + ConnectTimeout ControlMaster ControlPath DynamicForward EscapeChar \ + ExitOnForwardFailure ForwardAgent ForwardX11 ForwardX11Trusted \ + GatewayPorts GlobalKnownHostsFile GSSAPIAuthentication \ + GSSAPIDelegateCredentials HashKnownHosts Host HostbasedAuthentication \ + HostKeyAlgorithms HostKeyAlias HostName IdentityFile IdentitiesOnly \ + KbdInteractiveDevices LocalCommand LocalForward LogLevel MACs \ + NoHostAuthenticationForLocalhost NumberOfPasswordPrompts \ + PasswordAuthentication PermitLocalCommand Port \ + PreferredAuthentications Protocol ProxyCommand PubkeyAuthentication \ + RekeyLimit RemoteForward RhostsRSAAuthentication RSAAuthentication \ + SendEnv ServerAliveInterval ServerAliveCountMax SmartcardDevice \ + StrictHostKeyChecking TCPKeepAlive Tunnel TunnelDevice \ + UsePrivilegedPort User UserKnownHostsFile VerifyHostKeyDNS \ + VisualHostKey XAuthLocation' -- "$cur" ) ) +} + +# Complete a ssh suboption (like ForwardAgent=y<tab>) +# Only one parameter: the string to complete including the equal sign. +# Not all suboptions are completed. +# Doesn't handle comma-separated lists. +_ssh_suboption() +{ + # Split into subopt and subval + local prev=${1%%=*} cur=${1#*=} + + case $prev in + BatchMode|ChallengeResponseAuthentication|CheckHostIP|\ + ClearAllForwardings|Compression|ExitOnForwardFailure|ForwardAgent|\ + ForwardX11|ForwardX11Trusted|GatewayPorts|GSSAPIAuthentication|\ + GSSAPIKeyExchange|GSSAPIDelegateCredentials|GSSAPITrustDns|\ + HashKnownHosts|HostbasedAuthentication|IdentitiesOnly|\ + KbdInteractiveAuthentication|KbdInteractiveDevices|\ + NoHostAuthenticationForLocalhost|PasswordAuthentication|\ + PubkeyAuthentication|RhostsRSAAuthentication|RSAAuthentication|\ + StrictHostKeyChecking|TCPKeepAlive|UsePrivilegedPort|\ + VerifyHostKeyDNS|VisualHostKey) + COMPREPLY=( $( compgen -W 'yes no' -- "$cur") ) + ;; + AddressFamily) + COMPREPLY=( $( compgen -W 'any inet inet6' -- "$cur" ) ) + ;; + BindAddress) + _ssh_bindaddress + ;; + Cipher) + COMPREPLY=( $( compgen -W 'blowfish des 3des' -- "$cur" ) ) + ;; + Protocol) + COMPREPLY=( $( compgen -W '1 2 1,2 2,1' -- "$cur" ) ) + ;; + Tunnel) + COMPREPLY=( $( compgen -W 'yes no point-to-point ethernet' \ + -- "$cur" ) ) + ;; + PreferredAuthentications) + COMPREPLY=( $( compgen -W 'gssapi-with-mic host-based \ + publickey keyboard-interactive password' -- "$cur" ) ) + ;; + MACs) + _ssh_macs + ;; + Ciphers) + _ssh_ciphers + ;; + esac + return 0 +} + +# Try to complete -o SubOptions= +# +# Returns 0 if the completion was handled or non-zero otherwise. +_ssh_suboption_check() +{ + # Get prev and cur words without splitting on = + local cureq=`_get_cword :=` preveq=`_get_pword :=` + if [[ $cureq == *=* && $preveq == -o ]]; then + _ssh_suboption $cureq + return $? + fi + return 1 +} + +_ssh() +{ + local cur prev configfile + local -a config + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + #cur=`_get_cword :` + #prev=`_get_pword` + + _ssh_suboption_check && return 0 + + case $prev in + -F|-i|-S) + _filedir + return 0 + ;; + -c) + _ssh_ciphers + return 0 + ;; + -m) + _ssh_macs + return 0 + ;; + -l) + COMPREPLY=( $( compgen -u -- "$cur" ) ) + return 0 + ;; + -o) + _ssh_options + return 0 + ;; + -w) + _available_interfaces + return 0 + ;; + -b) + _ssh_bindaddress + return 0 + ;; + esac + + if [[ "$cur" == -F* ]]; then + cur=${cur#-F} + _filedir + # Prefix completions with '-F' + COMPREPLY=( "${COMPREPLY[@]/#/-F}" ) + cur=-F$cur # Restore cur + elif [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-1 -2 -4 -6 -A -a -C -f -g -K -k -M \ + -N -n -q -s -T -t -V -v -X -v -Y -y -b -b -c -D -e -F \ + -i -L -l -m -O -o -p -R -S -w' -- "$cur" ) ) + else + # Search COMP_WORDS for '-F configfile' or '-Fconfigfile' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + configfile="$(dequote "${1:2}")" + else + shift + [ "$1" ] && configfile="$(dequote "$1")" + fi + break + fi + shift + done + _known_hosts_real -a -F "$configfile" "$cur" + if [ $COMP_CWORD -ne 1 ]; then + _compopt_o_filenames + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -c -- "$cur" ) ) + fi + fi + + return 0 +} +shopt -u hostcomplete && complete -F _ssh ssh slogin autossh + +# sftp(1) completion +# +_sftp() +{ + local cur prev configfile + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + _ssh_suboption_check && return 0 + + case $prev in + -b|-F|-P) + _filedir + return 0 + ;; + -o) + _ssh_options + return 0 + ;; + esac + + if [[ "$cur" == -F* ]]; then + cur=${cur#-F} + _filedir + # Prefix completions with '-F' + COMPREPLY=( "${COMPREPLY[@]/#/-F}" ) + cur=-F$cur # Restore cur + elif [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-1 -C -v -B -b -F -o -P -R -S -s' \ + -- "$cur" ) ) + else + # Search COMP_WORDS for '-F configfile' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + configfile="$(dequote "${1:2}")" + else + shift + [ "$1" ] && configfile="$(dequote "$1")" + fi + break + fi + shift + done + _known_hosts_real -a -F "$configfile" "$cur" + fi + + return 0 +} +shopt -u hostcomplete && complete -F _sftp sftp + +# things we want to backslash escape in scp paths +_scp_path_esc='[][(){}<>",:;^&!$=?`|\\'"'"'[:space:]]' + +# Complete remote files with ssh. If the first arg is -d, complete on dirs +# only. Returns paths escaped with three backslashes. +_scp_remote_files() +{ + local IFS=$'\n' + + # remove backslash escape from the first colon + cur=${cur/\\:/:} + + local userhost=${cur%%?(\\):*} + local path=${cur#*:} + + # unescape (3 backslashes to 1 for chars we escaped) + path=$( sed -e 's/\\\\\\\('$_scp_path_esc'\)/\\\1/g' <<<"$path" ) + + # default to home dir of specified user on remote host + if [ -z "$path" ]; then + path=$(ssh -o 'Batchmode yes' $userhost pwd 2>/dev/null) + fi + + local files + if [ "$1" = -d ] ; then + # escape problematic characters; remove non-dirs + files=$( ssh -o 'Batchmode yes' $userhost \ + command ls -aF1d "$path*" 2>/dev/null | \ + sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e '/[^\/]$/d' ) + else + # escape problematic characters; remove executables, aliases, pipes + # and sockets; add space at end of file names + files=$( ssh -o 'Batchmode yes' $userhost \ + command ls -aF1d "$path*" 2>/dev/null | \ + sed -e 's/'$_scp_path_esc'/\\\\\\&/g' -e 's/[*@|=]$//g' \ + -e 's/[^\/]$/& /g' ) + fi + COMPREPLY=( "${COMPREPLY[@]}" $files ) +} + +# This approach is used instead of _filedir to get a space appended +# after local file/dir completions, and -o nospace retained for others. +# If first arg is -d, complete on directory names only. The next arg is +# an optional prefix to add to returned completions. +_scp_local_files() +{ + local IFS=$'\n' + + local dirsonly=false + if [ "$1" = -d ]; then + dirsonly=true + shift + fi + + if $dirsonly ; then + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \ + sed -e "s/$_scp_path_esc/\\\\&/g" -e '/[^\/]$/d' -e "s/^/$1/") ) + else + COMPREPLY=( "${COMPREPLY[@]}" $( command ls -aF1d $cur* 2>/dev/null | \ + sed -e "s/$_scp_path_esc/\\\\&/g" -e 's/[*@|=]$//g' \ + -e 's/[^\/]$/& /g' -e "s/^/$1/") ) + fi +} + +# scp(1) completion +# +_scp() +{ + local configfile cur prev prefix + + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + + _ssh_suboption_check && { + COMPREPLY=( "${COMPREPLY[@]/%/ }" ) + return 0 + } + + case $prev in + -l|-P) + return 0 + ;; + -F|-i|-S) + _filedir + type compopt &>/dev/null && compopt +o nospace + return 0 + ;; + -c) + _ssh_ciphers + COMPREPLY=( "${COMPREPLY[@]/%/ }" ) + return 0 + ;; + -o) + _ssh_options + return 0 + ;; + esac + + _expand || return 0 + + if [[ "$cur" == *:* ]]; then + _scp_remote_files + return 0 + fi + + if [[ "$cur" == -F* ]]; then + cur=${cur#-F} + prefix=-F + else + # Search COMP_WORDS for '-F configfile' or '-Fconfigfile' argument + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "${1:0:2}" = -F ]; then + if [ ${#1} -gt 2 ]; then + configfile="$(dequote "${1:2}")" + else + shift + [ "$1" ] && configfile="$(dequote "$1")" + fi + break + fi + shift + done + + case $cur in + -*) + COMPREPLY=( $( compgen -W '-1 -2 -4 -6 -B -C -c -F -i -l -o \ + -P -p -q -r -S -v' -- "$cur" ) ) + COMPREPLY=( "${COMPREPLY[@]/%/ }" ) + return 0 + ;; + */*) + # pass through + ;; + *) + _known_hosts_real -c -a -F "$configfile" "$cur" + ;; + esac + fi + + _scp_local_files "$prefix" + + return 0 +} +complete -F _scp -o nospace scp + +# ssh-copy-id(1) completion +# +_ssh_copy_id() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -i) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-i' -- "$cur" ) ) + else + _known_hosts_real -a "$cur" + fi + + return 0 +} +complete -F _ssh_copy_id ssh-copy-id +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sshfs b/completions/sshfs new file mode 100644 index 00000000..d7945f88 --- /dev/null +++ b/completions/sshfs @@ -0,0 +1,34 @@ +# sshfs(1) completion + +have sshfs && +_sshfs() +{ + local cur userhost path + + COMPREPLY=() + _get_comp_words_by_ref -n : cur + + _expand || return 0 + + if [[ "$cur" == *:* ]] && type _scp_remote_files &>/dev/null ; then + _scp_remote_files -d + # unlike scp and rsync, sshfs works with 1 backslash instead of 3 + COMPREPLY=( "${COMPREPLY[@]//\\\\\\/\\}" ) + return 0 + fi + + [[ "$cur" == */* ]] || _known_hosts_real -c -a "$cur" + + type _scp_local_files &>/dev/null && _scp_local_files -d + + return 0 +} && +complete -F _sshfs -o nospace sshfs + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/strace b/completions/strace new file mode 100644 index 00000000..0ee27377 --- /dev/null +++ b/completions/strace @@ -0,0 +1,103 @@ +# bash completion for strace + +have strace && +_strace() +{ + local cur prev offset i syscalls arch unistd + + # check if we're still completing strace + offset=0 + for (( i=1; i <= COMP_CWORD; i++ )); do + case ${COMP_WORDS[$i]} in + -o|-e|-p) + i=$((i+1)) + continue + ;; + -*) + continue + ;; + esac + offset=$i + break + done + + if [ $offset -gt 0 ]; then + # FAIL: _command_offset is not defined anywhere. Guillame? + _command_offset $offset + else + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -e) + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + + # Import arch-specific syscalls -- not foolproof IMHO + #+ --David Paleino + arch=$(command uname -m) + syscalls=$(awk '/^#define __NR/ {print $2}' \ + /usr/include/asm/unistd.h | sed -e \ + 's/__NR_//') + if [ -z "$syscalls" ]; then + if [[ "$arch" == *86 ]]; then + unistd=/usr/include/asm/unistd_32.h + else + unistd=/usr/include/asm/unistd_64.h + fi + syscalls=$(awk '/^#define __NR/ {print $2}' \ + $unistd | sed -e 's/__NR_//') + fi + + case $prev in + trace) + COMPREPLY=( $( compgen -W "$syscalls file process + network signal ipc desc all none" -- "$cur") ) + return 0 + ;; + esac + else + COMPREPLY=( $( compgen -S"=" -W 'trace abbrev verbose raw + signal read write' -- "$cur" ) ) + fi + return 0 + ;; + -o) + _filedir + return 0 + ;; + -p) + _pids + return 0 + ;; + -S) + COMPREPLY=( $( compgen -W 'time calls name nothing' \ + -- "$cur" ) ) + return 0 + ;; + -u) + _allowed_users + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -f -ff -F --help -i -q \ + -r -t -tt -ttt -T -v -V -x -xx -a -e -o -O -p \ + -s -S -u -E' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -c -- "$cur" ) ) + fi + fi +} && +complete -F _strace -o default strace + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/svk b/completions/svk new file mode 100644 index 00000000..bda5997a --- /dev/null +++ b/completions/svk @@ -0,0 +1,225 @@ +# svk(1) completion + +have svk && +_svk() +{ + local cur prev commands options command + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + 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 + 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 svk + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sysbench b/completions/sysbench new file mode 100644 index 00000000..3b309a9a --- /dev/null +++ b/completions/sysbench @@ -0,0 +1,175 @@ +# bash completion for sysbench + +# We set -o nospace and turn it off in quite a few places for bash < 4 +# reasons; assuming bash >= 4 we could instead not turn it on +# initially but only in the few cases where it's actually needed. + +have sysbench && +_sysbench() +{ + COMPREPLY=() + local cur prev words split=false + _get_comp_words_by_ref -n = cur prev words + + # long options need the "=" (whitespace split doesn't work), but we split + # internally to make processing easier + _split_longopt && split=true + + case $prev in + --num-threads|--max-requests|--max-time|--thread-stack-size| \ + --help|--version|help|version) + return 0 + ;; + --init-rng|--debug|--validate) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + --test) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'fileio cpu memory threads mutex oltp' \ + -- "$cur" ) ) + return 0 + ;; + --cpu-max-prime) + return 0 + ;; + --file-test-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'seqwr seqrewr seqrd rndrd rndwr rndrw' \ + -- "$cur" ) ) + return 0 + ;; + --file-io-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'sync async fastmmap slowmmap' \ + -- "$cur" ) ) + return 0 + ;; + --file-extra-flags) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'sync dsync direct' -- "$cur" ) ) + return 0 + ;; + --file-fsync-all|--file-fsync-end) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + --file-fsync-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'fsync fdatasync' -- "$cur" ) ) + return 0 + ;; + --memory-scope) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'global local' -- "$cur" ) ) + return 0 + ;; + --memory-hugetlb) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + --memory-oper) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'read write none' -- "$cur" ) ) + return 0 + ;; + --memory-access-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'seq rnd' -- "$cur" ) ) + return 0 + ;; + --oltp-test-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'simple complex nontrx sp' -- "$cur" ) ) + return 0 + ;; + --oltp-read-only|--oltp-skip-trx|--oltp-quto-inc|--mysql-ssl) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + --oltp-nontrx-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'select update_key update_nokey insert + delete' -- "$cur" ) ) + return 0 + ;; + --oltp-dist-type) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'uniform gaussian special' -- "$cur" ) ) + return 0 + ;; + --db-driver) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "$( $1 --test=oltp help 2>/dev/null | + sed -e '/^.*database drivers:/,/^$/!d' \ + -ne 's/^ *\([^ ]*\) .*/\1/p' )" -- "$cur" ) ) + return 0 + ;; + --db-ps-mode) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'auto disable' -- "$cur" ) ) + return 0 + ;; + --mysql-socket) + compopt +o nospace &>/dev/null + _filedir sock + return 0 + ;; + --mysql-table-engine) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'myisam innodb bdb heap ndbcluster + federated' -- "$cur" ) ) + return 0 + ;; + --mysql-engine-trx) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'yes no auto' -- "$cur" ) ) + return 0 + ;; + --*) + $split && return 0 + ;; + esac + + # find out which test we're running + local i test + for (( i=1 ; $i < ${#words[@]}-1 ; i++ )); do + if [[ ${words[i]} == --test* ]]; then + test=${words[i]#*=} + break + fi + done + + local opts="--num-threads= --max-requests= --max-time= --thread-stack-size= + --init-rng= --debug= --validate= --help --version" + + if [[ $test ]]; then + local help=( $( _parse_help $1 "--test=$test help" ) ) + opts="$opts ${help[@]/%/=} prepare run cleanup help version" + else + opts="$opts --test=" + fi + + if [[ "$cur" == -* || ! $test ]]; then + COMPREPLY=( $( compgen -W "$opts" -- "$cur" ) ) + [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \ + compopt +o nospace &>/dev/null + else + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "prepare run cleanup help version" \ + -- "$cur" ) ) + fi +} && +complete -F _sysbench -o nospace sysbench + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sysctl b/completions/sysctl new file mode 100644 index 00000000..ac25f4ef --- /dev/null +++ b/completions/sysctl @@ -0,0 +1,24 @@ +# bash completion for sysctl + +have sysctl && +_sysctl() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + COMPREPLY=( $( compgen -W \ + "$( PATH="$PATH:/sbin" sysctl -N -a 2>/dev/null )" -- "$cur" ) ) + + return 0 +} && +complete -F _sysctl sysctl + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/sysv-rc b/completions/sysv-rc new file mode 100644 index 00000000..735a4042 --- /dev/null +++ b/completions/sysv-rc @@ -0,0 +1,110 @@ +# update-rc.d(8) completion +# +# Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com> + +have update-rc.d && +_update_rc_d() +{ + local cur prev sysvdir services options valid_options + + _get_comp_words_by_ref cur prev + + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ + || sysvdir=/etc/init.d + + services=( $(printf '%s ' $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm@(orig|new|save))) ) + services=( ${services[@]#$sysvdir/} ) + options=( -f -n ) + + if [[ $COMP_CWORD -eq 1 || "$prev" == -* ]]; then + valid_options=( $( \ + tr " " "\n" <<<"${COMP_WORDS[@]} ${options[@]}" \ + | sed -ne "/$( sed "s/ /\\|/g" <<<"${options[@]}" )/p" \ + | sort | uniq -u \ + ) ) + COMPREPLY=( $( compgen -W '${options[@]} ${services[@]}' \ + -X '$( tr " " "|" <<<${COMP_WORDS[@]} )' -- "$cur" ) ) + elif [[ "$prev" == ?($( tr " " "|" <<<${services[@]} )) ]]; then + COMPREPLY=( $( compgen -W 'remove defaults start stop' -- "$cur" ) ) + elif [[ "$prev" == defaults && "$cur" == [0-9] ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$prev" == defaults && "$cur" == [sk]?([0-9]) ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$prev" == defaults && -z "$cur" ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 s k ) + elif [[ "$prev" == ?(start|stop) ]]; then + if [[ "$cur" == [0-9] || -z "$cur" ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 7 8 9 ) + elif [[ "$cur" == [0-9][0-9] ]]; then + COMPREPLY=( $cur ) + else + COMPREPLY=() + fi + elif [[ "$prev" == ?([0-9][0-9]|[0-6S]) ]]; then + if [[ -z "$cur" ]]; then + if [[ $prev == [0-9][0-9] ]]; then + COMPREPLY=( 0 1 2 3 4 5 6 S ) + else + COMPREPLY=( 0 1 2 3 4 5 6 S . ) + fi + elif [[ "$cur" == [0-6S.] ]]; then + COMPREPLY=( $cur ) + else + COMPREPLY=() + fi + elif [[ "$prev" == "." ]]; then + COMPREPLY=( $(compgen -W "start stop" -- "$cur") ) + else + COMPREPLY=() + fi + + return 0 +} && +complete -F _update_rc_d update-rc.d + +# invoke-rc.d(8) completion +# +# Copyright (C) 2004 Servilio Afre Puentes <servilio@gmail.com> +# +have invoke-rc.d && +_invoke_rc_d() +{ + local cur prev sysvdir services options valid_options + + _get_comp_words_by_ref cur prev + + [ -d /etc/rc.d/init.d ] && sysvdir=/etc/rc.d/init.d \ + || sysvdir=/etc/init.d + + services=( $( printf '%s ' \ + $sysvdir/!(README*|*.sh|*.dpkg*|*.rpm@(orig|new|save)) ) ) + services=( ${services[@]#$sysvdir/} ) + options=( --help --quiet --force --try-anyway --disclose-deny --query \ + --no-fallback ) + + if [[ ($COMP_CWORD -eq 1) || ("$prev" == --* ) ]]; then + valid_options=( $( \ + tr " " "\n" <<<"${COMP_WORDS[@]} ${options[@]}" \ + | sed -ne "/$( sed "s/ /\\\\|/g" <<<"${options[@]}" )/p" \ + | sort | uniq -u \ + ) ) + COMPREPLY=( $( compgen -W '${valid_options[@]} ${services[@]}' -- "$cur" ) ) + elif [ -x $sysvdir/$prev ]; then + COMPREPLY=( $( compgen -W '`sed -e "y/|/ /" \ + -ne "s/^.*Usage:[ ]*[^ ]*[ ]*{*\([^}\"]*\).*$/\1/p" \ + $sysvdir/$prev`' -- "$cur" ) ) + else + COMPREPLY=() + fi + + return 0 +} && +complete -F _invoke_rc_d invoke-rc.d + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/tar b/completions/tar new file mode 100644 index 00000000..a5c02490 --- /dev/null +++ b/completions/tar @@ -0,0 +1,72 @@ +# bash completion for GNU tar + +have tar && { +_tar() +{ + local cur ext regex tar untar + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'c t x u r d A' -- "$cur" ) ) + return 0 + fi + + case ${COMP_WORDS[1]} in + ?(-)[cr]*f) + _filedir + return 0 + ;; + +([^IZzJjy])f) + ext='@(@(tar|gem|spkg)?(.@(Z|[gx]z|bz?(2)|lzma))|t@([glx]z|bz?(2)))' + regex='\(\(tar\|gem\|spkg\)\(\.\(Z\|[gx]z\|bz?(2)\|lzma\)\)\?\|t\([glx]z\|bz2\?\)\)' + ;; + *[Zz]*f) + ext='@(t?(ar.)|gem.|spkg.)@(gz|Z)' + regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(gz\|Z\)' + ;; + *[Ijy]*f) + ext='@(@(t?(ar.)|gem.)bz?(2)|spkg)' + regex='\(\(t\(ar\.\)\?\|gem\.\)bz2\?\|spkg\)' + ;; + *[J]*f) + ext='@(t?(ar.)|gem.|spkg.)@(lz?(ma)|xz)' + regex='\(t\(ar\.\)\?\|gem\.\|spkg\.\)\(lzma\|xz\)\?' + ;; + *) + _filedir + return 0 + ;; + esac + + if [[ "$COMP_LINE" == *$ext' ' ]]; then + # complete on files in tar file + # + # get name of tar file from command line + tar=$( sed -e 's/^.* \([^ ]*'$regex'\) .*$/\1/' <<<"$COMP_LINE" ) + # devise how to untar and list it + untar=t${COMP_WORDS[1]//[^Izjyf]/} + + local IFS=$'\n' + COMPREPLY=( $( compgen -W "$( printf '%s\n' $( tar $untar $tar \ + 2>/dev/null ) )" -- "$cur" ) ) + return 0 + fi + + # file completion on relevant files + _filedir "$ext" + + return 0 +} +[ -n "${COMP_TAR_INTERNAL_PATHS:-}" ] && complete -F _tar -o dirnames tar || + complete -F _tar tar +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/tcpdump b/completions/tcpdump new file mode 100644 index 00000000..259f13e0 --- /dev/null +++ b/completions/tcpdump @@ -0,0 +1,37 @@ +# bash completion for tcpdump + +have tcpdump && +_tcpdump() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -r|-w|-F) + _filedir + return 0 + ;; + -i) + _available_interfaces -a + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-a -d -e -f -l -n -N -O -p \ + -q -R -S -t -u -v -x -C -F -i -m -r -s -T -w -E' -- "$cur" ) ) + fi + +} && +complete -F _tcpdump tcpdump + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/unace b/completions/unace new file mode 100644 index 00000000..9d27ef50 --- /dev/null +++ b/completions/unace @@ -0,0 +1,29 @@ +# unace(1) completion + +have unace && +_unace() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-c -c- -f -f- -o -o- -p -y -y-' -- "$cur" ) ) + else + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'e l t v x' -- "$cur" ) ) + else + _filedir ace + fi + fi +} && +complete -F _unace unace + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/unrar b/completions/unrar new file mode 100644 index 00000000..0a4fe27a --- /dev/null +++ b/completions/unrar @@ -0,0 +1,32 @@ +# unrar(1) completion + +have unrar && +_unrar() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-ad -ap -av- -c- -cfg- -cl -cu \ + -dh -ep -f -idp -ierr -inul -kb -o+ -o- -ow -p -p- -r -ta \ + -tb -tn -to -u -v -ver -vp -x -x@ -y' -- "$cur" ) ) + else + if [ $COMP_CWORD -eq 1 ]; then + COMPREPLY=( $( compgen -W 'e l lb lt p t v vb vt x' -- "$cur" ) ) + else + _filedir rar + fi + fi + +} && +complete -F _unrar unrar + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/update-alternatives b/completions/update-alternatives new file mode 100644 index 00000000..ebed294d --- /dev/null +++ b/completions/update-alternatives @@ -0,0 +1,100 @@ +# bash completion for update-alternatives + +have update-alternatives && { +_installed_alternatives() +{ + local admindir + # find the admin dir + for i in alternatives dpkg/alternatives rpm/alternatives; do + [ -d /var/lib/$i ] && admindir=/var/lib/$i && break + done + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --admindir ]]; then + admindir=${COMP_WORDS[i+1]} + break + fi + done + COMPREPLY=( $( compgen -W '$( command ls $admindir )' -- "$cur" ) ) +} + +_update_alternatives() +{ + local cur prev mode args i + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --altdir|--admindir) + _filedir -d + return 0 + ;; + --help|--usage|--version) + return 0 + ;; + esac + + # find which mode to use and how many real args used so far + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == --@(install|remove|auto|display|config|remove-all|set) ]]; then + mode=${COMP_WORDS[i]} + args=$(($COMP_CWORD - i)) + break + fi + done + + case $mode in + --install) + case $args in + 1|3) + _filedir + ;; + 2) + _installed_alternatives + ;; + 4) + # priority - no completions + ;; + *) + case $((args % 4)) in + 0|2) + _filedir + ;; + 1) + COMPREPLY=( $( compgen -W '--slave' -- "$cur" ) ) + ;; + 3) + _installed_alternatives + ;; + esac + esac + ;; + --remove|--set) + case $args in + 1) + _installed_alternatives + ;; + 2) + _filedir + ;; + esac + ;; + --auto|--remove-all|--display|--config) + _installed_alternatives + ;; + *) + COMPREPLY=( $( compgen -W '--verbose --quiet --help --version \ + --altdir --admindir --install --remove --auto --display \ + --config --set' -- "$cur" ) ) + esac +} +complete -F _update_alternatives update-alternatives alternatives +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/util-linux b/completions/util-linux new file mode 100644 index 00000000..f45ffd56 --- /dev/null +++ b/completions/util-linux @@ -0,0 +1,76 @@ +# Completions for tools included in util-linux (not necessarily Linux specific) + +# renice(8) completion +# +have renice && +_renice() +{ + local command cur curopt i + + COMPREPLY=() + _get_comp_words_by_ref cur + command=$1 + + i=0 + # walk back through command line and find last option + while [[ $i -le $COMP_CWORD && ${#COMPREPLY[@]} -eq 0 ]]; do + curopt=${COMP_WORDS[COMP_CWORD-$i]} + case "$curopt" in + -u) + _allowed_users + ;; + -g) + _pgids + ;; + -p|$command) + _pids + ;; + esac + i=$(( ++i )) + done +} && +complete -F _renice renice + +# kill(1) completion +# +have kill && +_kill() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ $COMP_CWORD -eq 1 && "$cur" == -* ]]; then + # return list of available signals + _signals + else + # return list of available PIDs + _pids + fi +} && +complete -F _kill kill + +# look(1) completion +# +have look && +_look() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD = 1 ]; then + COMPREPLY=( $( compgen -W '$(look "$cur" 2>/dev/null)' -- "$cur" ) ) + fi +} && +complete -F _look -o default look + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/vncviewer b/completions/vncviewer new file mode 100644 index 00000000..296eb8af --- /dev/null +++ b/completions/vncviewer @@ -0,0 +1,130 @@ +# bash completion for vncviewer + +have vncviewer && +_vncviewer_bootstrap() +{ + local fname + case $(_realcommand vncviewer) in + *xvnc4viewer) fname=_xvnc4viewer ;; + *tightvncviewer) fname=_tightvncviewer ;; + *) fname=_known_hosts ;; + esac + + # Install real completion for subsequent completions + complete -F $fname vncviewer + $fname # Generate completions once for now + unset -f _vncviewer_bootstrap +} && +complete -F _vncviewer_bootstrap vncviewer + +have tightvncviewer && +_tightvncviewer() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -passwd) + _filedir + return 0 + ;; + -encodings) + COMPREPLY=( $( compgen -W 'copyrect tight hextile zlib \ + corre rre raw' -- "$cur" ) ) + return 0 + ;; + -via) + _known_hosts_real "$cur" + return 0 + ;; + esac + + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-help -listen -via -shared -noshared\ + -viewonly -fullscreen -noraiseonbeep -passwd -encodings\ + -bgr233 -owncmap -truecolour -truecolor -depth \ + -compresslevel -quality -nojpeg -nocursorshape \ + -x11cursor' -- $cur ) ) + else + _known_hosts_real "$cur" + fi +} && +complete -F _tightvncviewer tightvncviewer + + +# NOTE: - VNC Viewer options are case insensitive. +# Preferred case is taken from -help. +# - Both single dash (-) and double dash (--) are allowed as option prefix +have xvnc4viewer && +_xvnc4viewer() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + # Convert double dash to single dash + case ${prev/#--/-} in + # -passwd, -PasswordFile + -[pP][aA][sS][sS][wW][dD]|-[pP][aA][sS][sS][wW][oO][rR][dD][fF][iI][lL][eE]) + _filedir + return 0 + ;; + # -PreferredEncoding + -[pP][rR][eE][fF][eE][rR][rR][eE][dD][eE][nN][cC][oO][dD][iI][nN][gG]) + COMPREPLY=( $( compgen -W 'zrle hextile raw' -- $cur ) ) + return 0 + ;; + # -via + -[vV][iI][aA]) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* || "$cur" == --* ]]; then + # Default to vncviewer camelcase options, see `vncviewer -help' + local dash options=( \ + AcceptClipboard AutoSelect DebugDelay display \ + DotWhenNoCursor FullColor FullColour FullScreen \ + geometry help listen Log \ + LowColourLevel MenuKey name Parent \ + passwd PasswordFile PointerEventInterval PreferredEncoding \ + SendClipboard SendPrimary Shared UseLocalCursor \ + via ViewOnly WMDecorationHeight WMDecorationWidth \ + ZlibLevel \ + ) + [[ "$cur" == --* ]] && dash=-- || dash=- + # Is a `nocasematch' variable available (bash > v3.1)? + if shopt nocasematch 2> /dev/null | command grep -q ^nocasematch; then + # Variable `nocasematch' is available + # Use vncviewer camelcase options + local option oldNoCaseMatch=$(shopt -p nocasematch) + shopt -s nocasematch + COMPREPLY=( $( for option in "${options[@]}"; do + [[ $dash$option == "$cur"* ]] && printf '%s\n' $dash$option + done ) ) + eval "$oldNoCaseMatch" 2> /dev/null + else + # Variable 'nocasematch' isn't available; + # Convert completions to lowercase + COMPREPLY=( $( compgen -W \ + "$( tr [:upper:] [:lower:] <<<${options[@]/#/$dash} )" \ + -- "$( tr [:upper:] [:lower:] <<<"$cur" )" ) ) + fi + else + _known_hosts_real "$cur" + fi +} && +complete -F _xvnc4viewer xvnc4viewer + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/vpnc b/completions/vpnc new file mode 100644 index 00000000..722fee3a --- /dev/null +++ b/completions/vpnc @@ -0,0 +1,49 @@ +# bash completion for vpnc + +have vpnc && +_vpnc() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --pfs) + COMPREPLY=( $( compgen -W 'nopfs dh1 dh2 dh5 server' -- "$cur" ) ) + return 0 + ;; + --pfs) + COMPREPLY=( $( compgen -W 'dh1 dh2 dh5' -- "$cur" ) ) + return 0 + ;; + --pid-file|--script) + _filedir + return 0 + ;; + --gateway) + _known_hosts_real "$cur" + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--version --print-config --help \ + --long-help --gateway --id --username --udp --domain \ + --xauth-inter --script --dh --pfs --enable-1des \ + --application-version --ifname --debug --no-detach \ + --pid-file --local-port --udp-port --disable-natt \ + --non-inter' -- "$cur" ) ) + else + COMPREPLY=( $( compgen -W '$( command ls /etc/vpnc )' -- "$cur" ) ) + fi +} && +complete -F _vpnc vpnc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/wireless-tools b/completions/wireless-tools new file mode 100644 index 00000000..56ba0db8 --- /dev/null +++ b/completions/wireless-tools @@ -0,0 +1,180 @@ +# bash completion for Linux wireless-tools + +[ $UNAME = Linux ] && +{ + +have iwconfig && +_iwconfig() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + mode) + COMPREPLY=( $( compgen -W 'managed ad-hoc master \ + repeater secondary monitor' -- "$cur" ) ) + return 0 + ;; + essid) + COMPREPLY=( $( compgen -W 'on off any' -- "$cur" ) ) + if [ -n "${COMP_IWLIST_SCAN:-}" ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \ + "$( iwlist ${COMP_WORDS[1]} scan | \ + awk -F'\"' '/ESSID/ {print $2}' )" -- "$cur" ) ) + fi + return 0 + ;; + nwid) + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + channel) + COMPREPLY=( $( compgen -W "$( iwlist ${COMP_WORDS[1]} channel | \ + awk '/^[ \t]*Channel/ {print $2}' )" -- "$cur" ) ) + return 0 + ;; + + freq) + COMPREPLY=( $( compgen -W "$( iwlist ${COMP_WORDS[1]} channel | \ + awk '/^[ \t]*Channel/ {print $4"G"}')" -- "$cur" ) ) + return 0 + ;; + ap) + COMPREPLY=( $( compgen -W 'on off any' -- "$cur" ) ) + if [ -n "${COMP_IWLIST_SCAN:-}" ]; then + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \ + "$( iwlist ${COMP_WORDS[1]} scan | \ + awk -F ': ' '/Address/ {print $2}' )" -- "$cur" ) ) + fi + return 0 + ;; + rate) + COMPREPLY=( $( compgen -W 'auto fixed' -- "$cur" ) ) + COMPREPLY=( "${COMPREPLY[@]}" $( compgen -W \ + "$( iwlist ${COMP_WORDS[1]} rate | \ + awk '/^[ \t]*[0-9]/ {print $1"M"}' )" -- "$cur" ) ) + return 0 + ;; + rts|frag) + COMPREPLY=( $( compgen -W 'auto fixed off' -- "$cur" ) ) + return 0 + ;; + key|enc) + COMPREPLY=( $( compgen -W 'off on open restricted' -- "$cur" ) ) + return 0 + ;; + power) + COMPREPLY=( $( compgen -W 'period timeout off on' -- "$cur" ) ) + return 0 + ;; + txpower) + COMPREPLY=( $( compgen -W 'off on auto' -- "$cur" ) ) + return 0 + ;; + retry) + COMPREPLY=( $( compgen -W 'limit lifetime' -- "$cur" ) ) + return 0 + ;; + esac + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- "$cur" ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'essid nwid mode freq channel sens mode \ + ap nick rate rts frag enc key power txpower commit' -- "$cur" ) ) + fi + +} && +complete -F _iwconfig iwconfig + + +have iwlist && +_iwlist() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- "$cur" ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'scan scanning freq frequency \ + channel rate bit bitrate key enc encryption power \ + txpower retry ap accesspoint peers event' -- "$cur" ) ) + fi +} && +complete -F _iwlist iwlist + + +have iwspy && +_iwspy() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- "$cur" ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W 'setthr getthr off' -- "$cur" ) ) + fi +} && +complete -F _iwspy iwspy + + +have iwpriv && +_iwpriv() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + roam) + COMPREPLY=( $( compgen -W 'on off' -- "$cur" ) ) + return 0 + ;; + port) + COMPREPLY=( $( compgen -W 'ad-hoc managed' -- "$cur" ) ) + return 0 + ;; + esac + + if [ $COMP_CWORD -eq 1 ]; then + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version' -- "$cur" ) ) + else + _available_interfaces -w + fi + else + COMPREPLY=( $( compgen -W '--all roam port' -- "$cur" ) ) + fi +} && +complete -F _iwpriv iwpriv + +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/wodim b/completions/wodim new file mode 100644 index 00000000..abc0ff25 --- /dev/null +++ b/completions/wodim @@ -0,0 +1,118 @@ +# bash completion for cdrecord/wodim + +# We set -o nospace and turn it off in several places for bash < 4 +# reasons; assuming bash >= 4 we could instead not turn it on +# initially but only in the few cases where it's actually needed. + +have cdrecord || have wodim && +_cdrecord() +{ + local cur prev i generic_options track_options track_mode + + COMPREPLY=() + _get_comp_words_by_ref -n = cur prev + + # foo=bar style option + if [[ "$cur" == *=* ]]; then + prev=${cur%%=*} + cur=${cur#*=} + case $prev in + textfile|cuefile|msifile) + compopt +o nospace &>/dev/null + _filedir + ;; + blank) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W 'help all fast track unreserve trtail + unclose session' -- "$cur" ) ) + ;; + driveropts) + if [[ $cur == *=* ]]; then + prev=${cur%%=*} + cur=${cur#*=} + case $prev in + varirec) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "-2 -1 0 1 2" \ + -- "$cur" ) ) + ;; + gigarec) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "0.6 0.7 0.8 1.0 1.2 1.3 + 1.4" -- "$cur" ) ) + ;; + tattoofile) + compopt +o nospace &>/dev/null + _filedir + ;; + esac + else + COMPREPLY=( $( compgen -W 'burnfree noburnfree varirec= + gigarec= audiomaster forcespeed noforcespeed speedread + nospeedread singlesession nosinglesession hidecdr + nohidecdr tattooinfo tattoofile=' -- "$cur" ) ) + [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \ + compopt +o nospace &>/dev/null + fi + ;; + driver) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "$( $1 driver=help 2>&1 | \ + awk 'NR > 1 { print $1 }' ) help" -- "$cur" ) ) + ;; + minbuf) + compopt +o nospace &>/dev/null + COMPREPLY=( $( compgen -W "$( seq 25 95 2>/dev/null )" \ + -- "$cur" ) ) + ;; + esac + return 0 + fi + + generic_options=( -version -v -V -d -silent -force -immed -dummy -clone \ + -dao -sao -tao -raw -raw96r -raw96p -raw16 -multi -msinfo -toc -atip \ + -fix -nofix -waiti -load -lock -eject -format -setdropts -checkdrive \ + -prcap -inq -scanbus --devices -reset -abort -overburn -ignsize \ + -useinfo -packet -noclose -text debug= kdebug= minbuf= msifile= \ + speed= blank= fs= ts= dev= gracetime= timeout= driver= driveropts= \ + defpregap= pktsize= mcn= textfile= cuefile= ) + track_options=( -audio -swab -data -mode2 -xa -xa1 -xa2 -xamix -cdi \ + -isosize -pad -nopad -shorttrack -noshorttrack -preemp -nopreemp \ + -copy -nocopy -scms isrc= index= padsize= pregap= tsize= ) + # look if previous was either a file or a track option + track_mode=0 + if [ $COMP_CWORD -gt 1 ]; then + if [ -f "$prev" ]; then + track_mode=1 + else + for (( i=0; i < ${#track_options[@]}; i++ )); do + if [[ "${track_options[i]}" == "$prev" ]]; then + track_mode=1 + break + fi + done + fi + fi + + # files are always eligible completion + _filedir + # track options are always available + COMPREPLY=( "${COMPREPLY[@]}" \ + $( compgen -W '${track_options[@]}' -- "$cur" ) ) + # general options are no more available after file or track option + if [ $track_mode -eq 0 ]; then + COMPREPLY=( "${COMPREPLY[@]}" \ + $( compgen -W '${generic_options[@]}' -- "$cur" ) ) + fi + [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != *= ]] && \ + compopt +o nospace &>/dev/null +} && +complete -F _cdrecord -o nospace cdrecord wodim + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/wol b/completions/wol new file mode 100644 index 00000000..89a1a8ba --- /dev/null +++ b/completions/wol @@ -0,0 +1,47 @@ +# wol(1) completion + +have wol && +_wol() +{ + local cur prev split=false + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev + _split_longopt && split=true + + case $prev in + -V|--version|--help|-p|--port|--passwd|-w|--wait) + return 0 + ;; + -h|--host|-i|--ipaddr) + # Broadcast addresses + COMPREPLY=( $( PATH=$PATH:/sbin ifconfig -a 2>/dev/null | \ + sed -ne 's/.*[[:space:]]\{1,\}Bcast:\([^[:space:]]*\).*/\1/p' \ + -e 's/.*[[:space:]]\{1,\}broadcast[[:space:]]\{1,\}\([^[:space:]]*\).*/\1/p' ) ) + _known_hosts_real "$cur" + return 0 + ;; + -f|--file) + _filedir + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--help --version --verbose --wait --host + --port --file --passwd' -- "$cur" ) ) + return 0 + fi + + _mac_addresses +} && +complete -F _wol wol + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/wtf b/completions/wtf new file mode 100644 index 00000000..a611978d --- /dev/null +++ b/completions/wtf @@ -0,0 +1,36 @@ +# wtf completion +# Raphael Droz, 25/09/2009 + +have wtf && +_wtf() +{ + local cur prev db + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + [ "$prev" = -f ] && _filedir && return 0 + [[ "$cur" == -* ]] && COMPREPLY=( -f ) && return 0 + + set -- "${COMP_WORDS[@]}" + while [ $# -gt 0 ]; do + if [ "$1" = -f ]; then + shift ; db=$1 ; break + fi + shift + done + [ -z $db ] && db=${ACRONYMDB:-/usr/share/misc/acronyms*} + + [ ${BASH_VERSINFO[0]} -ge 4 ] && cur="${cur^^}" + + COMPREPLY=( $( compgen -W "$( cut -f 1 -s $db ) -f" -- "${cur}" ) ) +} && +complete -F _wtf wtf + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/wvdial b/completions/wvdial new file mode 100644 index 00000000..3b135f0a --- /dev/null +++ b/completions/wvdial @@ -0,0 +1,52 @@ +# bash completion for wvdial + +have wvdial && +_wvdial() +{ + local cur prev config i IFS=$'\n' + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --config) + _filedir + return 0 + ;; + esac + + case $cur in + -*) + COMPREPLY=( $( compgen -W '--config --chat \ + --remotename --help --version --no-syslog' \ + -- "$cur" ) ) + ;; + *) + # start with global and personal config files + config="/etc/wvdial.conf"$'\n'"$HOME/.wvdialrc" + # replace with command line config file if present + for (( i=1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == "--config" ]]; then + config=${COMP_WORDS[i+1]} + break + fi + done + # parse config files for sections and + # remove default section + COMPREPLY=( $( sed -ne "s|^\[Dialer \($cur.*\)\]$|\1|p" $config \ + 2>/dev/null | command grep -v '^Defaults$')) + # escape spaces + COMPREPLY=${COMPREPLY// /\\ } + ;; + esac + +} && +complete -F _wvdial wvdial + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xhost b/completions/xhost new file mode 100644 index 00000000..cec4adcf --- /dev/null +++ b/completions/xhost @@ -0,0 +1,25 @@ +# xhost(1) completion + +have xhost && +_xhost () +{ + local cur + _get_comp_words_by_ref cur + + case $cur in + +*) _known_hosts_real -p+ "${cur:1}" ;; + -*) _known_hosts_real -p- "${cur:1}" ;; + *) _known_hosts_real "$cur" ;; + esac + + return 0 +} && +complete -F _xhost xhost + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xm b/completions/xm new file mode 100644 index 00000000..f9f69a29 --- /dev/null +++ b/completions/xm @@ -0,0 +1,233 @@ +# bash completion for xm + +have xm && { +_xen_domain_names() +{ + COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | \ + awk '!/Name|Domain-0/ { print $1 }' )" -- "$cur") ) +} + +_xen_domain_ids() +{ + COMPREPLY=( $(compgen -W "$( xm list 2>/dev/null | \ + awk '!/Name|Domain-0/ { print $2 }' )" -- "$cur") ) +} + +_xm() +{ + # TODO: _split_longopt + + local cur prev command options + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + commands='console vncviewer create new delete destroy domid domname \ + dump-core list mem-max mem-set migrate pause reboot rename reset \ + restore resume save shutdown start suspend sysrq trigger top unpause \ + uptime usb-add usb-del vcpu-list vcpu-pin vcpu-set debug-keys dmesg \ + info log serve sched-credit sched-sedf block-attach block-detach \ + block-list block-configure network-attach network-detach network-list \ + vtpm-list pci-attach pci-detach pci-list pci-list-assignable-devices \ + scsi-attach scsi-detach scsi-list vnet-list vnet-create vnet-delete \ + labels addlabel rmlabel getlabel dry-run resources dumppolicy \ + setpolicy resetpolicy getpolicy shell help' + + if [[ $COMP_CWORD -eq 1 ]] ; then + COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) ) + else + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + fi + + command=${COMP_WORDS[1]} + if [[ "$cur" == -* ]]; then + # possible options for the command + case $command in + create) + options='-c' + ;; + dmesg) + options='--clear' + ;; + list) + options='--long' + ;; + reboot) + options='-w -a' + ;; + shutdown) + options='-w -a -R -H' + ;; + sched-credit) + options='-d -w -c' + ;; + block-list|network-list|vtpm-list|vnet-list) + options='-l --long' + ;; + getpolicy) + options='--dumpxml' + ;; + new) + options='-h --help --help_config -q \ + --quiet --path= -f= \ + --defconfig= -F= --config= \ + -b --dryrun -x --xmldryrun \ + -s --skipdtd -p --paused -c \ + --console_autoconnect' + ;; + esac + COMPREPLY=( $( compgen -W "$options" -- "$cur" ) ) + else + case $command in + console|destroy|domname|domid|list|mem-set|mem-max| \ + pause|reboot|rename|shutdown|unpause|vcpu-list|vcpu-pin| \ + vcpu-set|block-list|network-list|vtpm-list) + _count_args + case $args in + 2) + _xen_domain_names + ;; + esac + ;; + migrate) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + _known_hosts_real "$cur" + ;; + esac + ;; + restore|dry-run|vnet-create) + _filedir + ;; + save) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + _filedir + ;; + esac + ;; + sysrq) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + COMPREPLY=( $(compgen -W "r s e i u b" -- "$cur") ) + ;; + esac + ;; + block-attach) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + COMPREPLY=( $(compgen -W "phy: file:" -- "$cur") ) + ;; + 5) + COMPREPLY=( $(compgen -W "w r" -- "$cur") ) + ;; + 6) + _xen_domain_names + ;; + esac + ;; + block-detach) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + COMPREPLY=( $(compgen -W "$( xm block-list $prev \ + 2>/dev/null | awk '!/Vdev/ { print $1 }' )" \ + -- "$cur") ) + ;; + esac + ;; + network-attach) + _count_args + case $args in + 2) + _xen_domain_names + ;; + *) + COMPREPLY=( $(compgen -W "script= ip= mac= \ + bridge= backend=" -- "$cur") ) + ;; + esac + ;; + network-detach) + _count_args + case $args in + 2) + _xen_domain_names + ;; + 3) + COMPREPLY=( $(compgen -W "$( xm network-list $prev \ + 2>/dev/null | awk '!/Idx/ { print $1 }' )" \ + -- "$cur") ) + ;; + esac + ;; + sched-credit) + case $prev in + -d) + _xen_domain_names + return 0 + ;; + esac + ;; + create) + _filedir + COMPREPLY=( ${COMPREPLY[@]:-} \ + $( compgen -W '$( command ls /etc/xen 2>/dev/null )' \ + -- "$cur" ) ) + ;; + new) + case $prev in + -f|-F|--defconfig|--config) + _filedir + return 0 + ;; + --path) + _filedir -d + return 0 + ;; + esac + + _count_args + case $args in + 2) + _xen_domain_names + ;; + esac + ;; + esac + fi + fi + + return 0 +} +complete -F _xm xm +} + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xmllint b/completions/xmllint new file mode 100644 index 00000000..5b9c301c --- /dev/null +++ b/completions/xmllint @@ -0,0 +1,55 @@ +# bash completion for xmllint(1) + +have xmllint && +_xmllint() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -o|--output) + _filedir + return 0 + ;; + --path|--dtdvalidfpi|--maxmem|--encode|--pattern) + # argument required but no completions available + return 0 + ;; + --dtdvalid) + _filedir 'dtd?(.gz)' + return 0 + ;; + --relaxng) + _filedir 'rng?(.gz)' + return 0 + ;; + --schema) + _filedir 'xsd?(.gz)' + return 0 + ;; + --schematron) + _filedir 'sch?(.gz)' + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$( xmllint --help 2>&1 | \ + sed -ne "s/^[[:space:]]*\(--[^[:space:]:]*\).*/\1/p" ) \ + -o' -- "$cur" ) ) + return 0 + fi + + _filedir '@(*ml|htm|svg|xs[dl]|rng|wsdl|jnlp)?(.gz)' +} && +complete -F _xmllint xmllint + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xmlwf b/completions/xmlwf new file mode 100644 index 00000000..ba02524b --- /dev/null +++ b/completions/xmlwf @@ -0,0 +1,39 @@ +# bash completion for xmlwf(1) + +have xmlwf && +_xmlwf() +{ + local cur prev + + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + -d) + _filedir -d + return 0 + ;; + -e) + COMPREPLY=( $( compgen -W 'US-ASCII UTF-8 UTF-16 \ + ISO-8859-1' -- "$cur" ) ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-c -d -e -m -n -p -r -s -t -v -w \ + -x' -- "$cur" ) ) + return 0 + fi + + _filedir '@(*ml|htm|svg|xs[dl]|rng|wsdl|jnlp)' +} && +complete -F _xmlwf xmlwf + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xmms b/completions/xmms new file mode 100644 index 00000000..662e2faa --- /dev/null +++ b/completions/xmms @@ -0,0 +1,30 @@ +# bash completion for xmms + +have xmms && +_xmms() +{ + local cur + + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-h --help -r --rew -p --play \ + -u --pause -s --stop -t --play-pause -f --fwd -e \ + --enqueue -m --show-main-window -i --sm-client-id \ + -v --version' -- "$cur" ) ) + else + _filedir '@(mp[23]|ogg|wav|pls|m3u|xm|mod|s[3t]m|it|mtm|ult|flac)' + + fi + +} && +complete -F _xmms xmms + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xmodmap b/completions/xmodmap new file mode 100644 index 00000000..cde9e7e1 --- /dev/null +++ b/completions/xmodmap @@ -0,0 +1,32 @@ +# xmodmap(1) completion + +have xmodmap && +_xmodmap() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -display|-e) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-display -help -grammar -verbose -quiet -n + -e -pm -pk -pke -pp' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _xmodmap xmodmap + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xrandr b/completions/xrandr new file mode 100644 index 00000000..70de80f7 --- /dev/null +++ b/completions/xrandr @@ -0,0 +1,52 @@ +# bash completion for xrandr + +have xrandr && +_xrandr() +{ + local cur prev output modes + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --output) + local outputs=$(xrandr|awk '/connected/ {print $1}') + COMPREPLY=( $(compgen -W "$outputs" -- "$cur")) + return 0 + ;; + --mode) + for(( i = 1; i < COMP_CWORD; i++ )); do + if [[ "${COMP_WORDS[i]}" == "--output" ]]; then + output=${COMP_WORDS[i+1]} + break + fi + done + modes=$(xrandr|sed -e "1,/$output/ d" \ + -e "/connected/,$ d"|awk '{print $1}') + COMPREPLY=( $( compgen -W "$modes" -- "$cur")) + return 0 + ;; + esac + + case $cur in + *) + COMPREPLY=( $(compgen -W '-display -help --orientation --query \ + --size --rate --version -x -y --screen --verbose --dryrun \ + --prop --fb --fbmm --dpi --output --auto --mode --preferred \ + --pos --reflect --rotate --left-of --right-of --above --below \ + --same-as --set --off --crtc --newmode --rmmode --addmode \ + --delmode' -- "$cur") ) + return 0 + ;; + esac + + return 0 +} && +complete -F _xrandr xrandr + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xrdb b/completions/xrdb new file mode 100644 index 00000000..7307f013 --- /dev/null +++ b/completions/xrdb @@ -0,0 +1,37 @@ +# xrdb(1) completion + +have xrdb && +_xrdb() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case $prev in + -backup|-display|-help) + return 0 + ;; + -cpp|-edit) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '-help -display -all -global -screen -screens + -n -quiet -cpp -nocpp -symbols -query -load -override -merge + -remove -retain -edit -backup' -- "$cur" ) ) + return 0 + fi + + _filedir +} && +complete -F _xrdb xrdb + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xsltproc b/completions/xsltproc new file mode 100644 index 00000000..2782f805 --- /dev/null +++ b/completions/xsltproc @@ -0,0 +1,56 @@ +# xsltproc(1) completion + +have xsltproc && +_xsltproc() +{ + local cur prev + COMPREPLY=() + _get_comp_words_by_ref cur prev + + case $prev in + --output|-o) + _filedir + return 0 + ;; + # TODO : number only + --maxdepth) + return 0 + ;; + --encoding) + # some aliases removed + COMPREPLY=( $( compgen -W "$( iconv -l | sed -e '/^UTF[1378]/d' \ + -e '/^ISO[0-9_]/d' -e '/^8859/d' -e 's/\/.*//')" -- "$cur" ) ) + return 0 + ;; + --param|--stringparam) + return 0 + ;; + # not really like --writesubtree + --path) + _filedir -d + return 0 + ;; + --writesubtree) + _filedir -d + return 0 + ;; + esac + + [[ $COMP_CWORD -gt 2 && `_get_cword '' 2` == --?(string)param ]] && \ + return 0 + + if [[ "$cur" == -* ]]; then + _longopt xsltproc + else + _filedir '@(xsl|xslt|xml)' + fi +} && +complete -F _xsltproc xsltproc + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/xz b/completions/xz new file mode 100644 index 00000000..89a8ac98 --- /dev/null +++ b/completions/xz @@ -0,0 +1,102 @@ +# xz(1) completion + +have xz && +_xz() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--compress --decompress --test --list \ + --keep --force --stdout --suffix --files --files0 --format --check \ + -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 --fast --best --extreme --memory \ + --lzma1 --lzma2 --x86 --powerpc --ia64 --arm --armthumb --sparc \ + --delta --quiet --verbose --no-warn --help --long-help --version' \ + -- "$cur" ) ) + return 0 + fi + + local split=false + _split_longopt && split=true + + local xspec="*.@(xz|lzma|txz|tlz)" + + case $prev in + --decompress|--list|--test|-!(-*)[dlt]*) + xspec="!"$xspec + ;; + --files|--files0) + _filedir + return 0 + ;; + -C|--check) + COMPREPLY=( $( compgen -W 'crc32 crc64 sha256' -- "$cur" ) ) + return 0 + ;; + -F|--format) + COMPREPLY=( $( compgen -W 'auto xz lzma raw' -- "$cur" ) ) + return 0 + ;; + -M|--memory|-S|--suffix|--delta|--lzma1|--lzma2) + # argument required but no completions available + return 0 + ;; + -h|--help|-H|--long-help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + _expand || return 0 + + local IFS=$'\n' + _compopt_o_filenames + COMPREPLY=( $( compgen -f -X "$xspec" -- "$cur" ) \ + $( compgen -d -- "$cur" ) ) +} && +complete -F _xz xz + +# xzdec(1) completion +# +have xzdec && +_xzdec() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '--memory --help --version' -- "$cur" ) ) + return 0 + fi + + local split=false + _split_longopt && split=true + + case $prev in + -M|--memory) + # argument required but no completions available + return 0 + ;; + -h|--help|-V|--version) + # all other arguments are noop with these + return 0 + ;; + esac + + $split && return 0 + + _filedir xz # no lzma support here as of xz 4.999.9beta +} && +complete -F _xzdec xzdec + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/yp-tools b/completions/yp-tools new file mode 100644 index 00000000..7252a129 --- /dev/null +++ b/completions/yp-tools @@ -0,0 +1,36 @@ +# bash completion for yp-tools + +have ypcat && +_ypmatch() +{ + local cur map cmd + + COMPREPLY=() + _get_comp_words_by_ref cur + cmd=${1##*/} + + [[ $cmd == ypcat && $COMP_CWORD -gt 1 ]] && return 0 + [[ $cmd == ypmatch && $COMP_CWORD -gt 2 ]] && return 0 + + if [[ $cmd == ypmatch && $COMP_CWORD -eq 1 && \ + ${#COMP_WORDS[@]} -eq 3 ]]; then + map=${COMP_WORDS[2]} + COMPREPLY=( $( compgen -W '$( ypcat $map | \ + cut -d':' -f 1 )' -- "$cur") ) + else + [[ $cmd == ypmatch && $COMP_CWORD -ne 2 ]] && return 0 + COMPREPLY=( $( compgen -W \ + '$( printf "%s\n" $(ypcat -x | cut -d"\"" -f 2) )' -- "$cur")) + fi + + return 0 +} && +complete -F _ypmatch ypmatch ypcat + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh diff --git a/completions/yum-arch b/completions/yum-arch new file mode 100644 index 00000000..bb864af4 --- /dev/null +++ b/completions/yum-arch @@ -0,0 +1,24 @@ +# yum-arch(8) completion + +have yum-arch && +_yum_arch() +{ + local cur + COMPREPLY=() + _get_comp_words_by_ref cur + + if [[ "$cur" == -* ]] ; then + COMPREPLY=( $( compgen -W '-d -v -vv -n -c -z -s -l -q' -- "$cur" ) ) + else + _filedir -d + fi +} && +complete -F _yum_arch yum-arch + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh |