All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Reisner <d@falconindy.com>
To: Sami Kerola <kerolasa@iki.fi>
Cc: util-linux@vger.kernel.org
Subject: Re: [PATCH 05/10] bash-completion: misc-utils
Date: Wed, 27 Mar 2013 21:42:41 -0400	[thread overview]
Message-ID: <20130328014241.GY526@rampage> (raw)
In-Reply-To: <1364422072-23552-6-git-send-email-kerolasa@iki.fi>

On Wed, Mar 27, 2013 at 10:07:47PM +0000, Sami Kerola wrote:
> Signed-off-by: Sami Kerola <kerolasa@iki.fi>
> ---
>  shell-completion/blkid   |  62 ++++++++++++++++++++++++++
>  shell-completion/cal     |  15 +++++++
>  shell-completion/findmnt | 114 +++++++++++++++++++++++++++++++++++++++++++++++
>  shell-completion/getopt  |  34 ++++++++++++++
>  shell-completion/logger  |  43 ++++++++++++++++++
>  shell-completion/look    |  24 ++++++++++
>  shell-completion/lsblk   |  60 +++++++++++++++++++++++++
>  shell-completion/lslocks |  43 ++++++++++++++++++
>  shell-completion/mcookie |  23 ++++++++++
>  shell-completion/namei   |  17 +++++++
>  shell-completion/rename  |  27 +++++++++++
>  shell-completion/uuidd   |  33 ++++++++++++++
>  shell-completion/uuidgen |  15 +++++++
>  shell-completion/whereis |  24 ++++++++++
>  shell-completion/wipefs  |  38 ++++++++++++++++
>  15 files changed, 572 insertions(+)
>  create mode 100644 shell-completion/blkid
>  create mode 100644 shell-completion/cal
>  create mode 100644 shell-completion/findmnt
>  create mode 100644 shell-completion/getopt
>  create mode 100644 shell-completion/logger
>  create mode 100644 shell-completion/look
>  create mode 100644 shell-completion/lsblk
>  create mode 100644 shell-completion/lslocks
>  create mode 100644 shell-completion/mcookie
>  create mode 100644 shell-completion/namei
>  create mode 100644 shell-completion/rename
>  create mode 100644 shell-completion/uuidd
>  create mode 100644 shell-completion/uuidgen
>  create mode 100644 shell-completion/whereis
>  create mode 100644 shell-completion/wipefs
> 
> diff --git a/shell-completion/blkid b/shell-completion/blkid
> new file mode 100644
> index 0000000..dce41e0
> --- /dev/null
> +++ b/shell-completion/blkid
> @@ -0,0 +1,62 @@
> +_blkid_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-c')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-o')
> +			COMPREPLY=( $(compgen -W "value device export full" -- $cur) )
> +			return 0
> +			;;
> +		'-s')
> +			COMPREPLY=( $(compgen -W "tag" -- $cur) )
> +			return 0
> +			;;
> +		'-t')
> +			COMPREPLY=( $(compgen -W "token" -- $cur) )
> +			return 0
> +			;;
> +		'-L')
> +			COMPREPLY=( $(compgen -W "$(\ls /dev/disk/by-label/ 2>/dev/null)" -- $cur) )
> +			return 0
> +			;;
> +		'-U')
> +			COMPREPLY=( $(compgen -W "$(\ls /dev/disk/by-uuid/ 2>/dev/null)" -- $cur) )
> +			return 0
> +			;;
> +		'-s')
> +			COMPREPLY=( $(compgen -W "size" -- $cur) )
> +			return 0
> +			;;
> +		'-O')
> +			COMPREPLY=( $(compgen -W "offset" -- $cur) )
> +			return 0
> +			;;
> +		'-u')
> +			COMPREPLY=( $(compgen -W "filesystem raid crypto other nofilesystem noraid nocrypto noother" -- $cur) )
> +			return 0
> +			;;
> +		'-n')
> +			COMPREPLY=( $(compgen -W "$(awk '{print $NF}' /proc/filesystems)" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-c -d -h -g -o -k -s -t -l -L -U -V -p -i -S -O -u -n"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local PARTITIONS
> +	PARTITIONS="$(for I in /sys/block/*/*/partition; do IFS='/'; DIR_ARR=($I); echo "/dev/${DIR_ARR[4]}"; done)"

You want the loop *outside* the assignment, rather than exploding the
contents into the array via echo:

  for part in /sys/block/*/*/partition; do
    IFS=/ read -ra a <<< "$part"
    partitions+=("${a[4]}")
  done

> +	COMPREPLY=( $(compgen -W "$PARTITIONS" -- $cur) )
> +	return 0
> +}
> +complete -F _blkid_module blkid
> diff --git a/shell-completion/cal b/shell-completion/cal
> new file mode 100644
> index 0000000..d50c8bb
> --- /dev/null
> +++ b/shell-completion/cal
> @@ -0,0 +1,15 @@
> +_cal_module()
> +{
> +	local cur OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-1 --one -3 --three -s --sunday -m --monday -j --julian -y --year -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _cal_module cal
> diff --git a/shell-completion/findmnt b/shell-completion/findmnt
> new file mode 100644
> index 0000000..5207b97
> --- /dev/null
> +++ b/shell-completion/findmnt
> @@ -0,0 +1,114 @@
> +_findmnt_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-p'|'--poll')
> +			COMPREPLY=( $(compgen -W "=list" -- $cur) )
> +			return 0
> +			;;
> +		'-w'|'--timeout')
> +			COMPREPLY=( $(compgen -W "timeout" -- $cur) )
> +			return 0
> +			;;
> +		'-d'|'--direction')
> +			COMPREPLY=( $(compgen -W "forward backward" -- $cur) )
> +			return 0
> +			;;
> +		'-F'|'--tab-file')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-N'|'--task')
> +			local TID I
> +			TID="$(for I in /proc/*/mountinfo; do IFS='/'; TID=($I); echo "${TID[2]}"; done)"

