validateConfig method

List<String> validateConfig()

Validate config presence and reject scaffold placeholders.

Returns human-readable issue strings; empty means the config is usable.

Implementation

List<String> validateConfig() {
  if (!checkConfigExists()) {
    return ['Config file not found at lib/config/deeplink.dart'];
  }

  final config = parseConfig(FileHelper.readFile(_configPath));
  final issues = <String>[];

  final domain = config['domain'] as String?;
  if (domain == null || domain.isEmpty) {
    issues.add('deeplink.domain not found in config');
  } else if (_placeholders.contains(domain)) {
    issues.add('deeplink.domain is still the scaffold placeholder "$domain"');
  }

  final teamId = config['teamId'] as String?;
  if (teamId == null || teamId.isEmpty) {
    issues.add('ios.team_id not found in config');
  } else if (_placeholders.contains(teamId)) {
    issues.add('ios.team_id is still the scaffold placeholder "$teamId"');
  }

  final bundleId = config['bundleId'] as String?;
  if (bundleId == null || bundleId.isEmpty) {
    issues.add('ios.bundle_id not found in config');
  } else if (_placeholders.contains(bundleId)) {
    issues.add('ios.bundle_id is still the scaffold placeholder "$bundleId"');
  }

  final packageName = config['packageName'] as String?;
  if (packageName == null || packageName.isEmpty) {
    issues.add('android.package_name not found in config');
  } else if (_placeholders.contains(packageName)) {
    issues.add(
      'android.package_name is still the scaffold placeholder "$packageName"',
    );
  }

  final fingerprints = config['fingerprints'] as List<String>? ?? const [];
  if (fingerprints.isEmpty) {
    issues.add('android.sha256_fingerprints not found in config');
  } else {
    final placeholder = fingerprints.firstWhere(
      _placeholders.contains,
      orElse: () => '',
    );
    if (placeholder.isNotEmpty) {
      issues.add(
        'android.sha256_fingerprints still contains the scaffold placeholder "$placeholder"',
      );
    }
  }

  return issues;
}