summaryrefslogtreecommitdiffstats
path: root/bash-completion/lslogins
blob: 93c9773b299d8f0e0fb672d45f0dbde8c96bb408 (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
_lslogins_module()
{
	local cur prev OPTS LSLOGINS_COLS_ALL
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	LSLOGINS_COLS_ALL="
		USER UID GECOS HOMEDIR SHELL NOLOGIN PWD-LOCK PWD-EMPTY
		PWD-DENY GROUP GID SUPP-GROUPS SUPP-GIDS LAST-LOGIN LAST-TTY
		LAST-HOSTNAME FAILED-LOGIN FAILED-TTY HUSHED PWD-WARN
		PWD-CHANGE PWD-MIN PWD-MAX PWD-EXPIR CONTEXT PROC
	"
	case $prev in
		'-g'|'--groups')
			COMPREPLY=( $(compgen -W "$(getent group | awk -F: '{print $1}')" -- $cur) )
			return 0
			;;
		'-l'|'--logins')
			COMPREPLY=( $(compgen -W "$(getent passwd | awk -F: '{print $1}')" -- $cur) )
			return 0
			;;
		'--time-format')
			COMPREPLY=( $(compgen -W "short full iso" -- $cur) )
			return 0
			;;
		'--wtmp-file'|'--btmp-file'|'--lastlog')
			local IFS=$'\n'
			compopt -o filenames
			COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
		'-o'|'--output')
			local prefix realcur LSLOGINS_COLS
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			for WORD in $LSLOGINS_COLS_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					LSLOGINS_COLS="$WORD ${LSLOGINS_COLS:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$LSLOGINS_COLS" -S ',' -- $realcur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	COMPREPLY=( $(compgen -W "
			--acc-expiration
			--colon-separate
			--export
			--failed
			--supp-groups
			--groups
			--last
			--logins
			--newline
			--noheadings
			--notruncate
			--output
			--output-all
			--pwd
			--raw
			--system-accs
			--time-format
			--user-accs
			--context
			--print0
			--wtmp-file
			--btmp-file
			--lastlog
			--help
			--version
		" -- $cur) )
	return 0
}
complete -F _lslogins_module lslogins