reset method

void reset([
  1. bool excludeValidation = false
])

Implementation

void reset([bool excludeValidation = false]) {
  final log = _log;
  final root = ConfigService.root;
  final config = ConfigService.load(excludeValidation);

  log.info('🧹 Starting full project reset...');

  // 1. Platform Reset
  if (config.platforms.contains('android')) {
    try {
      AndroidService.reset(config: config, logger: log);
    } catch (e) {
      log.warn('⚠️ Android reset issue: $e');
    }
  }

  if (config.platforms.contains('ios')) {
    try {
      IOSService.reset(config: config, logger: log);
    } catch (e) {
      log.warn('⚠️ iOS reset issue: $e');
    }
  }

  if (config.platforms.contains('macos')) {
    try {
      MacOSService.reset(config: config, logger: log);
    } catch (e) {
      log.warn('⚠️ macOS reset issue: $e');
    }
  }

  // 2. Main Dart Restoration
  _restoreMainDart(root, log, config);

  // 3. File Cleanup
  final allPossibleOrphans = FileService.getOrphanedFlavors([]);
  if (allPossibleOrphans.isNotEmpty) {
    log.info(
      '🗑️ Removing orphaned flavor files: ${allPossibleOrphans.join(", ")}',
    );
    FileService.cleanupFlavors(allPossibleOrphans.toList());
  }

  _cleanupEnvFiles(root, config, log);

  final configFile = File(p.join(root, config.appConfigPath));
  if (configFile.existsSync()) {
    configFile.deleteSync();
  }

  final flavorConfigFile = File(p.join(root, 'flavor_cli.yaml'));
  if (flavorConfigFile.existsSync()) {
    flavorConfigFile.deleteSync();
  }

  _cleanupFirebaseFiles(root, log);
  FileService.removeVSCodeLaunchConfig();

  _cleanupEmptyDir(p.join(root, 'lib/main'), log);
  _cleanupEmptyDir(p.join(root, p.dirname(config.appConfigPath)), log);

  _restoreTests(root, log);

  log.info('🧹 Finalizing: flutter clean && flutter pub get...');
  try {
    Process.runSync('flutter', ['clean'], runInShell: true);
    Process.runSync('flutter', ['pub', 'get'], runInShell: true);
  } catch (e) {
    log.warn('⚠️ Flutter cleanup issue: $e');
  }

  try {
    IOSService.syncPods(logger: log);
  } catch (e) {
    log.warn('⚠️ CocoaPods sync issue: $e');
  }

  log.info('🎨 Formatting code...');
  try {
    Process.runSync('dart', ['format', 'lib'], runInShell: true);
  } catch (_) {}

  log.success('✅ Project reset complete. App is back to its original state.');
}