diff --git a/CHANGELOG.md b/CHANGELOG.md index e15f9253..7018e4fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## Next Version +#### Added +- Added support for `app-extension.intents-service` target type [#536](https://github.com/yonaskolb/XcodeGen/pull/536) @yonaskolb + +#### Changed +- Updated to xcodeproj 6.7.0 including its performance improvements [#536](https://github.com/yonaskolb/XcodeGen/pull/536) @yonaskolb + ## 2.4.0 #### Fixed: diff --git a/Docs/ProjectSpec.md b/Docs/ProjectSpec.md index b610a72e..7f804069 100644 --- a/Docs/ProjectSpec.md +++ b/Docs/ProjectSpec.md @@ -227,9 +227,10 @@ This will provide default build settings for a certain product type. It can be a - `application.messages` - `application.watchapp` - `application.watchapp2` +- `app-extension` - `app-extension.messages` - `app-extension.messages-sticker-pack` -- `app-extension` +- `app-extension.intents-service` - `bundle` - `bundle.unit-test` - `bundle.ui-testing` @@ -242,6 +243,7 @@ This will provide default build settings for a certain product type. It can be a - `tv-app-extension` - `watchkit-extension` - `watchkit2-extension` +- `xcode-extension` - `xpc-service` - ``""`` (used for legacy targets) diff --git a/Package.resolved b/Package.resolved index fad2b4b4..db29fe0a 100644 --- a/Package.resolved +++ b/Package.resolved @@ -69,8 +69,8 @@ "repositoryURL": "https://github.com/tuist/xcodeproj.git", "state": { "branch": null, - "revision": "8e15cc74149ee946b7ae125685177915b4ff7317", - "version": "6.4.0" + "revision": "065f348754b6155b8037dc43876a8f2ee354b95d", + "version": "6.7.0" } }, { diff --git a/Package.swift b/Package.swift index e0a50310..1249be28 100644 --- a/Package.swift +++ b/Package.swift @@ -15,7 +15,7 @@ let package = Package( .package(url: "https://github.com/yonaskolb/JSONUtilities.git", from: "4.1.0"), .package(url: "https://github.com/kylef/Spectre.git", from: "0.9.0"), .package(url: "https://github.com/onevcat/Rainbow.git", from: "3.0.0"), - .package(url: "https://github.com/tuist/xcodeproj.git", .exact("6.4.0")), + .package(url: "https://github.com/tuist/xcodeproj.git", .exact("6.7.0")), .package(url: "https://github.com/jakeheis/SwiftCLI.git", from: "5.2.0"), ], targets: [ diff --git a/Sources/ProjectSpec/Linkage.swift b/Sources/ProjectSpec/Linkage.swift index ec2b71e1..166a8681 100644 --- a/Sources/ProjectSpec/Linkage.swift +++ b/Sources/ProjectSpec/Linkage.swift @@ -16,6 +16,7 @@ extension Target { .bundle, .commandLineTool, .instrumentsPackage, + .intentsServiceExtension, .messagesApplication, .messagesExtension, .ocUnitTestBundle, diff --git a/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift b/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift index 2f7dc633..7ad7d420 100644 --- a/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift +++ b/Tests/XcodeGenKitTests/ProjectGeneratorTests.swift @@ -598,7 +598,7 @@ class ProjectGeneratorTests: XCTestCase { if let expectedResourceFiles = expectedResourceFiles[target.name] { try expect(resourcesPhases.count) == (expectedResourceFiles.isEmpty ? 0 : 1) if !expectedResourceFiles.isEmpty { - let resourceFiles = resourcesPhases[0].files + let resourceFiles = (resourcesPhases[0].files ?? []) .compactMap { $0.file } .map { $0.nameOrPath } try expect(Set(resourceFiles)) == expectedResourceFiles @@ -611,7 +611,7 @@ class ProjectGeneratorTests: XCTestCase { let expectedLinkedFiles = expectedLinkedFiles[target.name]! try expect(frameworkPhases.count) == (expectedLinkedFiles.isEmpty ? 0 : 1) if !expectedLinkedFiles.isEmpty { - let linkFrameworks = frameworkPhases[0].files + let linkFrameworks = (frameworkPhases[0].files ?? []) .compactMap { $0.file?.nameOrPath } try expect(Set(linkFrameworks)) == expectedLinkedFiles } @@ -620,7 +620,7 @@ class ProjectGeneratorTests: XCTestCase { if let expectedEmbeddedFrameworks = expectedEmbeddedFrameworks[target.name] { try expect(copyFilesPhases.count) == (expectedEmbeddedFrameworks.isEmpty ? 0 : 1) if !expectedEmbeddedFrameworks.isEmpty { - let copyFiles = copyFilesPhases[0].files + let copyFiles = (copyFilesPhases[0].files ?? []) .compactMap { $0.file?.nameOrPath } try expect(Set(copyFiles)) == expectedEmbeddedFrameworks } @@ -871,7 +871,7 @@ class ProjectGeneratorTests: XCTestCase { } let frameworkPhases = nativeTarget.buildPhases.compactMap { $0 as? PBXFrameworksBuildPhase } - let frameworkBuildFiles = frameworkPhases[0].files + let frameworkBuildFiles = frameworkPhases[0].files ?? [] let buildFileSettings = frameworkBuildFiles.map { $0.settings } try expect(frameworkBuildFiles.count) == 2 diff --git a/Tests/XcodeGenKitTests/SourceGeneratorTests.swift b/Tests/XcodeGenKitTests/SourceGeneratorTests.swift index 0ac104ea..97c7dc9c 100644 --- a/Tests/XcodeGenKitTests/SourceGeneratorTests.swift +++ b/Tests/XcodeGenKitTests/SourceGeneratorTests.swift @@ -95,8 +95,8 @@ class SourceGeneratorTests: XCTestCase { .first(where: { $0.file == fileReference }) else { throw failure("Cant find build file") } - try expect(buildPhase?.files.count) == 1 - try expect(buildPhase?.files.contains(buildFile)) == true + try expect(buildPhase?.files?.count) == 1 + try expect(buildPhase?.files?.contains(buildFile)) == true } $0.it("generates core data models") { @@ -518,7 +518,7 @@ class SourceGeneratorTests: XCTestCase { let sourcesBuildPhase = pbxProj.buildPhases.first(where: { $0.buildPhase == BuildPhase.sources })! - try expect(sourcesBuildPhase.files.count) == 1 + try expect(sourcesBuildPhase.files?.count) == 1 } $0.it("add only carthage dependencies with same platform") { @@ -609,7 +609,7 @@ extension PBXProj { let buildFile = buildFiles .first(where: { $0.file === fileReference }) let actualBuildPhase = buildFile - .flatMap { buildFile in buildPhases.first { $0.files.contains(buildFile) } }?.buildPhase + .flatMap { buildFile in buildPhases.first { $0.files?.contains(buildFile) ?? false } }?.buildPhase var error: String? if let buildPhase = buildPhase.buildPhase {