summaryrefslogtreecommitdiff
path: root/provides/zsh/completions/_envstore
blob: 700fc7ada0d7bdc73880ccba506ed5ae5f2bbceb (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
#compdef envstore
## vim:ft=zsh
## completion for envstore release-3
## Daniel Friesel <derf@derf.homelinux.org>
## https://derf.homelinux.org/~derf/dotfiles/completion/_envstore
## see also: http://git.cloudconnected.org/?p=envstore.git;a=summary

local arguments_action arguments_action_nofile
local arguments_save arguments_rm arguments_eval

arguments_action=(
	'1:action:(clear eval rm save show)'
)
arguments_action_nofile=(
	'1:action:(save)'
)

# envstare can't handle arrays, so only complete scalars and integers.
# Also, don't complete parameters marked 'special', since they're usually
# relative to the current shell
arguments_save=(
	'2:parameter:_parameters -g "(scalar|integer)*export"'
)
arguments_rm=(
	'2:parameter:($(envstore eval -e | cut -d " " -f 2 | cut -d "=" -f 1))'
)
arguments_eval=(
	'2::option:(-e)'
)

if [[ $CURRENT -ge 3 ]] {
	case ${words[2]} in 
		eval)  _arguments -s $arguments_eval ;;
		rm)    _arguments -s $arguments_rm ;;
		save)  _arguments -s $arguments_save ;;
	esac
} elif [[ -r /tmp/envstore-$UID ]] {
	_arguments -s $arguments_action
} else {
	_arguments -s $arguments_action_nofile
}