kubectxSpec top-level property

FigSpec kubectxSpec
final

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,
    ),
  ],
);