updateDeploymentTarget method

String updateDeploymentTarget()

Implementation

String updateDeploymentTarget() {
  try {
    final file = File(_pbxprojPath);
    var content = file.readAsStringSync();

    final pattern = RegExp(r'IPHONEOS_DEPLOYMENT_TARGET = ([^;]+);');
    final matches = pattern.allMatches(content).toList();

    if (matches.isEmpty) {
      return '⚠️  project.pbxproj — IPHONEOS_DEPLOYMENT_TARGET not found, skipped';
    }

    final anyBelow15 = matches.any((m) {
      final v = double.tryParse(m.group(1)!.trim());
      return v != null && v < 15.0;
    });

    if (!anyBelow15) {
      return '⚠️  project.pbxproj — iOS deployment target already 15.0+, skipped';
    }

    content = content.replaceAllMapped(pattern, (m) {
      final v = double.tryParse(m.group(1)!.trim());
      return (v != null && v < 15.0)
          ? 'IPHONEOS_DEPLOYMENT_TARGET = 15.0;'
          : m.group(0)!;
    });

    file.writeAsStringSync(content);
    return '✅ Updated project.pbxproj — iOS deployment target set to 15.0';
  } catch (e) {
    return '❌ Failed to update deployment target: $e';
  }
}