fvmSpec top-level property

FigSpec fvmSpec
final

Implementation

final FigSpec fvmSpec = FigSpec(
  name: 'fvm',
  description:
      'Flutter Version Management: A cli to manage Flutter SDK versions',
  options: [
    ...globalOptions,
    FigOption(
      name: ['--verbose'],
      description: 'Print verbose output',
    ),
    FigOption(
      name: ['--version'],
      description: 'Current FVM version',
    ),
  ],
  subcommands: [
    FigSubcommand(
      name: 'config',
      description: 'Set configuration for FVM',
      options: [
        ...globalOptions,
        FigOption(
          name: ['-c', '--cache-path'],
          description:
              'Set the path which FVM will cache the version. Priority over FVM_HOME',
          args: [
            FigArg(
              name: 'path',
              description: 'Path to the Flutter versions cache',
              template: 'filepaths',
            ),
          ],
        ),
        FigOption(
          name: ['-s', '--skip-setup', '--no-skip-setup'],
          description: 'Skip setup after a version install',
        ),
        FigOption(
          name: ['-g', '--git-cache', '--no-git-cache'],
          description:
              'ADVANCED: Will cache a local version of Flutter repo for faster version install',
        ),
      ],
    ),
    FigSubcommand(
      name: 'dart',
      description: 'Proxies Dart commands',
    ),
    FigSubcommand(
      name: 'doctor',
      description:
          'Shows information about environment, and project configuration',
    ),
    FigSubcommand(
      name: 'flavor',
      description: 'Switches between different project flavors',
      args: [
        FigArg(
          name: 'flavor-name',
          description: 'The flavor to switch to',
        ),
      ],
    ),
    FigSubcommand(
      name: 'flutter',
      description: 'Proxies Flutter commands',
      loadSpec: 'flutter',
    ),
    FigSubcommand(
      name: 'global',
      description: 'Sets Flutter SDK version as global',
      args: [
        FigArg(
          name: 'version',
          description: 'Flutter SDK to set for global flutter command',
        ),
      ],
    ),
    FigSubcommand(
      name: 'install',
      description: 'Installs Flutter SDK version',
      args: [
        FigArg(
          name: 'version',
          suggestions: [
            FigSuggestion(
              name: 'stable',
              description: 'Latest stable release of Flutter',
              priority: 100,
            ),
            FigSuggestion(
              name: 'beta',
              description: 'Latest beta release of Flutter',
              priority: 99,
            ),
            FigSuggestion(
              name: 'dev',
              description: 'Latest dev release of Flutter (master)',
              priority: 98,
            ),
          ],
          generators: [
            FigGenerator(
              script: ['fvm', 'releases'],
              postProcess: (String out, [List<String>? tokens]) {
                final matches = semverRegex.allMatches(out);
                final matchesSet =
                    matches.map((m) => m.group(0)!).toSet().toList();
                return matchesSet.reversed
                    .map((match) => FigSuggestion(name: match))
                    .toList();
              },
            ),
          ],
        ),
      ],
      options: [
        ...globalOptions,
        FigOption(
          name: ['-s', '--skip-setup'],
          description: 'Skips Flutter setup after install',
        ),
      ],
    ),
    FigSubcommand(
      name: 'list',
      description: 'Lists installed Flutter SDK versions',
      options: globalOptions,
    ),
    FigSubcommand(
      name: 'releases',
      description: 'View all Flutter SDK releases available for install',
      options: globalOptions,
    ),
    FigSubcommand(
      name: 'remove',
      description: 'Removes Flutter SDK version',
      args: [
        FigArg(
          name: 'version',
          description: 'The installed Flutter version to remove',
        ),
      ],
      options: [
        ...globalOptions,
        FigOption(
          name: ['--force'],
          description: 'Skips version global check',
        ),
      ],
    ),
    FigSubcommand(
      name: 'spawn',
      description: 'Spawn a Flutter SDK version command',
      args: [
        FigArg(
          name: 'version',
          description: 'The Flutter version from which to spawn a command',
        ),
      ],
    ),
    FigSubcommand(
      name: 'use',
      description: 'Sets a Flutter SDK version to be used in a project',
      args: [
        FigArg(
          name: 'version',
          description: 'The Flutter SDK version to use',
        ),
      ],
      options: [
        ...globalOptions,
        FigOption(
          name: ['-f', '--force'],
          description: 'Skips command guards that does Flutter project checks',
        ),
        FigOption(
          name: ['-p', '--pin'],
          description:
              'If version provided is a channel. Will pin the latest release of the channel',
        ),
        FigOption(
          name: ['--flavor'],
          description: 'Sets version for a project flavor',
        ),
      ],
    ),
  ],
);