util-linux/bash-completion/lsblk
Ville Skyttä 0d5b9b8ab1 bash-completion: Don't offer short options where corresponding long one exists.
Users who know the short options can just hit the short option instead
of tab, and it's not likely that it would be helpful to present a list
of single character options to users who don't know them, doing so
just unnecessarily trashes the list of suggestions.

Signed-off-by: Ville Skyttä <ville.skytta@iki.fi>
2013-04-08 17:06:56 +02:00

68 lines
1.4 KiB
Text

_lsblk_module()
{
local cur prev OPTS
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
case $prev in
'-e'|'--exclude'|'-I'|'--include')
local MAJOR I J
MAJOR=''
for I in /sys/dev/block/*; do
J=${I##*/}
MAJOR="$MAJOR ${J%%:*}"
done
# 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
;;
'-h'|'--help'|'-V'|'--version')
return 0
;;
esac
case $cur in
-*)
OPTS="--all
--bytes
--nodeps
--discard
--exclude
--fs
--help
--include
--ascii
--list
--perms
--noheadings
--output
--pairs
--raw
--inverse
--topology
--scsi
--help
--version"
COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
return 0
;;
esac
local DEVS
DEVS=''; while read dev; do DEVS+="$dev " ; done < <(lsblk -pnro name)
COMPREPLY=( $(compgen -W "$DEVS" -- $cur) )
return 0
}
complete -F _lsblk_module lsblk