summaryrefslogtreecommitdiffstats
path: root/bash-completion/blkid
blob: 74de34284ca2163df14abde8083e919fc4fd7dda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
_blkid_module()
{
	local cur prev OPTS OUTPUT_ALL
	OUTPUT_ALL=''
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-c'|'--cache-file')
			local IFS=$'\n'
			compopt -o filenames
			COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
		'-o'|'--output')
			COMPREPLY=( $(compgen -W "value device export full" -- $cur) )
			return 0
			;;
		'-s'|'--match-tag')
			COMPREPLY=( $(compgen -W "tag" -- $cur) )
			return 0
			;;
		'-t'|'--match-token')
			COMPREPLY=( $(compgen -W "TYPE= LABEL= UUID=" -- $cur) )
			return 0
			;;
		'-L'|'--label')
			COMPREPLY=( $(compgen -W "$(cd /dev/disk/by-label/ 2>/dev/null && echo *)" -- $cur) )
			return 0
			;;
		'-U'|'--uuid')
			COMPREPLY=( $(compgen -W "$(cd /dev/disk/by-uuid/ 2>/dev/null && echo *)" -- $cur) )
			return 0
			;;
		'-S'|'--size')
			COMPREPLY=( $(compgen -W "size" -- $cur) )
			return 0
			;;
		'-O'|'--offset')
			COMPREPLY=( $(compgen -W "offset" -- $cur) )
			return 0
			;;
		'-u'|'--usages')
			OUTPUT_ALL={,no}{filesystem,raid,crypto,other}
			;;
		'-n'|'--match-types')
			OUTPUT_ALL="
				$(awk '{print $NF}' /proc/filesystems)
				$(\ls /lib/modules/$(uname -r)/kernel/fs)
			"
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	if [ -n "$OUTPUT_ALL" ]; then
		local prefix realcur OUTPUT_ALL OUTPUT
		realcur="${cur##*,}"
		prefix="${cur%$realcur}"
		for WORD in $OUTPUT_ALL; do
			if ! [[ $prefix == *"$WORD"* ]]; then
				OUTPUT="$WORD ${OUTPUT:-""}"
			fi
		done
		compopt -o nospace
		COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- "$realcur") )
		return 0
	fi
	case $cur in
		-*)
			OPTS="
				--cache-file
				--no-encoding
				--garbage-collect
				--output
				--list-filesystems
				--match-tag
				--match-token
				--list-one
				--label
				--uuid
				--probe
				--info
				--size
				--offset
				--usages
				--match-types
				--no-part-details
				--help
				--version
			"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	compopt -o bashdefault -o default
	COMPREPLY=( $(compgen -W "$(lsblk -pnro name)" -- $cur) )
	return 0
}
complete -F _blkid_module blkid