ReleaseManagerRunner constructor

ReleaseManagerRunner({
  1. required ReleaseManagerLogger logger,
  2. required ProcessService processService,
})

Implementation

ReleaseManagerRunner({
  required ReleaseManagerLogger logger,
  required ProcessService processService,
})  : super(
        'flutter_build_manager',
        'A production-ready open-source Dart CLI package that manages Flutter releases.',
      ) {
  argParser
    ..addFlag(
      'version',
      abbr: 'v',
      negatable: false,
      help: 'Print the current version.',
    )
    ..addFlag(
      'verbose',
      help: 'Enable verbose logging.',
      negatable: false,
    )
    ..addOption(
      'env',
      help: 'Manually specify the environment (e.g., DEV, UAT, PROD).',
    )
    ..addOption(
      'flavor',
      help: 'Manually specify the Flutter flavor.',
    )
    ..addMultiOption(
      'dart-define',
      help: 'Pass dart defines (e.g., --dart-define=ENV=PROD).',
    );

  final projectService = ProjectService();
  final versionService = VersionService(logger: logger);
  final environmentService = EnvironmentService(logger: logger);
  final buildCounterService = BuildCounterService();
  final filenameTemplateService = FilenameTemplateService();

  // New services
  final flutterSdkService = FlutterSdkService(processService: processService);
  final buildService = BuildService(
    processService: processService,
    flutterSdkService: flutterSdkService,
  );
  final artifactLocatorService = ArtifactLocatorService();
  final artifactRenameService = ArtifactRenameService();
  final releaseDirectoryService = ReleaseDirectoryService();
  final metadataService = MetadataService();
  final checksumService = ChecksumService();
  final fileLogger = LoggerService();

  final pipelineService = ReleasePipelineService(
    uiLogger: logger,
    projectService: projectService,
    versionService: versionService,
    environmentService: environmentService,
    buildCounterService: buildCounterService,
    filenameTemplateService: filenameTemplateService,
    buildService: buildService,
    artifactLocatorService: artifactLocatorService,
    artifactRenameService: artifactRenameService,
    releaseDirectoryService: releaseDirectoryService,
    metadataService: metadataService,
    checksumService: checksumService,
    fileLogger: fileLogger,
  );

  addCommand(InitCommand(logger: logger));
  addCommand(BuildCommand(pipelineService: pipelineService));
  addCommand(PreviewCommand(
    logger: logger,
    projectService: projectService,
    versionService: versionService,
    environmentService: environmentService,
    buildCounterService: buildCounterService,
    filenameTemplateService: filenameTemplateService,
  ));
  addCommand(ConfigCommand(logger: logger));
  addCommand(ResetCommand(logger: logger));
  addCommand(VersionCommand(logger: logger, versionService: versionService));
  addCommand(CleanCommand(logger: logger, processService: processService, flutterSdkService: flutterSdkService));
  addCommand(DoctorCommand(logger: logger, processService: processService, flutterSdkService: flutterSdkService));
}