run method

  1. @override
FutureOr? run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
FutureOr? run() async {
  final results = argResults;
  if (results == null) throw ArgumentError('No arguments provided');

  final stageStr = results[argPublishStage] as String?;
  final isDryRun = results[argDryRun] as bool?;

  final flutterPublish = FlutterPublish(
    isDryRun: isDryRun,
    stage: stageStr == null ? null : PublishStage.values.byName(stageStr),
  );

  final flutterBuild = FlutterBuild(
    appName: results[argAppName] as String?,
    appVersion: results[argAppVersion] as String?,
    buildVersion: results[argBuildVersion] as String?,
    buildMetadata: results[argBuildMetadata] as String?,
    buildPreRelease: results[argBuildPreRelease] as String?,
    buildArgs: results[argBuildArg] as List<String>,
    mainPath: results[argMainPath] as String?,
    flavor: results[argFlavor] as String?,
    flutterSdkPath: results[argFlutterSdkPath] as String?,
  );

  final publishDistributor = getPublishDistributor(
    results: results,
    flutterPublish: flutterPublish,
    flutterBuild: flutterBuild,
  );
  await publishDistributor.publish();
  if (isDryRun ?? false) {
    stdout.writeln(
        'Dry run for ${publishDistributor.distributorType.name} was successful!');
  } else {
    stdout.writeln(
        'Publishing to ${publishDistributor.distributorType.name} was successful!');
  }
}