validate method

void validate()

Implementation

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

  if (!file.existsSync()) {
    print('❌ gradle-wrapper.properties not found at $gradleWrapperPath');
    return;
  }

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

  print('🔍 Checking gradle-wrapper.properties...');

  // --- Check all non-version properties ---
  for (final entry in required.entries) {
    final key = entry.key;
    final expected = entry.value;

    if (key == 'distributionUrl') {
      continue; // handled separately
    }

    final line = lines.firstWhere((l) => l.startsWith('$key='), orElse: () => '');

    if (line.isEmpty) {
      print('❌ Missing: $key=$expected');
      continue;
    }

    final actualRaw = line.split('=').skip(1).join('=').trim();
    final actual = normalizeGradleValue(actualRaw);

    if (actual != expected) {
      print('⚠️ Mismatch: $key, Found: $actualRaw, Expected: $expected');
    } else {
      print('✅ $key OK');
    }
  }

  // --- Version check section ---
  final requiredUrl = required['distributionUrl']!;
  final requiredVersion = extractVersion(requiredUrl);

  final distLine = lines.firstWhere((l) => l.startsWith('distributionUrl='), orElse: () => '');

  if (distLine.isEmpty) {
    print('❌ Missing: distributionUrl');
    return;
  }

  final actualUrlRaw = distLine.split('=').skip(1).join('=').trim();
  final actualUrl = normalizeGradleValue(actualUrlRaw);
  final actualVersion = extractVersion(actualUrl);

  final cmp = compareVersions(actualVersion, requiredVersion);

  if (cmp >= 0) {
    print('✅ Gradle version: $actualVersion (>= Required version: $requiredVersion)');
    return;
  } else {
    print('📦 Required version: $requiredVersion');
    print('📦 Found version:    $actualVersion');
  }

  // outdated → update file
  print('🔧 Updating Gradle from $actualVersion → $requiredVersion');

  final newUrl = requiredUrl.replaceAll(':', r'\:'); // re-escape for Gradle

  final newLines = lines
      .map((l) {
        if (l.startsWith('distributionUrl=')) {
          return 'distributionUrl=$newUrl';
        }
        return l;
      })
      .join('\n');

  file.writeAsStringSync(newLines);

  print('✅ Updated distributionUrl to latest required version');
}