Various commands such as blkid, cfdisk, fdisk, delpart, and so on listed only partitions and missed for example disks and volume groups. The right thing to do is to list all block devices in all for all commands performing operations with them. This might occasionally list unexpected devices that I think is lesser bad than missing some. Addresses: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=764488 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
64 lines
1.4 KiB
Text
64 lines
1.4 KiB
Text
_blkid_module()
|
|
{
|
|
local cur prev OPTS
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD-1]}"
|
|
case $prev in
|
|
'-c')
|
|
local IFS=$'\n'
|
|
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 "$(cd /dev/disk/by-label/ 2>/dev/null && echo *)" -- $cur) )
|
|
return 0
|
|
;;
|
|
'-U')
|
|
COMPREPLY=( $(compgen -W "$(cd /dev/disk/by-uuid/ 2>/dev/null && echo *)" -- $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
|
|
;;
|
|
'-h'|'-V')
|
|
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
|
|
COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) )
|
|
return 0
|
|
}
|
|
complete -F _blkid_module blkid
|