-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
/
Copy pathkubectx.ts
88 lines (87 loc) · 2.03 KB
/
kubectx.ts
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
const completionSpec: Fig.Spec = {
name: "kubectx",
description: "Switch between Kubernetes-contexts",
additionalSuggestions: [
{
name: "-",
priority: 85,
description: "Switch to previous context",
icon: "fig://icon?type=asterisk",
},
],
parserDirectives: {
flagsArePosixNoncompliant: true,
},
options: [
{
name: ["--help", "-h"],
description: "Show help for kubectx",
},
{
name: ["--current", "-c"],
description: "Show current context",
},
{
name: ["--unset", "-u"],
description: "Unset the current context",
},
{
name: "-d",
description: "Delete context",
isDangerous: true,
args: {
name: "context",
isVariadic: true,
generators: {
script: ["kubectx"],
postProcess: (out) => {
const contexts = out.split("\n").map((item) => ({
name: item,
priority: 95,
icon: "fig://icon?type=kubernetes",
}));
return [
{
name: ".",
description: "Delete current context",
priority: 90,
icon: "fig://icon?type=asterisk",
},
...contexts,
] as Fig.Suggestion[];
},
},
},
},
],
args: {
name: "context",
generators: [
{
script: ["bash", "-c", "kubectx | grep -v $(kubectx -c)"],
postProcess: (out) =>
out.split("\n").map((item) => ({
name: item,
priority: 90,
icon: "fig://icon?type=kubernetes",
})) as Fig.Suggestion[],
},
{
script: ["kubectx", "-c"],
postProcess: (out) => {
return !out
? []
: [
{
name: out,
priority: 100,
icon: "⭐️",
},
];
},
},
],
isOptional: true,
},
};
export default completionSpec;