kubectxSpec top-level property
Implementation
final FigSpec kubectxSpec = FigSpec(
name: 'kubectx',
description: 'Switch between Kubernetes-contexts',
additionalSuggestions: [
FigSuggestion(
name: '-',
priority: 85,
description: 'Switch to previous context',
icon: 'fig://icon?type=asterisk',
),
],
parserDirectives: ParserDirectives(
flagsArePosixNoncompliant: true,
),
options: [
FigOption(
name: ['--help', '-h'],
description: 'Show help for kubectx',
),
FigOption(
name: ['--current', '-c'],
description: 'Show current context',
),
FigOption(
name: ['--unset', '-u'],
description: 'Unset the current context',
),
FigOption(
name: '-d',
description: 'Delete context',
isDangerous: true,
args: [
FigArg(
name: 'context',
isVariadic: true,
generators: [
FigGenerator(
script: ['kubectx'],
postProcess: (String out, [List<String>? tokens]) {
final contexts = out
.split('\n')
.map(
(item) => FigSuggestion(
name: item,
priority: 95,
icon: 'fig://icon?type=kubernetes',
),
)
.toList();
return [
FigSuggestion(
name: '.',
description: 'Delete current context',
priority: 90,
icon: 'fig://icon?type=asterisk',
),
...contexts,
];
},
),
],
),
],
),
],
args: [
FigArg(
name: 'context',
generators: [
FigGenerator(
script: ['bash', '-c', 'kubectx | grep -v \$(kubectx -c)'],
postProcess: (String out, [List<String>? tokens]) {
return out
.split('\n')
.map(
(item) => FigSuggestion(
name: item,
priority: 90,
icon: 'fig://icon?type=kubernetes',
),
)
.toList();
},
),
FigGenerator(
script: ['kubectx', '-c'],
postProcess: (String out, [List<String>? tokens]) {
if (out.isEmpty) return [];
return [
FigSuggestion(
name: out,
priority: 100,
icon: '⭐️',
),
];
},
),
],
isOptional: true,
),
],
);