]> git.ipfire.org Git - thirdparty/util-linux.git/blob - bash-completion/lsblk
1692dade8b07ded6352538b40daf8276e3facffa
[thirdparty/util-linux.git] / bash-completion / lsblk
1 _lsblk_module()
2 {
3 local cur prev OPTS
4 COMPREPLY=()
5 cur="${COMP_WORDS[COMP_CWORD]}"
6 prev="${COMP_WORDS[COMP_CWORD-1]}"
7
8 LSBLK_COLS_ALL="NAME KNAME MAJ:MIN FSTYPE MOUNTPOINT
9 LABEL UUID PARTTYPE PARTLABEL PARTUUID PARTFLAGS
10 RA RO RM
11 MODEL SIZE STATE OWNER GROUP MODE
12 ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC
13 ROTA SCHED RQ-SIZE TYPE DISC-ALN
14 DISC-GRAN DISC-MAX DISC-ZERO WSAME WWN
15 RAND PKNAME HCTL TRAN REV VENDOR"
16
17 case $prev in
18 '-e'|'--exclude'|'-I'|'--include')
19 local realcur prefix MAJOR_ALL MAJOR I J
20 realcur="${cur##*,}"
21 prefix="${cur%$realcur}"
22 for I in /sys/dev/block/*; do
23 J=${I##*/}
24 MAJOR_ALL="$MAJOR_ALL ${J%%:*}"
25 done
26 for WORD in $MAJOR_ALL; do
27 if ! [[ $prefix == *"$WORD"* ]]; then
28 MAJOR="$WORD $MAJOR"
29 fi
30 done
31 compopt -o nospace
32 COMPREPLY=( $(compgen -P "$prefix" -W "$MAJOR" -S ',' -- $realcur) )
33 return 0
34 ;;
35 '-o'|'--output')
36 local prefix realcur LSBLK_COLS
37 realcur="${cur##*,}"
38 prefix="${cur%$realcur}"
39 for WORD in $LSBLK_COLS_ALL; do
40 if ! [[ $prefix == *"$WORD"* ]]; then
41 LSBLK_COLS="$WORD $LSBLK_COLS"
42 fi
43 done
44 compopt -o nospace
45 COMPREPLY=( $(compgen -P "$prefix" -W "$LSBLK_COLS" -S ',' -- $realcur) )
46 return 0
47 ;;
48 '-x'|'--sort')
49 compopt -o nospace
50 COMPREPLY=( $(compgen -W "$LSBLK_COLS_ALL" -- $cur) )
51 return 0
52 ;;
53 '-h'|'--help'|'-V'|'--version')
54 return 0
55 ;;
56 esac
57 case $cur in
58 -*)
59 OPTS="--all
60 --bytes
61 --nodeps
62 --discard
63 --exclude
64 --fs
65 --help
66 --include
67 --ascii
68 --list
69 --perms
70 --noheadings
71 --output
72 --pairs
73 --raw
74 --inverse
75 --topology
76 --scsi
77 --sort
78 --help
79 --version"
80 COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
81 return 0
82 ;;
83 esac
84 local DEVS
85 COMPREPLY=( $(compgen -W "$($1 -pnro name)" -- $cur) )
86 return 0
87 }
88 complete -F _lsblk_module lsblk