versionArg top-level property

FigArg versionArg
final

Implementation

final FigArg versionArg = FigArg(
  name: 'version',
  suggestions: [
    FigSuggestion(
      name: ['latest', 'current'],
      description: 'Newest official release',
    ),
    FigSuggestion(
      name: ['lts'],
      description: 'Newest Long Term Support official release',
    ),
    FigSuggestion(
      name: ['auto'],
      description:
          'Read version from file: .n-node-version, .node-version, .nvmrc, or package.json',
    ),
    FigSuggestion(
      name: ['engine'],
      description: 'Read version from package.json',
    ),
  ],
  generators: [
    FigGenerator(
      script: ['n', 'lsr', '--all'],
      postProcess: (out, [tokens]) {
        final set = <String>{};
        final versions = out.split('\n').skip(1);
        for (final version in versions) {
          if (version.trim().isEmpty) continue;
          set.add(version);
          final split = version.split('.');
          if (split.length >= 2) set.add('${split[0]}.${split[1]}');
          if (split.isNotEmpty) set.add(split[0]);
        }
        return set
            .map((version) => FigSuggestion(
                  name: [version, 'v$version'],
                  description: 'Node.js $version',
                ))
            .toList();
      },
    ),
  ],
  isOptional: false,
);