validate method

void validate()

Implementation

void validate() {
  final file = File(settingsPath);

  if (!file.existsSync()) {
    print('❌ settings.gradle.kts not found at $settingsPath');
    return;
  }

  final content = file.readAsStringSync();
  final lines = content.split('\n');

  print('🔍 Checking plugin versions in settings.gradle.kts...');

  final pluginRegex = RegExp(r'id\("([^"]+)"\)\s+version\s+"([^"]+)"');

  bool updated = false;
  final newLines = <String>[];

  for (var line in lines) {
    var updatedLine = line;
    final m = pluginRegex.firstMatch(line);

    if (m != null) {
      final pluginId = m.group(1)!;
      final foundVersion = m.group(2)!;

      final requiredVersion = requiredPlugins[pluginId];

      if (requiredVersion != null) {
        final cmp = compareVersions(foundVersion, requiredVersion);

        if (cmp < 0) {
          print('⚠️ $pluginId outdated:');
          print('Found: $foundVersion, Required: $requiredVersion');

          updated = true;

          updatedLine = line.replaceFirst(
            'version "$foundVersion"',
            'version "$requiredVersion"',
          );
        } else {
          print('✅ $pluginId OK (Found: $foundVersion ≥ Required: $requiredVersion)');
        }
      }
    }

    newLines.add(updatedLine);
  }

  if (updated) {
    print('🔧 Updating settings.gradle.kts...');
    file.writeAsStringSync(newLines.join('\n'));
    print('✅ Plugin versions updated.');
  } else {
    print('✨ No updates needed.');
  }
}