From 7b088f2ecb44fc30d950758fe0b1ed55bac66842 Mon Sep 17 00:00:00 2001 From: Wojciech Kulik <3128467+wojciech-kulik@users.noreply.github.com> Date: Tue, 19 May 2026 12:31:50 +0200 Subject: [PATCH] feat: migrate to XcodeProj 9.12.0 --- .swiftformat | 2 +- Package.resolved | 7 +++---- Package.swift | 2 +- .../XcodeProject/Core/ProjectTargets.swift | 20 +++++++++++-------- Sources/XcodeProjectCLI/XcodeProjectCLI.swift | 2 +- .../SetBuildSettingCommandTests.swift | 8 +++++++- 6 files changed, 25 insertions(+), 16 deletions(-) diff --git a/.swiftformat b/.swiftformat index 31b2367..243a435 100644 --- a/.swiftformat +++ b/.swiftformat @@ -28,7 +28,7 @@ --selfrequired expectation,wait --patternlet inline ---disable wrapMultilineStatementBraces, blankLinesAroundMark +--disable wrapFunctionBodies, wrapPropertyBodies, wrapMultilineStatementBraces, blankLinesAroundMark --exclude Scripts, Generated diff --git a/Package.resolved b/Package.resolved index 8671dfb..dd7da31 100644 --- a/Package.resolved +++ b/Package.resolved @@ -1,5 +1,4 @@ { - "originHash" : "676a5fac8edf1756ee4645122a90e0a0b9758fc271948fb7a96f0466fcbdd483", "pins" : [ { "identity" : "aexml", @@ -42,10 +41,10 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/tuist/XcodeProj.git", "state" : { - "revision" : "b1caa062d4aaab3e3d2bed5fe0ac5f8ce9bf84f4", - "version" : "8.27.7" + "revision" : "fb79d68bc758cdb00079d72b6c8b899d99f5f15e", + "version" : "9.12.0" } } ], - "version" : 3 + "version" : 2 } diff --git a/Package.swift b/Package.swift index 01c3d8a..a7ed63e 100644 --- a/Package.swift +++ b/Package.swift @@ -13,7 +13,7 @@ let package = Package( .executable(name: "xcp", targets: ["XcodeProjectCLI"]) ], dependencies: [ - .package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "8.12.0")), + .package(url: "https://github.com/tuist/XcodeProj.git", .upToNextMajor(from: "9.12.0")), .package(url: "https://github.com/apple/swift-argument-parser", from: "1.5.0") ], targets: [ diff --git a/Sources/XcodeProject/Core/ProjectTargets.swift b/Sources/XcodeProject/Core/ProjectTargets.swift index 6f7a6ea..1bbc577 100644 --- a/Sources/XcodeProject/Core/ProjectTargets.swift +++ b/Sources/XcodeProject/Core/ProjectTargets.swift @@ -33,10 +33,10 @@ public final class ProjectTargets { buildConfig = target.buildConfigurationList?.buildConfigurations.first } - if let array = buildConfig?.buildSettings[key] as? [String] { + if let array = buildConfig?.buildSettings[key]?.arrayValue { return array.joined(separator: "\n") } else { - return buildConfig?.buildSettings[key] as? String + return buildConfig?.buildSettings[key]?.stringValue } } @@ -60,16 +60,20 @@ public final class ProjectTargets { .filter { configs.isEmpty || configs.contains($0.name) } .forEach { config in for (key, value) in settings { - if append, let existingValue = config.buildSettings[key] as? String { - config.buildSettings[key] = existingValue + " " + value - } else if let existingValue = config.buildSettings[key] as? [Any] { + if let existingValue = config.buildSettings[key]?.arrayValue { if append { - config.buildSettings[key] = existingValue + [value] + config.buildSettings[key] = .array(existingValue + [value]) } else { - config.buildSettings[key] = [value] + config.buildSettings[key] = .array([value]) + } + } else if let existingValue = config.buildSettings[key]?.stringValue { + if append { + config.buildSettings[key] = .string("\(existingValue) \(value)") + } else { + config.buildSettings[key] = .string(value) } } else { - config.buildSettings[key] = value + config.buildSettings[key] = .string(value) } } } diff --git a/Sources/XcodeProjectCLI/XcodeProjectCLI.swift b/Sources/XcodeProjectCLI/XcodeProjectCLI.swift index 9f40f9f..35cdcc2 100644 --- a/Sources/XcodeProjectCLI/XcodeProjectCLI.swift +++ b/Sources/XcodeProjectCLI/XcodeProjectCLI.swift @@ -13,7 +13,7 @@ struct XcodeProjectCLI: ParsableCommand { static let configuration: CommandConfiguration = .init( commandName: "xcp", abstract: "XcodeProjectCLI", - version: "1.2.1", + version: "1.3.0", groupedSubcommands: [ .init( name: "Target", diff --git a/Tests/XcodeProjectCommandsTests/SetBuildSettingCommandTests.swift b/Tests/XcodeProjectCommandsTests/SetBuildSettingCommandTests.swift index 38bd3d9..5f49231 100644 --- a/Tests/XcodeProjectCommandsTests/SetBuildSettingCommandTests.swift +++ b/Tests/XcodeProjectCommandsTests/SetBuildSettingCommandTests.swift @@ -308,6 +308,12 @@ extension SerializedSuite.SetBuildSettingCommandTests { $0.name == config } - return buildConfig?.buildSettings[key] as? T + if T.self == [String].self { + return buildConfig?.buildSettings[key]?.arrayValue as? T + } else if T.self == String.self { + return buildConfig?.buildSettings[key]?.stringValue as? T + } + + return nil } }