composerSpec top-level property

FigSpec composerSpec
final

Implementation

final FigSpec composerSpec = FigSpec(
  name: 'composer',
  description: 'Composer Command',
  icon: _composerIcon,
  subcommands: [
    FigSubcommand(
      name: 'require',
      description:
          'Adds required packages to your composer.json and installs them',
      icon: _composerIcon,
      args: [
        FigArg(
          name: 'packages',
          description: 'Package name (e.g. vendor/package)',
          isVariadic: true,
          generators: [_searchGenerator],
        ),
      ],
      options: [
        FigOption(name: '--dev', description: 'Add to require-dev'),
        FigOption(
            name: '--dry-run',
            description:
                'Simulate the command without actually modifying files'),
        FigOption(
            name: '--prefer-source',
            description: 'Install packages from source when available'),
        FigOption(
            name: '--prefer-dist',
            description: 'Install packages from dist when available'),
        FigOption(
            name: '--fixed',
            description: 'Write fixed version to the composer.json'),
        FigOption(
            name: '--no-update',
            description: 'Disables the automatic update of the dependencies'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'install',
      description:
          'Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json',
      icon: _composerIcon,
      options: [
        FigOption(
            name: '--prefer-source',
            description: 'Install packages from source when available'),
        FigOption(
            name: '--prefer-dist',
            description: 'Install packages from dist when available'),
        FigOption(
            name: '--dry-run',
            description:
                'Simulate the command without actually modifying files'),
        FigOption(
            name: '--dev',
            description:
                'Enables installation of require-dev packages (enabled by default)'),
        FigOption(
            name: '--no-dev',
            description: 'Disables installation of require-dev packages'),
        FigOption(
            name: '--no-autoloader',
            description: 'Skips autoloader generation'),
        FigOption(
            name: '--no-scripts',
            description:
                'Skips the execution of all scripts defined in composer.json'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'update',
      description:
          'Updates your dependencies to the latest version according to composer.json, and updates the composer.lock file',
      icon: _composerIcon,
      args: [
        FigArg(
          name: 'packages',
          description: 'Packages to update',
          isVariadic: true,
          isOptional: true,
          generators: [_packagesGenerator],
        ),
      ],
      options: [
        FigOption(
            name: '--prefer-source',
            description: 'Install packages from source when available'),
        FigOption(
            name: '--prefer-dist',
            description: 'Install packages from dist when available'),
        FigOption(
            name: '--dry-run',
            description:
                'Simulate the command without actually modifying files'),
        FigOption(
            name: '--no-dev',
            description: 'Disables installation of require-dev packages'),
        FigOption(
            name: '--lock',
            description:
                'Only updates the lock file hash to suppress warning about the lock file being out of date'),
        FigOption(
            name: '--with-dependencies',
            description:
                'Add also dependencies of whitelisted packages to the whitelist'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'remove',
      description: 'Removes a package from the require or require-dev',
      icon: _composerIcon,
      args: [
        FigArg(
          name: 'packages',
          description: 'Packages to remove',
          isVariadic: true,
          generators: [_packagesGenerator],
        ),
      ],
      options: [
        FigOption(
            name: '--dev',
            description: 'Removes a package from the require-dev section'),
        FigOption(
            name: '--dry-run',
            description:
                'Simulate the command without actually modifying files'),
        FigOption(
            name: '--no-update',
            description: 'Disables the automatic update of the dependencies'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'init',
      description: 'Creates a basic composer.json file in current directory',
      icon: _composerIcon,
      options: [
        FigOption(
            name: '--name',
            description: 'Name of the package',
            args: [FigArg(name: 'name')]),
        FigOption(
            name: '--description',
            description: 'Description of package',
            args: [FigArg(name: 'description')]),
        FigOption(
            name: '--author',
            description: 'Author name of package',
            args: [FigArg(name: 'author')]),
        FigOption(name: '--type', description: 'Type of package', args: [
          FigArg(name: 'type', suggestions: const [
            FigSuggestion(name: 'library'),
            FigSuggestion(name: 'project'),
            FigSuggestion(name: 'metapackage'),
            FigSuggestion(name: 'composer-plugin')
          ])
        ]),
        FigOption(
            name: '--homepage',
            description: 'Homepage of package',
            args: [FigArg(name: 'homepage')]),
        FigOption(
            name: '--require',
            description: 'Package to require with a version constraint',
            args: [FigArg(name: 'package')]),
        FigOption(
            name: '--require-dev',
            description:
                'Package to require for development with a version constraint',
            args: [FigArg(name: 'package')]),
        FigOption(
            name: '--license',
            description: 'License of package',
            args: [FigArg(name: 'license')]),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'create-project',
      description: 'Create new project from a package into given directory',
      icon: _composerIcon,
      args: [
        FigArg(
            name: 'package',
            description: 'Package name',
            generators: [_searchGenerator]),
        FigArg(
            name: 'directory',
            description: 'Directory to create project in',
            isOptional: true,
            template: 'folders'),
        FigArg(name: 'version', description: 'Version', isOptional: true),
      ],
      options: [
        FigOption(
            name: '--stability',
            description: 'Minimum stability of package',
            args: [
              FigArg(name: 'stability', suggestions: const [
                FigSuggestion(name: 'stable'),
                FigSuggestion(name: 'RC'),
                FigSuggestion(name: 'beta'),
                FigSuggestion(name: 'alpha'),
                FigSuggestion(name: 'dev')
              ])
            ]),
        FigOption(
            name: '--prefer-source',
            description: 'Install packages from source when available'),
        FigOption(
            name: '--prefer-dist',
            description: 'Install packages from dist when available'),
        FigOption(
            name: '--repository',
            description: 'Add custom repositories',
            args: [FigArg(name: 'url')]),
        FigOption(
            name: '--add-repository',
            description: 'Add the repository to composer.json'),
        FigOption(
            name: '--no-install', description: 'Do not run install command'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'dump-autoload',
      description: 'Dumps the autoloader',
      icon: _composerIcon,
      options: [
        FigOption(
            name: '--optimize',
            description:
                'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'),
        FigOption(
            name: '--classmap-authoritative',
            description:
                'Autoload classes from the classmap only. Implicitly enables --optimize.'),
        FigOption(
            name: '--apcu',
            description: 'Use APCu to cache found/not-found classes.'),
        FigOption(
            name: '--no-dev', description: 'Disables autoload-dev rules.'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'validate',
      description: 'Validates a composer.json and composer.lock',
      icon: _composerIcon,
      options: [
        FigOption(
            name: '--no-check-all',
            description:
                'Do not validate requires for stricter constraints than what is present in lock file'),
        FigOption(
            name: '--no-check-lock',
            description: 'Do not check if lock file is up to date'),
        FigOption(
            name: '--no-check-publish',
            description: 'Do not check if package is ready to be published'),
        FigOption(
            name: '--with-dependencies',
            description:
                'Also validate the composer.json of all installed dependencies'),
        FigOption(
            name: '--strict',
            description:
                'Return a non-zero exit code for warnings as well as errors'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'show',
      description: 'Shows information about packages',
      icon: _composerIcon,
      args: [
        FigArg(
            name: 'package',
            description: 'Package to inspect',
            isOptional: true,
            generators: [_packagesGenerator]),
        FigArg(
            name: 'version',
            description: 'Version to inspect',
            isOptional: true),
      ],
      options: [
        FigOption(
            name: '--all',
            description: 'List all packages available in all repositories'),
        FigOption(
            name: '--installed',
            description: 'List installed packages (default)'),
        FigOption(
            name: '--platform',
            description: 'List platform packages (php & extensions)'),
        FigOption(name: '--available', description: 'List available packages'),
        FigOption(
            name: '--self',
            description:
                'Show the version information for the composer command itself'),
        FigOption(name: '--name-only', description: 'List package names only'),
        FigOption(name: '--path', description: 'Show package paths'),
        FigOption(
            name: '--tree', description: 'List the dependencies as a tree'),
        FigOption(name: '--latest', description: 'Show the latest version'),
        FigOption(
            name: '--outdated',
            description:
                'Show the latest version but only for packages that are outdated'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'run-script',
      description: 'Runs the scripts defined in composer.json',
      icon: _composerIcon,
      args: [
        FigArg(name: 'script', description: 'Script name'),
        FigArg(
            name: 'args',
            description: 'Arguments to pass to the script',
            isVariadic: true,
            isOptional: true),
      ],
      options: [
        FigOption(
            name: '--timeout',
            description: 'Sets script timeout in seconds',
            args: [FigArg(name: 'seconds')]),
        FigOption(name: '--list', description: 'List defined scripts'),
        ..._commonOptions,
      ],
    ),
    FigSubcommand(
      name: 'config',
      description: 'Set config options',
      icon: _composerIcon,
      args: [
        FigArg(name: 'setting-key', description: 'Setting key'),
        FigArg(
            name: 'setting-value',
            description: 'Setting value',
            isVariadic: true,
            isOptional: true),
      ],
      options: [
        FigOption(
            name: '--global',
            description: 'Apply command to the global config file'),
        FigOption(name: '--editor', description: 'Open editor'),
        FigOption(
            name: '--auth',
            description: 'LLMs, Gitlab, Bitbucket, etc. authentication'),
        FigOption(name: '--unset', description: 'Unset the given setting-key'),
        FigOption(name: '--list', description: 'List configuration settings'),
        FigOption(
            name: '--file',
            description: 'Operate on a specific config file',
            args: [FigArg(name: 'file', template: 'filepaths')]),
        FigOption(
            name: '--absolute',
            description: 'Returns absolute paths when fetching config values'),
        ..._commonOptions,
      ],
    ),
  ],
  options: _commonOptions,
);