From 3cfd882f38891e352b6114573021b382468c88b1 Mon Sep 17 00:00:00 2001 From: Michael Housh Date: Tue, 24 Dec 2024 23:16:13 -0500 Subject: [PATCH] feat: Some variable renaming for consistency. --- .../CliClient/Internal/CliClient+run.swift | 20 +++++++++++-------- .../Internal/ConfigurationExtensions.swift | 16 +++++++-------- .../Internal/FileClient+semVar.swift | 2 +- Sources/CliClient/Internal/SemVar.swift | 2 +- .../ConfigurationClient/Configuration.swift | 7 +++++++ Tests/CliVersionTests/CliClientTests.swift | 5 ++++- 6 files changed, 33 insertions(+), 19 deletions(-) diff --git a/Sources/CliClient/Internal/CliClient+run.swift b/Sources/CliClient/Internal/CliClient+run.swift index 933d9be..f94fa61 100644 --- a/Sources/CliClient/Internal/CliClient+run.swift +++ b/Sources/CliClient/Internal/CliClient+run.swift @@ -94,20 +94,20 @@ public struct CurrentVersionContainer: Sendable { var usesOptionalType: Bool { switch version { case .string: return false - case let .semVar(_, usesOptionalType): return usesOptionalType + case let .semvar(_, usesOptionalType): return usesOptionalType } } public enum Version: Sendable { case string(String) - case semVar(SemVar, usesOptionalType: Bool = true) + case semvar(SemVar, usesOptionalType: Bool = true) func string(allowPreReleaseTag: Bool) throws -> String { switch self { case let .string(string): return string - case let .semVar(semVar, usesOptionalType: _): - return semVar.versionString(withPreReleaseTag: allowPreReleaseTag) + case let .semvar(semvar, usesOptionalType: _): + return semvar.versionString(withPreReleaseTag: allowPreReleaseTag) } } } @@ -131,14 +131,18 @@ extension CliClient.SharedOptions { @Dependency(\.logger) var logger switch container.version { - case .string: // When we did not parse a semVar, just write whatever we parsed for the current version. + case .string: // When we did not parse a semvar, just write whatever we parsed for the current version. logger.debug("Failed to parse semvar, but got current version string.") try await write(container) - case let .semVar(semVar, usesOptionalType: usesOptionalType): - logger.debug("Semvar prior to bumping: \(semVar)") - let bumped = semVar.bump(type, preRelease: nil) // preRelease is already set on semVar. + case let .semvar(semvar, usesOptionalType: usesOptionalType): + logger.debug("Semvar prior to bumping: \(semvar)") + let bumped = semvar.bump(type) let version = bumped.versionString(withPreReleaseTag: allowPreReleaseTag) + guard bumped != semvar else { + logger.debug("No change, skipping.") + return + } logger.debug("Bumped version: \(version)") let template = usesOptionalType ? Template.optional(version) : Template.build(version) try await write(template, to: container.targetUrl) diff --git a/Sources/CliClient/Internal/ConfigurationExtensions.swift b/Sources/CliClient/Internal/ConfigurationExtensions.swift index 2c2d8c0..56d8a4f 100644 --- a/Sources/CliClient/Internal/ConfigurationExtensions.swift +++ b/Sources/CliClient/Internal/ConfigurationExtensions.swift @@ -128,15 +128,15 @@ extension Configuration.PreRelease { @_spi(Internal) public extension Configuration.SemVar { - private func applyingPreRelease(_ semVar: SemVar, _ gitDirectory: String?) async throws -> SemVar { + private func applyingPreRelease(_ semvar: SemVar, _ gitDirectory: String?) async throws -> SemVar { @Dependency(\.logger) var logger - logger.trace("Start apply pre-release to: \(semVar)") + logger.trace("Start apply pre-release to: \(semvar)") guard let preReleaseStrategy = self.preRelease, let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory) else { logger.trace("No pre-release strategy, returning original semvar.") - return semVar + return semvar } // let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory) @@ -144,7 +144,7 @@ public extension Configuration.SemVar { switch preRelease { case let .suffix(string): - return semVar.applyingPreRelease(string) + return semvar.applyingPreRelease(string) case let .semvar(string): guard let semvar = SemVar(string: string) else { throw CliClientError.preReleaseParsingError(string) @@ -160,7 +160,7 @@ public extension Configuration.SemVar { @Dependency(\.gitClient) var gitClient @Dependency(\.logger) var logger - let fileOutput = try? await fileClient.semVar(file: file, gitDirectory: gitDirectory) + let fileOutput = try? await fileClient.semvar(file: file, gitDirectory: gitDirectory) var semVar = fileOutput?.semVar logger.trace("file output semvar: \(String(describing: semVar))") @@ -169,7 +169,7 @@ public extension Configuration.SemVar { // We parsed a semvar from the existing file, use it. if semVar != nil { - return try await .semVar( + return try await .semvar( applyingPreRelease(semVar!, gitDirectory), usesOptionalType: usesOptionalType ?? false ) @@ -189,7 +189,7 @@ public extension Configuration.SemVar { )).semVar if semVar != nil { - return try await .semVar( + return try await .semvar( applyingPreRelease(semVar!, gitDirectory), usesOptionalType: usesOptionalType ?? false ) @@ -202,7 +202,7 @@ public extension Configuration.SemVar { // Semvar doesn't exist, so create a new one. logger.trace("Generating new semvar.") - return try await .semVar( + return try await .semvar( applyingPreRelease(.init(), gitDirectory), usesOptionalType: usesOptionalType ?? false ) diff --git a/Sources/CliClient/Internal/FileClient+semVar.swift b/Sources/CliClient/Internal/FileClient+semVar.swift index fdbde13..a8d51c2 100644 --- a/Sources/CliClient/Internal/FileClient+semVar.swift +++ b/Sources/CliClient/Internal/FileClient+semVar.swift @@ -38,7 +38,7 @@ public extension FileClient { return (String(versionString), isOptional) } - func semVar( + func semvar( file: URL, gitDirectory: String? ) async throws -> (semVar: SemVar?, usesOptionalType: Bool) { diff --git a/Sources/CliClient/Internal/SemVar.swift b/Sources/CliClient/Internal/SemVar.swift index e4e0d7d..17db3bf 100644 --- a/Sources/CliClient/Internal/SemVar.swift +++ b/Sources/CliClient/Internal/SemVar.swift @@ -90,7 +90,7 @@ public struct SemVar: CustomStringConvertible, Equatable, Sendable { } // Bumps the sem-var by the given option (major, minor, patch) - public func bump(_ option: CliClient.BumpOption, preRelease: String?) -> Self { + public func bump(_ option: CliClient.BumpOption, preRelease: String? = nil) -> Self { switch option { case .major: return .init( diff --git a/Sources/ConfigurationClient/Configuration.swift b/Sources/ConfigurationClient/Configuration.swift index f82b2f5..39e0ddb 100644 --- a/Sources/ConfigurationClient/Configuration.swift +++ b/Sources/ConfigurationClient/Configuration.swift @@ -68,6 +68,7 @@ public extension Configuration { struct PreRelease: Codable, Equatable, Sendable { public let prefix: String? + // TODO: Remove optional. public let strategy: Strategy? public init( @@ -81,6 +82,7 @@ public extension Configuration { public enum Strategy: Codable, Equatable, Sendable { case branch(includeCommitSha: Bool = true) case command(arguments: [String]) + // TODO: Remove. case gitTag public var branch: Branch? { @@ -116,6 +118,11 @@ public extension Configuration { self.requireExistingSemVar = requireExistingSemVar } + public enum Strategy: Codable, Equatable, Sendable { + case command(arguments: [String]) + case gitTag(exactMatch: Bool = false) + } + } /// Represents the target where we will bump the version in. diff --git a/Tests/CliVersionTests/CliClientTests.swift b/Tests/CliVersionTests/CliClientTests.swift index 7b35c73..0d8fdd5 100644 --- a/Tests/CliVersionTests/CliClientTests.swift +++ b/Tests/CliVersionTests/CliClientTests.swift @@ -41,7 +41,10 @@ struct CliClientTests { #expect(output == "/baz/Sources/bar/Version.swift") } assert: { string, _ in - #expect(string != nil) + if type != .preRelease { + #expect(string != nil) + } + let typeString = optional ? "String?" : "String" switch type {