subcommands top-level property

List<FigSubcommand> subcommands
final

Implementation

final List<FigSubcommand> subcommands = [
  Subcommand(
      name: 'run',
      description: 'Run a command or script',
      options: runOptions,
      args: [Arg(name: 'command', generators: commandGenerator)]),
  Subcommand(name: 'init', description: 'Create a new project', options: [
    ...initOptions,
    ...initCacheOptions
  ], args: [
    Arg(
        name: 'Path',
        template: 'filepaths',
        description: 'The path to use for the project/script',
        defaultValue: '.')
  ]),
  Subcommand(
      name: 'add',
      description: 'Add dependencies to the project',
      args: [
        Arg(name: 'packages', description: 'Packages to add', isVariadic: true)
      ],
      options: [
        ...addOptions,
        ...indexOptions,
        ...resolverOptions,
        ...installerOptions,
        ...buildOptions,
        ...cacheOptions
      ]),
  Subcommand(
      name: 'remove',
      description: 'Remove dependencies from the project',
      args: [
        Arg(
            name: 'dependencies',
            description: 'Dependencies to remove',
            generators: dependenciesGenerator,
            isVariadic: true)
      ],
      options: [
        ...removeOptions,
        ...indexOptions,
        ...resolverOptions,
        ...installerOptions,
        ...buildOptions,
        ...cacheOptions
      ]),
  Subcommand(
      name: 'sync',
      description: 'Update the project\'s environment',
      options: [
        ...syncOptions,
        ...indexOptions,
        ...resolverOptions,
        ...installerOptions,
        ...buildOptions,
        ...cacheOptions
      ]),
  Subcommand(
      name: 'lock',
      description: 'Update the project\'s lockfile',
      options: [
        ...lockOptions,
        ...indexOptions,
        ...resolverOptions,
        ...buildOptions,
        ...lockInstallerOptions,
        ...cacheOptions
      ]),
  Subcommand(
      name: 'export',
      description: 'Export the project\'s lockfile to an alternate format',
      options: [
        ...exportOptions,
        ...indexOptions,
        ...resolverOptions,
        ...buildOptions
      ]),
  Subcommand(
      name: 'tree',
      description: 'Display the project\'s dependency tree',
      options: [
        ...treeOptions,
        ...indexOptions,
        ...resolverOptions,
        ...installerOptions
            .where((option) => option.nameList.contains('--link-mode'))
            .toList(),
        ...pythonOptions,
        ...cacheOptions,
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
      ]),
  Subcommand(
      name: 'tool',
      description: 'Run and install commands provided by Python packages',
      subcommands: toolSubcommands,
      options: [
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--no-python-downloads') ||
                option.nameList.contains('--python-preference'))
            .toList(),
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
      ]),
  Subcommand(
      name: 'python',
      description: 'Manage Python versions and installations',
      subcommands: pythonSubcommands,
      options: [
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--python-preference') ||
                option.nameList.contains('--no-python-downloads'))
            .toList(),
      ]),
  Subcommand(
      name: 'pip',
      description: 'Manage Python packages with a pip-compatible interface',
      subcommands: pipSubcommands,
      options: [
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--python-preference') ||
                option.nameList.contains('--no-python-downloads'))
            .toList(),
      ]),
  Subcommand(
      name: 'venv',
      description: 'Create a virtual environment',
      options: [
        ...pythonOptions,
        ...venvOptions,
        ...indexOptions
            .where((option) =>
                !option.nameList.contains('--index-strategy') &&
                !option.nameList.contains('--keyring-provider'))
            .toList(),
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
      ]),
  Subcommand(
      name: 'build',
      description: 'Build Python packages into source distributions and wheels',
      args: [
        Arg(
            name: 'SOURCE',
            description:
                'The directory from which distributions should be built, or a source distribution archive to build into a wheel')
      ],
      options: [
        ...buildCommandOptions,
        ...pythonOptions,
        ...indexOptions,
        ...resolverOptions,
        ...buildOptions,
        ...installerOptions
            .where((option) => option.nameList.contains('--link-mode'))
            .toList(),
        ...cacheOptions,
      ]),
  Subcommand(
      name: 'publish',
      description: 'Upload distributions to an index',
      args: [
        Arg(
            name: 'FILES',
            description: 'Paths to the files to upload, [default: dist/*]',
            isVariadic: true)
      ],
      options: [
        ...publishOptions,
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--python-preference') ||
                option.nameList.contains('--no-python-downloads'))
            .toList(),
      ]),
  Subcommand(
      name: 'cache',
      description: 'Manage uv\'s cache',
      subcommands: cacheSubcommands,
      options: [
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--python-preference') ||
                option.nameList.contains('--no-python-downloads'))
            .toList(),
      ]),
  Subcommand(
      name: 'self',
      description: 'Manage the uv executable',
      subcommands: selfSubcommands,
      options: [
        ...cacheOptions
            .where((option) =>
                option.nameList.contains('--cache-dir') ||
                option.nameList.contains('--no-cache'))
            .toList(),
        ...pythonOptions
            .where((option) =>
                option.nameList.contains('--python-preference') ||
                option.nameList.contains('--no-python-downloads'))
            .toList(),
      ]),
  Subcommand(name: 'version', description: 'Display uv\'s version', options: [
    Option(
        name: '--output-format',
        description: 'The output format to use',
        args: [
          Arg(name: 'OUTPUT_FORMAT', suggestions: [
            FigSuggestion(name: 'text'),
            FigSuggestion(name: 'json')
          ])
        ]),
    ...cacheOptions
        .where((option) =>
            option.nameList.contains('--cache-dir') ||
            option.nameList.contains('--no-cache'))
        .toList(),
    ...pythonOptions
        .where((option) =>
            option.nameList.contains('--python-preference') ||
            option.nameList.contains('--no-python-downloads'))
        .toList()
  ]),
  Subcommand(
      name: 'help',
      description: 'Display documentation for a command',
      options: [
        Option(
            name: '--no-pager', description: 'Disable pager when printing help')
      ])
];