diff --git a/.circleci/config.yml b/.circleci/config.yml index 9affa0f8..6b9507be 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,8 +1,8 @@ version: 2 jobs: - macOS_swift_4.2: + macOS_swift_5.0: macos: - xcode: "10.0.0" + xcode: "10.2.0" steps: - checkout - run: @@ -27,4 +27,4 @@ workflows: version: 2 workflow: jobs: - - macOS_swift_4.2 + - macOS_swift_5.0 diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d12dbdf..89918ff3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,12 +3,26 @@ ## 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 +- Updated default generated settings for Xcode 10.2 [#555](https://github.com/yonaskolb/XcodeGen/pull/555) @yonaskolb #### Fixed +- Fixed `optional` file sources not being added to the project [#557](https://github.com/yonaskolb/XcodeGen/pull/557) @yonaskolb - Fixed order of file generation. Plists are now generated before the project is generated so that the project includes the generated plists [#544](https://github.com/yonaskolb/XcodeGen/issues/544) @tomquist +## 2.4.0 + +#### Fixed: +- Fixed installation when building in Swift 5 [#549](https://github.com/yonaskolb/XcodeGen/pull/549) @yonaskolb + +#### Changed +- Updated to Swift 5 and dropped Swift 4.2 [#549](https://github.com/yonaskolb/XcodeGen/pull/549) @yonaskolb + +[Commits](https://github.com/yonaskolb/XcodeGen/compare/2.3.0...2.4.0) + ## 2.3.0 #### Added @@ -24,7 +38,7 @@ #### Fixed - Sources outside a project spec's directory will be correctly referenced as relative paths in the project file. [#524](https://github.com/yonaskolb/XcodeGen/pull/524) -- Fixed error when `optional` path is missing [#527](https://github.com/yonaskolb/XcodeGen/pull/527) @yonaskolb +- Fixed error when `optional` directory source is missing [#527](https://github.com/yonaskolb/XcodeGen/pull/527) @yonaskolb - Fixed excludes within included spec [#535](https://github.com/yonaskolb/XcodeGen/pull/535) @yonaskolb - Fixed paths in target templates within included files not being relative [#537](https://github.com/yonaskolb/XcodeGen/pull/537) @yonaskolb - Fix multi-platform target templates [#541](https://github.com/yonaskolb/XcodeGen/pull/541) @yonaskolb 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/Makefile b/Makefile index d21837df..e0d6a2bd 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ TOOL_NAME = XcodeGen export EXECUTABLE_NAME = xcodegen -VERSION = 2.3.0 +VERSION = 2.4.0 PREFIX = /usr/local INSTALL_PATH = $(PREFIX)/bin/$(EXECUTABLE_NAME) @@ -19,7 +19,7 @@ install: build cp -R $(CURRENT_PATH)/SettingPresets $(SHARE_PATH)/SettingPresets build: - swift build --disable-sandbox -c release -Xswiftc -static-stdlib + swift build --disable-sandbox -c release uninstall: rm -f $(INSTALL_PATH) @@ -28,8 +28,8 @@ uninstall: format_code: swiftformat . -release: format_code - sed -i '' 's|\(let version = try Version("\)\(.*\)\(")\)|\1$(VERSION)\3|' Sources/XcodeGen/main.swift +release: + sed -i '' 's|\(let version = Version("\)\(.*\)\(")\)|\1$(VERSION)\3|' Sources/XcodeGen/main.swift git add . git commit -m "Update to $(VERSION)" 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 d180b01b..1249be28 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:4.2 +// swift-tools-version:5.0 import PackageDescription @@ -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/README.md b/README.md index 630602b4..b0311862 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ A project would be created with 2 connected targets, with all the required confi ## Installing -Make sure Xcode 9.3 is installed first. +Make sure Xcode 10.2 is installed first. ### [Mint](https://github.com/yonaskolb/mint) ```sh @@ -105,7 +105,7 @@ swift run xcodegen Add the following to your Package.swift file's dependencies: ```swift -.package(url: "https://github.com/yonaskolb/XcodeGen.git", from: "1.0.0"), +.package(url: "https://github.com/yonaskolb/XcodeGen.git", from: "2.3.0"), ``` And then import wherever needed: `import XcodeGenKit` diff --git a/SettingPresets/Configs/release.yml b/SettingPresets/Configs/release.yml index b32b0c58..ce6d9f24 100644 --- a/SettingPresets/Configs/release.yml +++ b/SettingPresets/Configs/release.yml @@ -6,4 +6,4 @@ ENABLE_NS_ASSERTIONS: NO VALIDATE_PRODUCT: YES # Swift Settings -SWIFT_OPTIMIZATION_LEVEL: -Owholemodule +SWIFT_COMPILATION_MODE: wholemodule diff --git a/SettingPresets/Products/application.watchapp2.yml b/SettingPresets/Products/application.watchapp2.yml deleted file mode 100644 index 19d40c81..00000000 --- a/SettingPresets/Products/application.watchapp2.yml +++ /dev/null @@ -1 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: YES diff --git a/SettingPresets/Products/application.yml b/SettingPresets/Products/application.yml deleted file mode 100644 index 19d40c81..00000000 --- a/SettingPresets/Products/application.yml +++ /dev/null @@ -1 +0,0 @@ -ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES: YES diff --git a/SettingPresets/base.yml b/SettingPresets/base.yml index 9552b7a0..0cb9ea15 100644 --- a/SettingPresets/base.yml +++ b/SettingPresets/base.yml @@ -42,4 +42,4 @@ GCC_WARN_UNUSED_VARIABLE: YES # Swift Settings PRODUCT_NAME: $(TARGET_NAME) -SWIFT_VERSION: '4.2' +SWIFT_VERSION: '5.0' 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/Sources/ProjectSpec/Scheme.swift b/Sources/ProjectSpec/Scheme.swift index 907ccffd..6865c284 100644 --- a/Sources/ProjectSpec/Scheme.swift +++ b/Sources/ProjectSpec/Scheme.swift @@ -377,7 +377,7 @@ extension XCScheme.EnvironmentVariable: JSONObjectConvertible { value = try jsonDictionary.json(atKeyPath: "value") } let variable: String = try jsonDictionary.json(atKeyPath: "variable") - let enabled: Bool = (try? jsonDictionary.json(atKeyPath: "isEnabled")) ?? true + let enabled: Bool = jsonDictionary.json(atKeyPath: "isEnabled") ?? true self.init(variable: variable, value: value, enabled: enabled) } diff --git a/Sources/XcodeGen/main.swift b/Sources/XcodeGen/main.swift index 3bf80ef9..ed42dac0 100644 --- a/Sources/XcodeGen/main.swift +++ b/Sources/XcodeGen/main.swift @@ -2,6 +2,6 @@ import Foundation import ProjectSpec import XcodeGenCLI -let version = try Version("2.3.0") +let version = Version("2.4.0") let cli = XcodeGenCLI(version: version) cli.execute() diff --git a/Sources/XcodeGenKit/MD5.swift b/Sources/XcodeGenKit/MD5.swift index b52f772a..1514774d 100644 --- a/Sources/XcodeGenKit/MD5.swift +++ b/Sources/XcodeGenKit/MD5.swift @@ -20,8 +20,8 @@ import Foundation extension String { public var md5: String { if let data = data(using: .utf8, allowLossyConversion: true) { - let message = data.withUnsafeBytes { bytes -> [UInt8] in - return Array(UnsafeBufferPointer(start: bytes, count: data.count)) + let message = data.withUnsafeBytes { (bytes: UnsafeRawBufferPointer) -> [UInt8] in + return Array(bytes) } let MD5Calculator = MD5(message) diff --git a/Sources/XcodeGenKit/SourceGenerator.swift b/Sources/XcodeGenKit/SourceGenerator.swift index 7e283967..4ffe1cc0 100644 --- a/Sources/XcodeGenKit/SourceGenerator.swift +++ b/Sources/XcodeGenKit/SourceGenerator.swift @@ -148,7 +148,7 @@ class SourceGenerator { // order by taking the last item in the sortedPaths array let currentVersionPath = findCurrentCoreDataModelVersionPath(using: versionedModels) ?? sortedPaths.last let currentVersion: PBXFileReference? = { - guard let indexOf = sortedPaths.index(where: { $0 == currentVersionPath }) else { return nil } + guard let indexOf = sortedPaths.firstIndex(where: { $0 == currentVersionPath }) else { return nil } return modelFileReferences[indexOf] }() let versionGroup = addObject(XCVersionGroup( @@ -463,11 +463,6 @@ class SourceGenerator { /// creates source files private func getSourceFiles(targetType: PBXProductType, targetSource: TargetSource, path: Path) throws -> [SourceFile] { - if targetSource.optional && !Path(targetSource.path).exists { - // Is optional so if it doesn't exist just return an empty array - return [] - } - // generate excluded paths targetSourceExcludePaths = getSourceExcludes(targetSource: targetSource) @@ -521,6 +516,10 @@ class SourceGenerator { sourceFiles.append(sourceFile) case .group: + if targetSource.optional && !Path(targetSource.path).exists { + // This group is missing, so if's optional just return an empty array + return [] + } let (groupSourceFiles, groups) = try getGroupSources(targetType: targetType, targetSource: targetSource, path: path, isBaseGroup: true) let group = groups.first! if let name = targetSource.name { @@ -561,7 +560,7 @@ class SourceGenerator { let versionPath = versionedModels.first(where: { $0.lastComponent == ".xccurrentversion" }), let data = try? versionPath.read(), let plist = try? PropertyListSerialization.propertyList(from: data, options: [], format: nil) as? [String: Any], - let versionString = plist?["_XCCurrentVersionName"] as? String else { + let versionString = plist["_XCCurrentVersionName"] as? String else { return nil } return versionedModels.first(where: { $0.lastComponent == versionString }) diff --git a/Sources/XcodeGenKit/Version.swift b/Sources/XcodeGenKit/Version.swift index 5acef3f1..63904f67 100644 --- a/Sources/XcodeGenKit/Version.swift +++ b/Sources/XcodeGenKit/Version.swift @@ -4,7 +4,7 @@ import ProjectSpec extension Project { var xcodeVersion: String { - return XCodeVersion.parse(options.xcodeVersion ?? "10.0") + return XCodeVersion.parse(options.xcodeVersion ?? "10.2") } var schemeVersion: String { @@ -16,7 +16,7 @@ extension Project { } var objectVersion: UInt { - return 50 + return 51 } public func validateMinimumXcodeGenVersion(_ xcodeGenVersion: Version) throws { diff --git a/Tests/Fixtures/CarthageProject/Project.xcodeproj/project.pbxproj b/Tests/Fixtures/CarthageProject/Project.xcodeproj/project.pbxproj index af08556f..b809ab72 100644 --- a/Tests/Fixtures/CarthageProject/Project.xcodeproj/project.pbxproj +++ b/Tests/Fixtures/CarthageProject/Project.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXBuildFile section */ @@ -312,7 +312,7 @@ 0FBAE303E3CFC2ABAC876A7719B30922 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1000; + LastUpgradeCheck = 1020; }; buildConfigurationList = D91E14E36EC0B415578456F264E0161E /* Build configuration list for PBXProject "Project" */; compatibilityVersion = "Xcode 9.3"; @@ -409,8 +409,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; }; name = Release; @@ -582,7 +582,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; }; name = Debug; }; diff --git a/Tests/Fixtures/TestProject/Carthage/Build/.Result.version b/Tests/Fixtures/TestProject/Carthage/Build/.Result.version index 56d69be2..0ff47abe 100644 --- a/Tests/Fixtures/TestProject/Carthage/Build/.Result.version +++ b/Tests/Fixtures/TestProject/Carthage/Build/.Result.version @@ -2,26 +2,26 @@ "Mac" : [ { "name" : "Result", - "hash" : "798b63be483da72a39b8b82eef99e204df84ae52776cd4eb3bc3a887a51d3556" + "hash" : "f14569d60b4947d7467d06912c9969bac4caa5c2b62e19dec21bfd37ae146a9f" } ], "watchOS" : [ { "name" : "Result", - "hash" : "ca05c8fa750b3737a39d134ae5a2bf675c1d6d8962bfd99fd7b4c3fcadeff364" + "hash" : "80ed6de84fe4e9a468a10ca021db53f5a91edfa70874fdab0b5c1e61487604ea" } ], "tvOS" : [ { "name" : "Result", - "hash" : "a8c876ce896eb86255745cd700e54034c231a929916bcd71669f87ee15448d54" + "hash" : "28ba58a2f0caf9db17d544ea3f01908b3f100bca5777a10c8238386be054b9ce" } ], "commitish" : "4.1.0", "iOS" : [ { "name" : "Result", - "hash" : "17b7a454596e240de059d0018168a70eb3d8b7ff5979057c4a062d4288053bf2" + "hash" : "328ec56ff90373242dc848bda9f214eeb58c456ea5e4703855b3f7f207861a24" } ] } \ No newline at end of file diff --git a/Tests/Fixtures/TestProject/Mintfile b/Tests/Fixtures/TestProject/Mintfile index e69de29b..8b137891 100644 --- a/Tests/Fixtures/TestProject/Mintfile +++ b/Tests/Fixtures/TestProject/Mintfile @@ -0,0 +1 @@ + diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj index 4056628b..dc91f913 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/project.pbxproj @@ -3,7 +3,7 @@ archiveVersion = 1; classes = { }; - objectVersion = 50; + objectVersion = 51; objects = { /* Begin PBXAggregateTarget section */ @@ -30,7 +30,6 @@ 0D281787B630CE62E91F9F7219EFF40D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D8A016580A3B8F72B820BFBF93749CD7 /* Assets.xcassets */; }; 0F7F220834A3E2B344322B64DB5140DF /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BB1B49A91B892152D68ED76D9D4E759 /* libc++.tbd */; }; 13C624ABA05AC67129468002144005A9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0704B6CAFBB53E0EBB08F6B385901D43 /* ViewController.swift */; settings = {COMPILER_FLAGS = "-Werror"; }; }; - 1985E98D7107DFCBB2F2AC7DC6A155B5 /* SomeFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 73E7D4B860A5B6B80540E64703192744 /* SomeFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 1E105E72C258FF9843B21D8A3F520CFB /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CE1F06D99242F4223D081F0DF78367F3 /* LaunchScreen.storyboard */; }; 205719BEDEFFC911468631925C617988 /* module.modulemap in CopyFiles */ = {isa = PBXBuildFile; fileRef = F2950763C4C568CC85021D185A35C1FB /* module.modulemap */; }; 21B9D91DC3573A47C3298339795D0D2A /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B419F22EB75EDD4AB9B92F32F7D39755 /* Assets.xcassets */; }; @@ -108,7 +107,6 @@ E32A04EF64C8989C8349A476E3DC1F19 /* Framework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 41FC82ED1C4C3B7B3D7B2FB721574442 /* Framework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; E48B36322124BDE8EE3AF22EB3B2B47C /* MyFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A58A16491CDDF968B0D56DE7EB96D92 /* MyFramework.h */; settings = {ATTRIBUTES = (Public, ); }; }; E7555C1BCBCF88204907587DBD341663 /* Headers in Headers */ = {isa = PBXBuildFile; fileRef = 2E1E747C7BC434ADB80CC269B7B595DC /* Headers */; settings = {ATTRIBUTES = (Public, ); }; }; - EA0D7CDB58D81E7D92E731535E41FB5E /* SomeFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73E7D4B860A5B6B80540E64703192744 /* SomeFramework.framework */; }; EEDCCB9427FA46F272DFC190FCCBE77A /* StaticLibrary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC91042453E18DF74BA1C0F957D87DC /* StaticLibrary.swift */; }; EF285B90A968453FA1CB0CDE8C0AD440 /* iMessageApp.app in Resources */ = {isa = PBXBuildFile; fileRef = 9A87A926D563773658FB87FEEE4DD132 /* iMessageApp.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; EFBDE105D3397BE7AAC207B8AD3CC8BB /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D296BB7355994040E197A1EE5B41F583 /* Result.framework */; }; @@ -392,7 +390,6 @@ files = ( 3799FF03E75F5D3C925CBB18B8BB7BF6 /* Framework2.framework in Embed Frameworks */, 7856158603A68D4FF152F8E96305B3E7 /* Framework.framework in Embed Frameworks */, - 1985E98D7107DFCBB2F2AC7DC6A155B5 /* SomeFramework.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -448,7 +445,6 @@ 6BBE762F36D94AB6FFBFE834A99277EA /* SomeFile */ = {isa = PBXFileReference; path = SomeFile; sourceTree = ""; }; 70A8E15C81E454DC950C59F092CC1049 /* SomeXPCService.xpc */ = {isa = PBXFileReference; path = SomeXPCService.xpc; sourceTree = ""; }; 72A14C887EF7E9C8CBE914ACC4DDF4D4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 73E7D4B860A5B6B80540E64703192744 /* SomeFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SomeFramework.framework; path = Vendor/SomeFramework.framework; sourceTree = ""; }; 77C0C341F1865224E059608627CC2D82 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7ACBAD7D485AA4E2542B9E0F9908D5B2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7B5068D64404C61A67A184584E13804D /* MyBundle.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = MyBundle.bundle; sourceTree = ""; }; @@ -515,7 +511,6 @@ DE50B077EE4BFABAF128321B2A13886F /* Framework.framework in Frameworks */, 29A79F030DD325754FD2C82C4A6E0AE6 /* Result.framework in Frameworks */, 53B2D7C4FD56D5D1D8AF16B23110235D /* StaticLibrary_ObjC.a in Frameworks */, - EA0D7CDB58D81E7D92E731535E41FB5E /* SomeFramework.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -893,7 +888,6 @@ 12809A79ACE69F501A5FE815B43985BD /* Carthage */, FDB2B6A77D39CD5602F2125F01DEF025 /* Contacts.framework */, 0BB1B49A91B892152D68ED76D9D4E759 /* libc++.tbd */, - 73E7D4B860A5B6B80540E64703192744 /* SomeFramework.framework */, ); name = Frameworks; sourceTree = ""; @@ -1436,7 +1430,7 @@ 0FBAE303E3CFC2ABAC876A7719B30922 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1000; + LastUpgradeCheck = 1020; TargetAttributes = { 020A320BB3736FCDE6CC4E703EE69AC0 = { ProvisioningStyle = Automatic; @@ -2144,7 +2138,6 @@ 00FD318C7418F3351FC0074451FC8AF5 /* Test Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -2237,13 +2230,11 @@ 06E4383A2687EAD5877836CD308F610F /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -2483,7 +2474,6 @@ 196FEEE6C4B0DDE53AD16BD6E5645F0E /* Test Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -2515,7 +2505,6 @@ 20803EC42C26E4EA13474E5A694068D1 /* Production Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -2532,7 +2521,6 @@ 234640A811EF6EB9CC9081CA803A4C19 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -2727,7 +2715,6 @@ 3FFEE1ED324166B88F5F9A451E59A29C /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -2811,7 +2798,6 @@ 4621C6C8A78FBB1CF4078178688742F9 /* Production Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -3008,13 +2994,11 @@ 545342CFDF7810F2EBFFFC5EEE5B87A6 /* Production Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -3372,13 +3356,11 @@ 7931F229200F89B8CDC8A5E3B755C52E /* Test Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -3407,7 +3389,6 @@ 7B2A1BE6CA654E9903A4C6802DBCE440 /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -3613,7 +3594,6 @@ 94295771D06A8E3DC6DCC8ADE73874F7 /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -3627,7 +3607,6 @@ 943D402E936EC5BD391F9FD0C7D926EA /* Production Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -3684,7 +3663,6 @@ 97009625463EC8B19F53007A9D102A56 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -3730,7 +3708,6 @@ 983ACA9F991B0B18D9760B122B42614C /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -3947,7 +3924,6 @@ AABC1E325EADF86C5137D659051CC749 /* Production Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -3975,13 +3951,11 @@ AE37A01B34B4B956E784082C03DEB579 /* Production Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -4038,13 +4012,11 @@ B008685BA25BB8FD771F0AE3B59FA06C /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -4143,7 +4115,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = "Production Debug"; @@ -4204,7 +4176,6 @@ BA5AD3137CD90C50E5E1BDA06645F11E /* Production Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4297,8 +4268,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; @@ -4307,7 +4278,6 @@ C4397CDA0D458BAD55C911B0A4DC7868 /* Staging Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -4366,8 +4336,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; @@ -4440,7 +4410,6 @@ CB4F81A519CA89CAF5703DAB428CCE0A /* Test Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4454,7 +4423,6 @@ CBE9D80AD0719511A13A889E867077CC /* Staging Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; COMBINE_HIDPI_IMAGES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -4543,13 +4511,11 @@ DC80DC0AF0B4F2B51DAB0A5276F79F05 /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/iOS", - "\"Vendor\"", ); INFOPLIST_FILE = App_iOS/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -4566,7 +4532,6 @@ DDECE7D81A63C1C46A08F1F47ACCE4DF /* Production Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_ENTITLEMENTS = App_iOS/App.entitlements; CODE_SIGN_IDENTITY = "iPhone Developer"; @@ -4657,7 +4622,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = "Staging Debug"; @@ -4839,7 +4804,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.0; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; name = "Test Debug"; @@ -4903,7 +4868,6 @@ F3AC6A112F81D0958A316D820549143D /* Test Release */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "$(PROJECT_DIR)/Carthage/Build/watchOS", @@ -5039,8 +5003,8 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 4.2; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_VERSION = 5.0; VALIDATE_PRODUCT = YES; WATCHOS_DEPLOYMENT_TARGET = 4.0; }; diff --git a/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_Scheme.xcscheme b/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_Scheme.xcscheme index b0efd3fd..c9a35a5b 100644 --- a/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_Scheme.xcscheme +++ b/Tests/Fixtures/TestProject/Project.xcodeproj/xcshareddata/xcschemes/App_Scheme.xcscheme @@ -1,6 +1,6 @@ ) -# include -#endif - -#pragma clang diagnostic ignored "-Wauto-import" -#include -#include -#include -#include - -#if !defined(SWIFT_TYPEDEFS) -# define SWIFT_TYPEDEFS 1 -# if __has_include() -# include -# elif !defined(__cplusplus) -typedef uint_least16_t char16_t; -typedef uint_least32_t char32_t; -# endif -typedef float swift_float2 __attribute__((__ext_vector_type__(2))); -typedef float swift_float3 __attribute__((__ext_vector_type__(3))); -typedef float swift_float4 __attribute__((__ext_vector_type__(4))); -typedef double swift_double2 __attribute__((__ext_vector_type__(2))); -typedef double swift_double3 __attribute__((__ext_vector_type__(3))); -typedef double swift_double4 __attribute__((__ext_vector_type__(4))); -typedef int swift_int2 __attribute__((__ext_vector_type__(2))); -typedef int swift_int3 __attribute__((__ext_vector_type__(3))); -typedef int swift_int4 __attribute__((__ext_vector_type__(4))); -typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); -typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); -typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); -#endif - -#if !defined(SWIFT_PASTE) -# define SWIFT_PASTE_HELPER(x, y) x##y -# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) -#endif -#if !defined(SWIFT_METATYPE) -# define SWIFT_METATYPE(X) Class -#endif -#if !defined(SWIFT_CLASS_PROPERTY) -# if __has_feature(objc_class_property) -# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ -# else -# define SWIFT_CLASS_PROPERTY(...) -# endif -#endif - -#if __has_attribute(objc_runtime_name) -# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) -#else -# define SWIFT_RUNTIME_NAME(X) -#endif -#if __has_attribute(swift_name) -# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) -#else -# define SWIFT_COMPILE_NAME(X) -#endif -#if __has_attribute(objc_method_family) -# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) -#else -# define SWIFT_METHOD_FAMILY(X) -#endif -#if __has_attribute(noescape) -# define SWIFT_NOESCAPE __attribute__((noescape)) -#else -# define SWIFT_NOESCAPE -#endif -#if __has_attribute(warn_unused_result) -# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) -#else -# define SWIFT_WARN_UNUSED_RESULT -#endif -#if __has_attribute(noreturn) -# define SWIFT_NORETURN __attribute__((noreturn)) -#else -# define SWIFT_NORETURN -#endif -#if !defined(SWIFT_CLASS_EXTRA) -# define SWIFT_CLASS_EXTRA -#endif -#if !defined(SWIFT_PROTOCOL_EXTRA) -# define SWIFT_PROTOCOL_EXTRA -#endif -#if !defined(SWIFT_ENUM_EXTRA) -# define SWIFT_ENUM_EXTRA -#endif -#if !defined(SWIFT_CLASS) -# if __has_attribute(objc_subclassing_restricted) -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# else -# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA -# endif -#endif - -#if !defined(SWIFT_PROTOCOL) -# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA -#endif - -#if !defined(SWIFT_EXTENSION) -# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) -#endif - -#if !defined(OBJC_DESIGNATED_INITIALIZER) -# if __has_attribute(objc_designated_initializer) -# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -# else -# define OBJC_DESIGNATED_INITIALIZER -# endif -#endif -#if !defined(SWIFT_ENUM_ATTR) -# if defined(__has_attribute) && __has_attribute(enum_extensibility) -# define SWIFT_ENUM_ATTR __attribute__((enum_extensibility(open))) -# else -# define SWIFT_ENUM_ATTR -# endif -#endif -#if !defined(SWIFT_ENUM) -# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type -# if __has_feature(generalized_swift_name) -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type -# else -# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) -# endif -#endif -#if !defined(SWIFT_UNAVAILABLE) -# define SWIFT_UNAVAILABLE __attribute__((unavailable)) -#endif -#if !defined(SWIFT_UNAVAILABLE_MSG) -# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) -#endif -#if !defined(SWIFT_AVAILABILITY) -# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) -#endif -#if !defined(SWIFT_DEPRECATED) -# define SWIFT_DEPRECATED __attribute__((deprecated)) -#endif -#if !defined(SWIFT_DEPRECATED_MSG) -# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) -#endif -#if __has_feature(attribute_diagnose_if_objc) -# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) -#else -# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) -#endif -#if __has_feature(modules) -#endif - -#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" -#pragma clang diagnostic ignored "-Wduplicate-method-arg" -#if __has_warning("-Wpragma-clang-attribute") -# pragma clang diagnostic ignored "-Wpragma-clang-attribute" -#endif -#pragma clang diagnostic ignored "-Wunknown-pragmas" -#pragma clang diagnostic ignored "-Wnullability" - -#if __has_attribute(external_source_symbol) -# pragma push_macro("any") -# undef any -# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="SomeFramework",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) -# pragma pop_macro("any") -#endif - -#if __has_attribute(external_source_symbol) -# pragma clang attribute pop -#endif -#pragma clang diagnostic pop diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Info.plist b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Info.plist deleted file mode 100644 index 610034f2..00000000 Binary files a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Info.plist and /dev/null differ diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftdoc b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftdoc deleted file mode 100644 index 92ad318c..00000000 Binary files a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftdoc and /dev/null differ diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftmodule b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftmodule deleted file mode 100644 index 031e06c8..00000000 Binary files a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/SomeFramework.swiftmodule/x86_64.swiftmodule and /dev/null differ diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/module.modulemap b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/module.modulemap deleted file mode 100644 index bcab7ffb..00000000 --- a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/Modules/module.modulemap +++ /dev/null @@ -1,4 +0,0 @@ -framework module SomeFramework { - header "SomeFramework-Swift.h" - requires objc -} diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/SomeFramework b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/SomeFramework deleted file mode 100755 index 50e17ba9..00000000 Binary files a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/SomeFramework and /dev/null differ diff --git a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/_CodeSignature/CodeResources b/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/_CodeSignature/CodeResources deleted file mode 100644 index 686a4022..00000000 --- a/Tests/Fixtures/TestProject/Vendor/SomeFramework.framework/_CodeSignature/CodeResources +++ /dev/null @@ -1,165 +0,0 @@ - - - - - files - - Headers/SomeFramework-Swift.h - - GsWLq+pM7+WTHb5Lytl5yzwE6Lg= - - Info.plist - - pHXZVe8uQSXZphapqiSal27/+cY= - - Modules/SomeFramework.swiftmodule/x86_64.swiftdoc - - K6JkWBnfjFpkw5UPJ9OZalStS6w= - - Modules/SomeFramework.swiftmodule/x86_64.swiftmodule - - 45szTu0MSm7Jh5wqFDqeTRcIVpk= - - Modules/module.modulemap - - 5TTCyrUix6BrqYO5bplMEDiYK98= - - - files2 - - Headers/SomeFramework-Swift.h - - hash2 - - i0YcIx4NscoXVWFIAurGgi+DMENrppl1DamK1PLy3/w= - - - Modules/SomeFramework.swiftmodule/x86_64.swiftdoc - - hash2 - - rw34Qgu/XEVt2QL4jvsrMJrfrqrMma2PBLFwd8lmXc4= - - - Modules/SomeFramework.swiftmodule/x86_64.swiftmodule - - hash2 - - SR7Q1t/6wNc4fmUX/866/vWPDXJLDPp0zN396/PLlbQ= - - - Modules/module.modulemap - - hash2 - - cbLtUnOM5bPVzNdrge9LxFAcg5zHw3i7lx3sjHEV8t0= - - - - rules - - ^ - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^version.plist$ - - - rules2 - - .*\.dSYM($|/) - - weight - 11 - - ^ - - weight - 20 - - ^(.*/)?\.DS_Store$ - - omit - - weight - 2000 - - ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ - - nested - - weight - 10 - - ^.* - - ^.*\.lproj/ - - optional - - weight - 1000 - - ^.*\.lproj/locversion.plist$ - - omit - - weight - 1100 - - ^Base\.lproj/ - - weight - 1010 - - ^Info\.plist$ - - omit - - weight - 20 - - ^PkgInfo$ - - omit - - weight - 20 - - ^[^/]+$ - - nested - - weight - 10 - - ^embedded\.provisionprofile$ - - weight - 20 - - ^version\.plist$ - - weight - 20 - - - - diff --git a/Tests/Fixtures/TestProject/build.sh b/Tests/Fixtures/TestProject/build.sh index 19f44a14..a1e22bc4 100755 --- a/Tests/Fixtures/TestProject/build.sh +++ b/Tests/Fixtures/TestProject/build.sh @@ -4,10 +4,10 @@ set -e carthage bootstrap --cache-builds echo " ⚙️ Building iOS app" -xcodebuild -quiet -project Project.xcodeproj -scheme "App_iOS Test" -configuration "Test Debug" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO +xcodebuild -quiet -project Project.xcodeproj -scheme "App_iOS Test" -configuration "Test Debug" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGN_ENTITLEMENTS="" CODE_SIGNING_ALLOWED="NO" echo "✅ Successfully built iOS app" echo " ⚙️ Building macOS app" -xcodebuild -quiet -project Project.xcodeproj -scheme "App_macOS" -configuration "Test Debug" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO +xcodebuild -quiet -project Project.xcodeproj -scheme "App_macOS" -configuration "Test Debug" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGN_ENTITLEMENTS="" CODE_SIGNING_ALLOWED="NO" echo "✅ Successfully built macOS app" diff --git a/Tests/Fixtures/TestProject/project.yml b/Tests/Fixtures/TestProject/project.yml index 10fbc5aa..cb9ba10b 100644 --- a/Tests/Fixtures/TestProject/project.yml +++ b/Tests/Fixtures/TestProject/project.yml @@ -90,7 +90,6 @@ targets: weak: true - target: App_watchOS - target: iMessageApp - - framework: Vendor/SomeFramework.framework - sdk: Contacts.framework scheme: testTargets: 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/ProjectSpecTests.swift b/Tests/XcodeGenKitTests/ProjectSpecTests.swift index bbb4378a..a386d45a 100644 --- a/Tests/XcodeGenKitTests/ProjectSpecTests.swift +++ b/Tests/XcodeGenKitTests/ProjectSpecTests.swift @@ -76,7 +76,7 @@ class ProjectSpecTests: XCTestCase { ) $0.it("fails with invalid XcodeGen version") { - let minimumVersion = try Version("1.11.1") + let minimumVersion = Version("1.11.1") var project = baseProject project.options = SpecOptions(minimumXcodeGenVersion: minimumVersion) @@ -86,9 +86,9 @@ class ProjectSpecTests: XCTestCase { } } - try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: try Version("1.11.0")) - try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: try Version("1.10.99")) - try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: try Version("0.99")) + try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: Version("1.11.0")) + try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: Version("1.10.99")) + try expectMinimumXcodeGenVersionError(project, minimumVersion: minimumVersion, xcodeGenVersion: Version("0.99")) } $0.it("fails with invalid project") { diff --git a/Tests/XcodeGenKitTests/SourceGeneratorTests.swift b/Tests/XcodeGenKitTests/SourceGeneratorTests.swift index 0ac104ea..68eec0ce 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") { @@ -589,6 +589,30 @@ class SourceGeneratorTests: XCTestCase { "group2", ] } + + $0.it("adds missing optional files and folders") { + + let target = Target(name: "Test", type: .application, platform: .iOS, sources: [ + TargetSource(path: "File1.swift", optional: true), + TargetSource(path: "File2.swift", type: .file, optional: true), + TargetSource(path: "Group", type: .folder, optional: true), + ]) + let project = Project(basePath: directoryPath, name: "Test", targets: [target]) + let pbxProj = try project.generatePbxProj() + try pbxProj.expectFile(paths: ["File1.swift"]) + try pbxProj.expectFile(paths: ["File2.swift"]) + } + + $0.it("allows missing optional groups") { + + let target = Target(name: "Test", type: .application, platform: .iOS, sources: [ + TargetSource(path: "Group1", optional: true), + TargetSource(path: "Group2", type: .group, optional: true), + TargetSource(path: "Group3", type: .group, optional: true), + ]) + let project = Project(basePath: directoryPath, name: "Test", targets: [target]) + _ = try project.generatePbxProj() + } } } } @@ -609,7 +633,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 {