| _lsblk_module() | |
| { | |
| local cur prev OPTS | |
| COMPREPLY=() | |
| cur="${COMP_WORDS[COMP_CWORD]}" | |
| prev="${COMP_WORDS[COMP_CWORD-1]}" | |
| LSBLK_COLS_ALL="NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT | |
| LABEL UUID PARTTYPE PARTLABEL PARTUUID PARTFLAGS | |
| 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" | |
| case $prev in | |
| '-e'|'--exclude'|'-I'|'--include') | |
| local realcur prefix MAJOR_ALL MAJOR I J | |
| realcur="${cur##*,}" | |
| prefix="${cur%$realcur}" | |
| for I in /sys/dev/block/*; do | |
| J=${I##*/} | |
| MAJOR_ALL="$MAJOR_ALL ${J%%:*}" | |
| done | |
| for WORD in $MAJOR_ALL; do | |
| if ! [[ $prefix == *"$WORD"* ]]; then | |
| MAJOR="$WORD $MAJOR" | |
| fi | |
| done | |
| compopt -o nospace | |
| COMPREPLY=( $(compgen -P "$prefix" -W "$MAJOR" -S ',' -- $realcur) ) | |
| return 0 | |
| ;; | |
| '-o'|'--output') | |
| local prefix realcur LSBLK_COLS | |
| realcur="${cur##*,}" | |
| prefix="${cur%$realcur}" | |
| for WORD in $LSBLK_COLS_ALL; do | |
| if ! [[ $prefix == *"$WORD"* ]]; then | |
| LSBLK_COLS="$WORD $LSBLK_COLS" | |
| fi | |
| done | |
| compopt -o nospace | |
| COMPREPLY=( $(compgen -P "$prefix" -W "$LSBLK_COLS" -S ',' -- $realcur) ) | |
| return 0 | |
| ;; | |
| '-x'|'--sort') | |
| compopt -o nospace | |
| COMPREPLY=( $(compgen -W "$LSBLK_COLS_ALL" -- $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 | |
| --sort | |
| --help | |
| --version" | |
| COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) ) | |
| return 0 | |
| ;; | |
| esac | |
| COMPREPLY=( $(compgen -W "$($1 -pnro name)" -- $cur) ) | |
| return 0 | |
| } | |
| complete -F _lsblk_module lsblk |