| _lsblk_module() | |
| { | |
| local cur prev OPTS LSBLK_COLS_ALL | |
| 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 HOTPLUG MODEL SERIAL 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 SUBSYSTEMS 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 | |
| --json | |
| --ascii | |
| --list | |
| --perms | |
| --noheadings | |
| --output | |
| --output-all | |
| --paths | |
| --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 |