From 87502ec4a663c1ab67760afddc7833e4598c4346 Mon Sep 17 00:00:00 2001 From: 417-72KI <417.72ki@gmail.com> Date: Wed, 18 May 2022 17:37:19 +0900 Subject: [PATCH 1/5] add macOS platform version to master package description --- .../PackageGenerator.swift | 17 +++++++++++++++- .../PackageManager.swift | 20 +++++++++++++++++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/Sources/DangerDependenciesResolver/PackageGenerator.swift b/Sources/DangerDependenciesResolver/PackageGenerator.swift index f9c13794..f4070235 100644 --- a/Sources/DangerDependenciesResolver/PackageGenerator.swift +++ b/Sources/DangerDependenciesResolver/PackageGenerator.swift @@ -23,14 +23,17 @@ struct PackageGenerator { } } - func generateMasterPackageDescription(forSwiftToolsVersion toolsVersion: Version) throws { + func generateMasterPackageDescription(forSwiftToolsVersion toolsVersion: Version, + macOSVersion: Version) throws { let header = makePackageDescriptionHeader(forSwiftToolsVersion: toolsVersion) let packages = packageListMaker.makePackageList() + let platform = makeSupportedPlatform(forMacOSVersion: macOSVersion) var description = "\(header)\n\n" + "import PackageDescription\n\n" + "let package = Package(\n" + " name: \"\(masterPackageName)\",\n" + + (platform.isEmpty ? "" : " platforms: [\(platform)],\n") + " products: [.library(name: \"DangerDependencies\", " + "type: .dynamic, targets: [\"\(masterPackageName)\"])]," + "\n" + @@ -74,4 +77,16 @@ struct PackageGenerator { return "// swift-tools-version:\(swiftVersion)\n" + "// danger-dependency-generator-version:\(generationVersion)" } + + func makeSupportedPlatform(forMacOSVersion macOSVersion: Version) -> String { + if case .null = macOSVersion { return "" } + switch macOSVersion.major { + case 10 where (10...15).contains(macOSVersion.minor): + return ".macOS(.v10_\(macOSVersion.minor))" + case 11...: + return ".macOS(.v\(macOSVersion.major))" + default: + return "" + } + } } diff --git a/Sources/DangerDependenciesResolver/PackageManager.swift b/Sources/DangerDependenciesResolver/PackageManager.swift index 400b2ea2..34da94cc 100644 --- a/Sources/DangerDependenciesResolver/PackageManager.swift +++ b/Sources/DangerDependenciesResolver/PackageManager.swift @@ -143,8 +143,11 @@ public struct PackageManager { let toolsVersion = try resolveSwiftToolsVersion(executor: ShellExecutor(), onFolder: generatedFolder) let expectedHeader = packageGenerator.makePackageDescriptionHeader(forSwiftToolsVersion: toolsVersion) + let macOSVersion = resolveMacOSVersion(executor: ShellExecutor()) + guard masterDescription.hasPrefix(expectedHeader) else { - try packageGenerator.generateMasterPackageDescription(forSwiftToolsVersion: toolsVersion) + try packageGenerator.generateMasterPackageDescription(forSwiftToolsVersion: toolsVersion, + macOSVersion: macOSVersion) return try makePackageDescription(for: script) } @@ -160,10 +163,11 @@ public struct PackageManager { let executor = ShellExecutor() let toolsVersion = try resolveSwiftToolsVersion(executor: executor, onFolder: generatedFolder) + let macOSVersion = resolveMacOSVersion(executor: executor) try generatedFolder.createSubfolderIfNeeded(withName: "Sources/\(masterPackageName)") fileCreator.createFile(atPath: generatedFolder.appendingPath("Sources/\(masterPackageName)").appendingPath(fakeFile), contents: Data()) - try packageGenerator.generateMasterPackageDescription(forSwiftToolsVersion: toolsVersion) + try packageGenerator.generateMasterPackageDescription(forSwiftToolsVersion: toolsVersion, macOSVersion: macOSVersion) try executeSwiftCommand("package update", onFolder: generatedFolder, arguments: [], executor: executor) try generatedFolder.createSubfolderIfNeeded(withName: "Packages") } catch { @@ -179,6 +183,18 @@ public struct PackageManager { versionString = versionString?.onlyNumbersAndDots return Version(versionString ?? "") ?? .null } + + private func resolveMacOSVersion(executor: ShellExecutor) -> Version { + #if os(macOS) + var versionString = executor.execute("sw_vers", + arguments: ["-productVersion"]) + versionString = versionString.onlyNumbersAndDots ?? versionString + + return Version(versionString) ?? .null + #else + return .null + #endif + } } extension String { From 2d2deb07ac79088d65bcbf40631b1fc04a228b68 Mon Sep 17 00:00:00 2001 From: 417-72KI <417.72ki@gmail.com> Date: Wed, 18 May 2022 17:42:53 +0900 Subject: [PATCH 2/5] fix test case --- .../PackageGeneratorTests.swift | 6 +++--- .../testGeneratedPackageWhenThereAreDependencies.1.txt | 1 + ...ackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt | 1 + .../testGeneratedPackageWhenThereAreNoDependencies.1.txt | 1 + 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Tests/DangerDependenciesResolverTests/PackageGeneratorTests.swift b/Tests/DangerDependenciesResolverTests/PackageGeneratorTests.swift index e36216e9..11dcd665 100644 --- a/Tests/DangerDependenciesResolverTests/PackageGeneratorTests.swift +++ b/Tests/DangerDependenciesResolverTests/PackageGeneratorTests.swift @@ -17,7 +17,7 @@ final class PackageGeneratorTests: XCTestCase { packageListMaker: packageListMaker, fileCreator: spyFileCreator) - try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 0, 0)) + try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 0, 0), macOSVersion: .init(12, 0, 0)) assertSnapshot(matching: String(data: spyFileCreator.receivedContents!, encoding: .utf8)!, as: .lines) } @@ -34,7 +34,7 @@ final class PackageGeneratorTests: XCTestCase { packageListMaker: packageListMaker, fileCreator: spyFileCreator) - try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 0, 0)) + try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 0, 0), macOSVersion: .init(12, 0, 0)) assertSnapshot(matching: String(data: spyFileCreator.receivedContents!, encoding: .utf8)!, as: .lines) } @@ -51,7 +51,7 @@ final class PackageGeneratorTests: XCTestCase { packageListMaker: packageListMaker, fileCreator: spyFileCreator) - try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 2, 0)) + try generator.generateMasterPackageDescription(forSwiftToolsVersion: .init(5, 2, 0), macOSVersion: .init(12, 0, 0)) assertSnapshot(matching: String(data: spyFileCreator.receivedContents!, encoding: .utf8)!, as: .lines) } diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt index e86772d5..202f866e 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "PACKAGES", + platforms: [.macOS(.v12)], products: [.library(name: "DangerDependencies", type: .dynamic, targets: ["PACKAGES"])], dependencies: [ .package(url: "https://github.com/danger/dependency1", from: "1.0.0"), diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt index f16c1381..63a8d72e 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "PACKAGES", + platforms: [.macOS(.v12)], products: [.library(name: "DangerDependencies", type: .dynamic, targets: ["PACKAGES"])], dependencies: [ .package(name: "Dependency1", url: "https://github.com/danger/dependency1", from: "1.0.0"), diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt index 84269ce9..91d70f23 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt @@ -5,6 +5,7 @@ import PackageDescription let package = Package( name: "PACKAGES", + platforms: [.macOS(.v12)], products: [.library(name: "DangerDependencies", type: .dynamic, targets: ["PACKAGES"])], dependencies: [ From 8022e32b1bc0003c3b81fe81a288abe57476b887 Mon Sep 17 00:00:00 2001 From: 417-72KI <417.72ki@gmail.com> Date: Wed, 18 May 2022 17:54:26 +0900 Subject: [PATCH 3/5] zero-padding for semantic versioning --- Sources/DangerDependenciesResolver/PackageManager.swift | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/Sources/DangerDependenciesResolver/PackageManager.swift b/Sources/DangerDependenciesResolver/PackageManager.swift index 34da94cc..460c0e8c 100644 --- a/Sources/DangerDependenciesResolver/PackageManager.swift +++ b/Sources/DangerDependenciesResolver/PackageManager.swift @@ -189,7 +189,14 @@ public struct PackageManager { var versionString = executor.execute("sw_vers", arguments: ["-productVersion"]) versionString = versionString.onlyNumbersAndDots ?? versionString - + switch versionString.components(separatedBy: ".").count { + case 1: + versionString += ".0.0" + case 2: + versionString += ".0" + default: + break + } return Version(versionString) ?? .null #else return .null From 2da5092dbfb81f22002793c64cefb64d69b6ccdc Mon Sep 17 00:00:00 2001 From: 417-72KI <417.72ki@gmail.com> Date: Thu, 19 May 2022 17:11:52 +0900 Subject: [PATCH 4/5] bump danger-dependency-generator-version --- Sources/DangerDependenciesResolver/PackageGenerator.swift | 2 +- .../PackageGeneratorTests/testGeneratedDescriptionHeader.1.txt | 2 +- .../testGeneratedPackageWhenThereAreDependencies.1.txt | 2 +- ...tedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt | 2 +- .../testGeneratedPackageWhenThereAreNoDependencies.1.txt | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Sources/DangerDependenciesResolver/PackageGenerator.swift b/Sources/DangerDependenciesResolver/PackageGenerator.swift index f4070235..94db0174 100644 --- a/Sources/DangerDependenciesResolver/PackageGenerator.swift +++ b/Sources/DangerDependenciesResolver/PackageGenerator.swift @@ -72,7 +72,7 @@ struct PackageGenerator { func makePackageDescriptionHeader(forSwiftToolsVersion toolsVersion: Version) -> String { let swiftVersion = "\(toolsVersion.major).\(toolsVersion.minor)" - let generationVersion = 1 + let generationVersion = 2 return "// swift-tools-version:\(swiftVersion)\n" + "// danger-dependency-generator-version:\(generationVersion)" diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedDescriptionHeader.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedDescriptionHeader.1.txt index 93adb951..5400eac7 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedDescriptionHeader.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedDescriptionHeader.1.txt @@ -1,2 +1,2 @@ // swift-tools-version:4.2 -// danger-dependency-generator-version:1 \ No newline at end of file +// danger-dependency-generator-version:2 \ No newline at end of file diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt index 202f866e..0a7e3f81 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependencies.1.txt @@ -1,5 +1,5 @@ // swift-tools-version:5.0 -// danger-dependency-generator-version:1 +// danger-dependency-generator-version:2 import PackageDescription diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt index 63a8d72e..a0a1073b 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreDependenciesAndSwiftVersionIs5_2.1.txt @@ -1,5 +1,5 @@ // swift-tools-version:5.2 -// danger-dependency-generator-version:1 +// danger-dependency-generator-version:2 import PackageDescription diff --git a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt index 91d70f23..1920b11e 100644 --- a/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt +++ b/Tests/DangerDependenciesResolverTests/__Snapshots__/PackageGeneratorTests/testGeneratedPackageWhenThereAreNoDependencies.1.txt @@ -1,5 +1,5 @@ // swift-tools-version:5.0 -// danger-dependency-generator-version:1 +// danger-dependency-generator-version:2 import PackageDescription From 6240b06ff25327183b7d951d4d487cabb45b51f1 Mon Sep 17 00:00:00 2001 From: 417-72KI <417.72ki@gmail.com> Date: Sun, 29 May 2022 00:06:01 +0900 Subject: [PATCH 5/5] update CHANGELOG --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 32ea923b..177ab99a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,8 +13,9 @@ ## Master +- Add platform requirements on `danger-swift edit` [@417-72KI][] - [#518](https://github.com/danger/swift/pull/518) - Notify a new release on running danger-swift [@417-72KI][] - [#505](https://github.com/danger/swift/pull/505) -- Remove `swift-doc` from dependencies treee [@417-72KI][] - [#509](https://github.com/danger/swift/pull/509) +- Remove `swift-doc` from dependencies tree [@417-72KI][] - [#509](https://github.com/danger/swift/pull/509) - Generate docker image with swift 5.5.2 [@f-meloni][] - [#501](https://github.com/danger/swift/pull/501) - Extract dev dependencies to switch development and release easily [@417-72KI][] - [#491](https://github.com/danger/swift/pull/491)