-
Notifications
You must be signed in to change notification settings - Fork 103
/
kubie.fish
60 lines (45 loc) · 2.36 KB
/
kubie.fish
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
set -l commands ctx edit edit-config exec help info lint ns update
complete -c kubie --no-files
complete -c kubie \
--condition "not __fish_seen_subcommand_from $commands" \
--arguments "$commands"
set -l cmd __fish_seen_subcommand_from
complete -c kubie -n "not $cmd exec; or not __kubie_got_two_args" -l help -s h
complete -c kubie -n "not $cmd $commands" -l version -s V
complete -c kubie -n "$cmd help" -a "$commands"
# FIXME: This should take --kubeconfig into account
complete -c kubie -n "$cmd ctx delete edit exec; and __kubie_at_arg 1" -d 'context' \
-a '(kubie ctx 2> /dev/null)'
complete -c kubie -n "$cmd ctx ns" -l recursive -s r -d 'spawn a new recursive shell'
complete -c kubie -n "$cmd ctx; and __kubie_at_arg 1" -a '-' -d 'switch back'
complete -c kubie -n "$cmd ctx" -l kubeconfig -s f -r -d 'load contexts from file'
complete -c kubie -n "$cmd ctx" -l namespace -s n -d 'namespace' \
-xa '(kubie exec -e (__kubie_get_first_arg) default -- kubie ns 2>/dev/null)'
complete -c kubie -n "$cmd exec; and __kubie_at_arg 1" -a '"*"' -d 'exec in all contexts'
complete -c kubie -n "$cmd exec; and not __kubie_got_two_args" -l exit-early -e
complete -c kubie -n "$cmd exec; and not __kubie_got_two_args" -l context-headers \
-xa "Auto Always Never" -d 'print context?'
complete -c kubie -n "$cmd exec; and __kubie_at_arg 2" -d 'namespace' \
-a '(kubie exec -e (__kubie_get_first_arg) default -- kubie ns 2>/dev/null)'
complete -c kubie -n "$cmd exec; and __kubie_got_two_args" \
-a '(__fish_complete_subcommand --commandline (__kubie_positionals)[4..-1])'
complete -c kubie -n "$cmd info" -a "ctx depth help ns"
complete -c kubie -n "$cmd ns" -l unset -s u
complete -c kubie -n "$cmd ns" -d 'namespace' -a '(kubie ns 2>/dev/null)'
complete -c kubie -n "$cmd ns" -a '-' -d 'switch back'
# Strip the cmdline from options and flags, used for ctx and exec completions
function __kubie_positionals
set -l cmd (commandline -poc)[2..-1] (commandline -ct)
argparse r/recursive f/kubeconfig= n/namespace= e/exit-early c-context-headers= -- $cmd 2>&1
for x in $argv; echo $x; end
end
function __kubie_get_first_arg
# 2 because first elem is subcmd name
echo (__kubie_positionals)[2]
end
function __kubie_at_arg
test (count (__kubie_positionals)) = (math $argv[1] + 1)
end
function __kubie_got_two_args
test (count (__kubie_positionals)) -ge 4
end