Ditto here

> +			COMPREPLY=( $(compgen -W "$TID" -- $cur) )
> +			return 0
> +			;;
> +		'-O'|'--options')
> +			local MNT_OPTS
> +			MNT_OPTS=$(awk '{ n = split($4, a, ","); for (i = 0; i <= n; i++) { mnt_opts[a[i]]=1 } } END { for (i in mnt_opts) { print i } }' /etc/mtab 2>/dev/null )

I'm not sure you want to get into this game. You're including values
from key=val pairs (e.g. the 300 in timeout=300). Regardless, no awk
required here

  declare -A mnt_opts

  while read _ _ _ optstring _; do
    IFS=, read -ra opts <<< "$optstring"
    for opt in "${opts[@]}"; do
      mnt_opts["${opt%%=*}"]=1
    done
  done </etc/mtab

  opts=("${!mnt_opts[@]}")

> +			COMPREPLY=( $(compgen -W "$MNT_OPTS" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?

I've been down this road when I wrote some of the systemd completion. I
don't think you want to go there.

> +			local OUTPUT
> +			OUTPUT="SOURCE TARGET FSTYPE OPTIONS VFS-OPTIONS
> +				FS-OPTIONS LABEL UUID PARTLABEL PARTUUID
> +				MAJ\:MIN ACTION OLD-TARGET OLD-OPTIONS
> +				SIZE AVAIL USED USE% FSROOT TID ID
> +				OPT-FIELDS PROPAGATION FREQ PASSNO"
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
> +			return 0
> +			;;
> +		'-t'|'--types')
> +			local TYPES
> +			TYPES="adfs affs autofs cifs coda coherent cramfs
> +				debugfs devpts efs ext ext2 ext3 ext4 hfs
> +				hfsplus hpfs iso9660 jfs minix msdos
> +				ncpfs nfs nfs4 ntfs proc qnx4 ramfs
> +				reiserfs romfs squashfs smbfs sysv tmpfs
> +				ubifs udf ufs umsdos usbfs vfat xenix xfs
> +				xiafs"
> +			COMPREPLY=( $(compgen -W "$TYPES" -- $cur) )
> +			return 0
> +			;;
> +		'-S'|'--source')
> +			local DEV_MPOINT
> +			DEV_MPOINT=$(awk '{ print $1 }' /etc/mtab 2>/dev/null)
> +			COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +			return 0
> +			;;
> +		'-T'|'--target')
> +			local DEV_MPOINT
> +			DEV_MPOINT=$(awk '{ print $2 }' /etc/mtab 2>/dev/null)
> +			COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-s --fstab
> +				-m --mtab
> +				-k --kernel
> +				-p --poll
> +				-w --timeout
> +				-A --all
> +				-a --ascii
> +				-c --canonicalize
> +				-D --df
> +				-d --direction
> +				-e --evaluate
> +				-F --tab-file
> +				-f --first-only
> +				-i --invert
> +				-l --list
> +				-N --task
> +				-n --noheadings
> +				-u --notruncate
> +				-O --options
> +				-o --output
> +				-P --pairs
> +				-r --raw
> +				-t --types
> +				-v --nofsroot
> +				-R --submounts
> +				-S --source
> +				-T --target
> +				-h --help
> +				-V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local DEV_MPOINT
> +	DEV_MPOINT=$(awk '{ print $1, $2 }' /etc/mtab 2>/dev/null)
> +	COMPREPLY=( $(compgen -W "$DEV_MPOINT" -- $cur) )
> +	return 0
> +}
> +complete -F _findmnt_module findmnt
> diff --git a/shell-completion/getopt b/shell-completion/getopt
> new file mode 100644
> index 0000000..ea8c8e2
> --- /dev/null
> +++ b/shell-completion/getopt
> @@ -0,0 +1,34 @@
> +_getopt_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-l'|'--longoptions')
> +			COMPREPLY=( $(compgen -W "longopts" -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--name')
> +			COMPREPLY=( $(compgen -W "name" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--options')
> +			COMPREPLY=( $(compgen -W "optstring" -- $cur) )
> +			return 0
> +			;;
> +		'-s'|'--shell')
> +			COMPREPLY=( $(compgen -W "sh bash csh tcsh" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --alternative -h --help -l --longoptions -n --name -o --options -q --quiet -Q --quiet-output -s --shell -T --test -u --unquote -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _getopt_module getopt
> diff --git a/shell-completion/logger b/shell-completion/logger
> new file mode 100644
> index 0000000..f572302
> --- /dev/null
> +++ b/shell-completion/logger
> @@ -0,0 +1,43 @@
> +_logger_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-f'|'--file')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--server')
> +			COMPREPLY=( $(compgen -A hostname -- $cur) )
> +			return 0
> +			;;
> +		'-P'|'--port')
> +			COMPREPLY=( $(compgen -W "$(awk '$1 ~ /^syslog$/  {split($2, a, "/"); print a[1]}' /etc/services)" -- $cur) )
> +			return 0
> +			;;
> +		'-p'|'--priority')
> +			COMPREPLY=( $(compgen -W "$(echo {auth,authpriv,cron,daemon,ftp,lpr,mail,news,security}.{alert,crit,debug,emerg,err,error})" -- $cur) )
> +			return 0
> +			;;
> +		'-t'|'--tag')
> +			COMPREPLY=( $(compgen -W "tag" -- $cur) )
> +			return 0
> +			;;
> +		'-u'|'--socket')
> +			COMPREPLY=( $(compgen -W "$(awk '$NF ~ /^\// {print $NF}' /proc/net/unix)" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-d --udp -i --id -f --file -h --help -n --server -P --port -p --priority -s --stderr -t --tag -u --socket -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _logger_module logger
> diff --git a/shell-completion/look b/shell-completion/look
> new file mode 100644
> index 0000000..68cea56
> --- /dev/null
> +++ b/shell-completion/look
> @@ -0,0 +1,24 @@
> +_look_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-t'|'--terminate')
> +			COMPREPLY=( $(compgen -W "char" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --alternative -d --alphanum -f --ignore-case -t --terminate -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _look_module look
> diff --git a/shell-completion/lsblk b/shell-completion/lsblk
> new file mode 100644
> index 0000000..521cead
> --- /dev/null
> +++ b/shell-completion/lsblk
> @@ -0,0 +1,60 @@
> +_lsblk_module()
> +{
> +	local cur prev OPTS MAJOR
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-e'|'--exclude'|'-I'|'--include')
> +			MAJOR=$(\ls /sys/dev/block/ | sed 's/:.*//')
> +			# FIXME: how to append to a string with compgen?
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$MAJOR" -S ',' -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?
> +			OUTPUT="NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT
> +				LABEL UUID PARTLABEL PARTUUID RA RO RM
> +				MODEL SIZE STATE OWNER GROUP MODE
> +				ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC
> +				ROTA SCHED RQ-SIZE TYPE DISC-ALN
> +				DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN
> +				RAND PKNAME HCTL TRAN REV VENDOR"
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --all
> +				-b --bytes
> +				-d --nodeps
> +				-D --discard
> +				-e --exclude
> +				-I --include
> +				-f --fs
> +				-h --help
> +				-i --ascii
> +				-m --perms
> +				-l --list
> +				-n --noheadings
> +				-o --output
> +				-P --pairs
> +				-r --raw
> +				-s --inverse
> +				-t --topology
> +				-S --scsi
> +				-h --help
> +				-V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local DEVS
> +	DEVS="$(\ls -d /sys/class/block/* | sed 's|/sys/class/block/|/dev/|g')"
> +	COMPREPLY=( $(compgen -W "$DEVS" -- $cur) )
> +	return 0
> +}
> +complete -F _lsblk_module lsblk
> diff --git a/shell-completion/lslocks b/shell-completion/lslocks
> new file mode 100644
> index 0000000..f55c17e
> --- /dev/null
> +++ b/shell-completion/lslocks
> @@ -0,0 +1,43 @@
> +_lslocks_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-p'|'--pid')
> +			local PIDS
> +			# /proc/locks can have 8 to 9 fields, see commit
> +			# 55c0d16bab8cc84b72bf11cb2fdd8aa6205ac608
> +			PIDS="$(awk '{print $(NF-3)}' /proc/locks)"
> +			COMPREPLY=( $(compgen -W "$PIDS" -- $cur) )
> +			return 0
> +			;;
> +		'-o'|'--output')
> +			# FIXME: how to append to a string with compgen?
> +			local OUTPUT
> +			OUTPUT="COMMAND PID TYPE SIZE MODE M START END PATH BLOCKER"
> +			compopt -o nospace
> +			COMPREPLY=( $(compgen -W "$OUTPUT" -S ',' -- $cur) )
> +			return 0
> +			;;
> +
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-p --pid
> +				-o --output
> +				-n --noheadings
> +				-r --raw
> +				-u --notruncate
> +				-h --help
> +				-V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _lslocks_module lslocks
> diff --git a/shell-completion/mcookie b/shell-completion/mcookie
> new file mode 100644
> index 0000000..1c01a55
> --- /dev/null
> +++ b/shell-completion/mcookie
> @@ -0,0 +1,23 @@
> +_mcookie_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-f'|'--file')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-f --file -v --verbose -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _mcookie_module mcookie
> diff --git a/shell-completion/namei b/shell-completion/namei
> new file mode 100644
> index 0000000..c44821c
> --- /dev/null
> +++ b/shell-completion/namei
> @@ -0,0 +1,17 @@
> +_namei_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-h --help -V --version -x --mountpoints -m --modes -o --owners -l --long -n --nosymlinks -v --vertical"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	compopt -o filenames
> +	COMPREPLY=( $(compgen -f -- $cur) )
> +	return 0
> +}
> +complete -F _namei_module namei
> diff --git a/shell-completion/rename b/shell-completion/rename
> new file mode 100644
> index 0000000..0fe4cc6
> --- /dev/null
> +++ b/shell-completion/rename
> @@ -0,0 +1,27 @@
> +_rename_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-v --verbose -s --symlink  -h --help -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $COMP_CWORD in
> +		1)
> +			COMPREPLY=( $(compgen -W "expression" -- $cur) )
> +			;;
> +		2)
> +			COMPREPLY=( $(compgen -W "replacement" -- $cur) )
> +			;;
> +		*)
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _rename_module rename
> diff --git a/shell-completion/uuidd b/shell-completion/uuidd
> new file mode 100644
> index 0000000..23c1a49
> --- /dev/null
> +++ b/shell-completion/uuidd
> @@ -0,0 +1,33 @@
> +_uuidd_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-p'|'--pid'|'-s'|'--socket')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -f -- $cur) )
> +			return 0
> +			;;
> +		'-T'|'--timeout')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -W "timeout" -- $cur) )
> +			return 0
> +			;;
> +		'-n'|'--uuids')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -W "number" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-p --pid -s --socket -T --timeout -k --kill -r --random -t --time -n --uuids -P --no-pid -F --no-fork -S --socket-activation -d --debug -q --quiet -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _uuidd_module uuidd
> diff --git a/shell-completion/uuidgen b/shell-completion/uuidgen
> new file mode 100644
> index 0000000..d9edde9
> --- /dev/null
> +++ b/shell-completion/uuidgen
> @@ -0,0 +1,15 @@
> +_uuidgen_module()
> +{
> +	local cur OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	case $cur in
> +		-*)
> +			OPTS="-r --random -t --time -V --version -h --help"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	return 0
> +}
> +complete -F _uuidgen_module uuidgen
> diff --git a/shell-completion/whereis b/shell-completion/whereis
> new file mode 100644
> index 0000000..96e4117
> --- /dev/null
> +++ b/shell-completion/whereis
> @@ -0,0 +1,24 @@
> +_whereis_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-B'|'-M'|'-S')
> +			compopt -o filenames
> +			COMPREPLY=( $(compgen -o dirnames -- ${cur:-"/"}) )
> +			return 0
> +			;;
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-b -B -m -M -s -S -f -u -l"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	COMPREPLY=( $(compgen -W "file" -- $cur) )
> +	return 0
> +}
> +complete -F _whereis_module whereis
> diff --git a/shell-completion/wipefs b/shell-completion/wipefs
> new file mode 100644
> index 0000000..427f47b
> --- /dev/null
> +++ b/shell-completion/wipefs
> @@ -0,0 +1,38 @@
> +_wipefs_module()
> +{
> +	local cur prev OPTS
> +	COMPREPLY=()
> +	cur="${COMP_WORDS[COMP_CWORD]}"
> +	prev="${COMP_WORDS[COMP_CWORD-1]}"
> +	case $prev in
> +		'-o'|'--offset')
> +			COMPREPLY=( $(compgen -W "offset" -- $cur) )
> +			return 0
> +			;;
> +		'-t'|'--types')
> +			local TYPES
> +			TYPES="adfs affs autofs cifs coda coherent cramfs
> +				debugfs devpts efs ext ext2 ext3 ext4 hfs
> +				hfsplus hpfs iso9660 jfs minix msdos
> +				ncpfs nfs nfs4 ntfs proc qnx4 ramfs
> +				reiserfs romfs squashfs smbfs sysv tmpfs
> +				ubifs udf ufs umsdos usbfs vfat xenix xfs
> +				xiafs"
> +			COMPREPLY=( $(compgen -W "$TYPES" -- $cur) )
> +			return 0
> +			;;
> +
> +	esac
> +	case $cur in
> +		-*)
> +			OPTS="-a --all -f --force -h --help -n --no-actn -o --offset -p --parsable -q --quiet -t --types -V --version"
> +			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
> +			return 0
> +			;;
> +	esac
> +	local DEVS
> +	DEVS="$(\ls -d /sys/class/block/* | sed 's|/sys/class/block/|/dev/|g')"
> +	COMPREPLY=( $(compgen -W "$DEVS" -- $cur) )
> +	return 0
> +}
> +complete -F _wipefs_module wipefs
> -- 
> 1.8.2
> 
> --
> To unsubscribe from this list: send the line "unsubscribe util-linux" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2013-03-28  1:42 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-27 22:07 [PATCH 00/10] [pull] bash-completion Sami Kerola
2013-03-27 22:07 ` [PATCH 01/10] bash-completion: add bash completetion configure option Sami Kerola
2013-03-28 11:22   ` Sami Kerola
2013-03-29  9:42     ` Karel Zak
2013-03-27 22:07 ` [PATCH 02/10] bash-completion: disk-utils Sami Kerola
2013-03-28  1:42   ` Dave Reisner
2013-04-01 15:54     ` Sami Kerola
2013-03-28  9:54   ` Karel Zak
2013-04-01 17:00     ` Sami Kerola
2013-03-27 22:07 ` [PATCH 03/10] bash-completion: fdisks Sami Kerola
2013-03-28 10:01   ` Karel Zak
2013-03-27 22:07 ` [PATCH 04/10] bash-completion: login-utils Sami Kerola
2013-03-28  1:42   ` Dave Reisner
2013-04-01 16:05     ` Sami Kerola
2013-03-28 10:05   ` Karel Zak
2013-04-01 16:06     ` Sami Kerola
2013-03-27 22:07 ` [PATCH 05/10] bash-completion: misc-utils Sami Kerola
2013-03-28  1:42   ` Dave Reisner [this message]
2013-04-01 16:52     ` Sami Kerola
2013-03-27 22:07 ` [PATCH 06/10] bash-completion: schedutils Sami Kerola
2013-03-27 22:07 ` [PATCH 07/10] bash-completion: sys-utils Sami Kerola
2013-03-29 16:33   ` Karel Zak
2013-04-01 16:32     ` Sami Kerola
2013-04-05 14:44   ` Karel Zak
2013-03-27 22:07 ` [PATCH 08/10] bash-completion: term-utils Sami Kerola
2013-03-28 10:06   ` Karel Zak
2013-03-27 22:07 ` [PATCH 09/10] bash-completion: text-utils Sami Kerola
2013-03-27 22:07 ` [PATCH 10/10] bash-completion: add completion files to Makefile.am Sami Kerola
2013-03-28  1:42 ` [PATCH 00/10] [pull] bash-completion Dave Reisner
2013-03-28  9:37 ` Karel Zak
2013-03-31 23:49   ` Sami Kerola
2013-04-01 15:44   ` Sami Kerola
2013-04-05 14:11 ` Karel Zak

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130328014241.GY526@rampage \
    --to=d@falconindy.com \
    --cc=kerolasa@iki.fi \
    --cc=util-linux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.