run method

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

Runs this command.

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

Implementation

@override
Future<void> run() async {
  final configPath = argResults?['config'];
  final showConfig = argResults?['show-config'] ?? false;
  final target = argResults?['target'] as String;

  // Load config dynamically or use persisted one
  Config().loadConfig(configPath);

  if (showConfig) {
    Helpers.showUserConfig();
    return;
  }

  /// Supported platforms for flutter default flow.
  const validPlatforms = {
    'ios',
    'android',
    'web',
    'macos',
    'windows',
    'linux',
  };

  final platforms = target.toLowerCase() == 'all'
      ? validPlatforms
      : target.split(',').map((e) => e.trim()).toSet();

  // Validate platform input
  for (var platform in platforms) {
    if (!validPlatforms.contains(platform)) {
      print('❌ Unsupported platform: $platform');
      exit(1);
    }
  }

  /// If Advance Pipeline is disabled, use Default Flow
  if (Config().config.pipelineSteps == null) {
    await Kplatforms.buildAndProcessPlatforms(platforms);
  } else {
    /// Advance Pipeline is enabled, go with user's custom flow
    await Helpers.executePipeline();
    exit(0);
  }
}