ReleaseCommand constructor

ReleaseCommand(
  1. TerminalOutput _output, {
  2. ReleaseManager? manager,
  3. ReleaseMetadataManager? metadataManager,
  4. ReleaseRecoveryManager? recoveryManager,
  5. GitClient? gitClient,
})

Implementation

ReleaseCommand(
  this._output, {
  ReleaseManager? manager,
  ReleaseMetadataManager? metadataManager,
  ReleaseRecoveryManager? recoveryManager,
  GitClient? gitClient,
})  : _manager = manager ?? ReleaseManager(output: _output),
      _metadataManager = metadataManager ?? const ReleaseMetadataManager(),
      _recoveryManager = recoveryManager ??
          ReleaseRecoveryManager(
            output: _output,
            gitClient: gitClient ?? const GitClient(),
          ),
      _argParser = ArgParser() {
  _argParser.addOption(
    'mode',
    abbr: 'm',
    help: 'The release mode to execute (normal, shorebird).',
    defaultsTo: 'normal',
  );
  _argParser.addOption(
    'path',
    abbr: 'p',
    help: 'Target Flutter project directory path.',
    defaultsTo: '.',
  );
  _argParser.addFlag(
    'patch',
    help: 'Increment patch version component (e.g. 1.8.2 -> 1.8.3).',
    negatable: false,
  );
  _argParser.addFlag(
    'minor',
    help: 'Increment minor version component (e.g. 1.8.2 -> 1.9.0).',
    negatable: false,
  );
  _argParser.addFlag(
    'major',
    help: 'Increment major version component (e.g. 1.8.2 -> 2.0.0).',
    negatable: false,
  );
  _argParser.addOption(
    'version',
    help: 'Explicit target version name (e.g. 2.0.0).',
  );
  _argParser.addOption(
    'build-number',
    help: 'Explicit target build number (e.g. 43).',
  );
  _argParser.addOption(
    'platform',
    help: 'Target build platform (android, ios, all).',
    defaultsTo: 'android',
    allowed: ['android', 'ios', 'all'],
  );
  _argParser.addOption(
    'format',
    help: 'Artifact format (appbundle/aab, apk, ipa).',
    allowed: ['appbundle', 'aab', 'apk', 'ipa'],
  );
  _argParser.addFlag(
    'deploy',
    help:
        'Automatically deploy built artifacts to app stores via Fastlane after build.',
    negatable: false,
  );
  _argParser.addOption(
    'lane',
    help: 'Fastlane lane name for deployment (e.g. internal, testflight).',
  );
  _argParser.addFlag(
    'ci',
    help: 'Indicate execution in CI environment mode.',
    negatable: false,
  );
  _argParser.addFlag(
    'tag',
    help: 'Automatically create a Git release tag (e.g. v1.8.3).',
    negatable: false,
  );
  _argParser.addOption(
    'tag-prefix',
    help: 'Prefix for created Git release tag.',
    defaultsTo: 'v',
  );
  _argParser.addOption(
    'environment',
    abbr: 'e',
    help: 'Target environment (e.g. production, staging, development).',
  );
  _argParser.addOption(
    'env',
    help: 'Alias for --environment.',
  );
  _argParser.addOption(
    'flavor',
    help: 'Target build flavor (e.g. production).',
  );
  _argParser.addMultiOption(
    'dart-define',
    help: 'Additional key=value dart-defines to pass during compilation.',
  );
  _argParser.addFlag(
    'allow-dirty',
    help: 'Allow uncommitted git working tree changes during release.',
    negatable: false,
  );
  _argParser.addFlag(
    'dry-run',
    help:
        'Preview release execution plan without performing destructive operations.',
    negatable: false,
  );
}