blob: 58ce9fb7df14677ea8ff54ae8eca2db3b73388d1 [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../../base/file_system.dart';
import '../../base/project_migrator.dart';
import '../../xcode_project.dart';
/// Update the minimum macOS deployment version to the minimum allowed by Xcode without causing a warning.
class MacOSDeploymentTargetMigration extends ProjectMigrator {
MacOSDeploymentTargetMigration(
MacOSProject project,
super.logger,
) : _xcodeProjectInfoFile = project.xcodeProjectInfoFile,
_podfile = project.podfile;
final File _xcodeProjectInfoFile;
final File _podfile;
@override
bool migrate() {
if (_xcodeProjectInfoFile.existsSync()) {
processFileLines(_xcodeProjectInfoFile);
} else {
logger.printTrace('Xcode project not found, skipping macOS deployment target version migration.');
}
if (_podfile.existsSync()) {
processFileLines(_podfile);
} else {
logger.printTrace('Podfile not found, skipping global platform macOS version migration.');
}
return true;
}
@override
String? migrateLine(String line) {
// Xcode project file changes.
const String deploymentTargetOriginal = 'MACOSX_DEPLOYMENT_TARGET = 10.11;';
// Podfile changes.
const String podfilePlatformVersionOriginal = "platform :osx, '10.11'";
if (line.contains(deploymentTargetOriginal) || line.contains(podfilePlatformVersionOriginal)) {
if (!migrationRequired) {
// Only print for the first discovered change found.
logger.printStatus('Updating minimum macOS deployment target to 10.13.');
}
const String deploymentTargetReplacement = 'MACOSX_DEPLOYMENT_TARGET = 10.13;';
const String podfilePlatformVersionReplacement = "platform :osx, '10.13'";
return line
.replaceAll(deploymentTargetOriginal, deploymentTargetReplacement)
.replaceAll(podfilePlatformVersionOriginal, podfilePlatformVersionReplacement);
}
return line;
}
}