run method

  1. @override
Future<int> run()
override

Runs this command.

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

Implementation

@override
Future<int> run() async {
  final all = argResults!['all'] as bool;
  final selectedFlutter = argResults!['flutter'] as bool;
  final selectedOutputs = argResults!['outputs'] as bool;
  final noSelection = !all && !selectedFlutter && !selectedOutputs;
  final protectedPaths = <String>{};
  var failure = 0;
  if (all || selectedOutputs || noSelection) {
    final outputs = <String>{
      Files.androidDistributionOutputDir.path,
      Files.iosDistributionOutputDir.path,
      Files.customOutputDir.path,
    };
    try {
      final config =
          await ConfigParser.distributeYaml(configPath, globalResults);
      outputs.addAll(config.builderOutputDirectories());
      protectedPaths.addAll(config.protectedCredentialFiles());
    } on ConfigException catch (error) {
      logger.logWarning(
        'Could not read $configPath; cleaning default outputs only: '
        '${error.message}',
      );
    }
    final service = CleanService(
      logger,
      dryRun: argResults!['dry-run'] as bool,
      protectedPaths: protectedPaths,
    );
    final outputFailure = await service.outputs(outputs);
    if (failure == 0) failure = outputFailure;
  }
  if (all || selectedFlutter || noSelection) {
    final service = CleanService(
      logger,
      dryRun: argResults!['dry-run'] as bool,
      protectedPaths: protectedPaths,
    );
    final flutterFailure = await service.flutterClean();
    if (failure == 0) failure = flutterFailure;
  }
  return failure;
}