pnpmSpec top-level property

FigSpec pnpmSpec
final

Completion spec for 'pnpm' CLI

Implementation

final FigSpec pnpmSpec = FigSpec(
  name: 'pnpm',
  description: 'Fast, disk space efficient package manager',
  args: [
    Arg(
      name: 'Scripts',
      filterStrategy: FilterStrategy.fuzzy,
      generators: npmScriptsGenerator,
      isVariadic: true,
    )
  ],
  filterStrategy: FilterStrategy.fuzzy,
  subcommands: subcommands,
  options: COMMON_OPTIONS,
  generateSpec: (List<String> tokens, dynamic executeShellCommand) async {
    final gen = yarnDependenciesGenerator;
    final postProcess = gen.postProcess;
    if (postProcess == null) return null;
    final script = gen.script;
    if (script is! List || script.isEmpty) return null;
    final scriptList = script;
    try {
      final result = await executeShellCommand(
        command: scriptList[0].toString(),
        args: scriptList.length > 1
            ? scriptList.sublist(1).map((e) => e.toString()).toList()
            : <String>[],
      );
      final suggestions = postProcess(result.stdout, tokens);
      final names = suggestions.map((e) => e.name).whereType<String>().toList();
      final subcommandsList = names
          .where((name) => nodeClis.contains(name))
          .map((name) => Subcommand(
                name: name,
                loadSpec: name,
                icon: 'fig://icon?type=package',
              ))
          .toList();
      return FigSpec(
        name: 'pnpm',
        subcommands: subcommandsList,
      );
    } catch (_) {
      return null;
    }
  },
);