feat: Some variable renaming for consistency.
All checks were successful
CI / Ubuntu (push) Successful in 2m58s

This commit is contained in:
2024-12-24 23:16:13 -05:00
parent a885e3dfa3
commit 3cfd882f38
6 changed files with 33 additions and 19 deletions

View File

@@ -94,20 +94,20 @@ public struct CurrentVersionContainer: Sendable {
var usesOptionalType: Bool { var usesOptionalType: Bool {
switch version { switch version {
case .string: return false case .string: return false
case let .semVar(_, usesOptionalType): return usesOptionalType case let .semvar(_, usesOptionalType): return usesOptionalType
} }
} }
public enum Version: Sendable { public enum Version: Sendable {
case string(String) case string(String)
case semVar(SemVar, usesOptionalType: Bool = true) case semvar(SemVar, usesOptionalType: Bool = true)
func string(allowPreReleaseTag: Bool) throws -> String { func string(allowPreReleaseTag: Bool) throws -> String {
switch self { switch self {
case let .string(string): case let .string(string):
return string return string
case let .semVar(semVar, usesOptionalType: _): case let .semvar(semvar, usesOptionalType: _):
return semVar.versionString(withPreReleaseTag: allowPreReleaseTag) return semvar.versionString(withPreReleaseTag: allowPreReleaseTag)
} }
} }
} }
@@ -131,14 +131,18 @@ extension CliClient.SharedOptions {
@Dependency(\.logger) var logger @Dependency(\.logger) var logger
switch container.version { 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.") logger.debug("Failed to parse semvar, but got current version string.")
try await write(container) try await write(container)
case let .semVar(semVar, usesOptionalType: usesOptionalType): case let .semvar(semvar, usesOptionalType: usesOptionalType):
logger.debug("Semvar prior to bumping: \(semVar)") logger.debug("Semvar prior to bumping: \(semvar)")
let bumped = semVar.bump(type, preRelease: nil) // preRelease is already set on semVar. let bumped = semvar.bump(type)
let version = bumped.versionString(withPreReleaseTag: allowPreReleaseTag) let version = bumped.versionString(withPreReleaseTag: allowPreReleaseTag)
guard bumped != semvar else {
logger.debug("No change, skipping.")
return
}
logger.debug("Bumped version: \(version)") logger.debug("Bumped version: \(version)")
let template = usesOptionalType ? Template.optional(version) : Template.build(version) let template = usesOptionalType ? Template.optional(version) : Template.build(version)
try await write(template, to: container.targetUrl) try await write(template, to: container.targetUrl)

View File

@@ -128,15 +128,15 @@ extension Configuration.PreRelease {
@_spi(Internal) @_spi(Internal)
public extension Configuration.SemVar { 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 @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, guard let preReleaseStrategy = self.preRelease,
let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory) let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory)
else { else {
logger.trace("No pre-release strategy, returning original semvar.") logger.trace("No pre-release strategy, returning original semvar.")
return semVar return semvar
} }
// let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory) // let preRelease = try await preReleaseStrategy.preReleaseString(gitDirectory: gitDirectory)
@@ -144,7 +144,7 @@ public extension Configuration.SemVar {
switch preRelease { switch preRelease {
case let .suffix(string): case let .suffix(string):
return semVar.applyingPreRelease(string) return semvar.applyingPreRelease(string)
case let .semvar(string): case let .semvar(string):
guard let semvar = SemVar(string: string) else { guard let semvar = SemVar(string: string) else {
throw CliClientError.preReleaseParsingError(string) throw CliClientError.preReleaseParsingError(string)
@@ -160,7 +160,7 @@ public extension Configuration.SemVar {
@Dependency(\.gitClient) var gitClient @Dependency(\.gitClient) var gitClient
@Dependency(\.logger) var logger @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 var semVar = fileOutput?.semVar
logger.trace("file output semvar: \(String(describing: 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. // We parsed a semvar from the existing file, use it.
if semVar != nil { if semVar != nil {
return try await .semVar( return try await .semvar(
applyingPreRelease(semVar!, gitDirectory), applyingPreRelease(semVar!, gitDirectory),
usesOptionalType: usesOptionalType ?? false usesOptionalType: usesOptionalType ?? false
) )
@@ -189,7 +189,7 @@ public extension Configuration.SemVar {
)).semVar )).semVar
if semVar != nil { if semVar != nil {
return try await .semVar( return try await .semvar(
applyingPreRelease(semVar!, gitDirectory), applyingPreRelease(semVar!, gitDirectory),
usesOptionalType: usesOptionalType ?? false usesOptionalType: usesOptionalType ?? false
) )
@@ -202,7 +202,7 @@ public extension Configuration.SemVar {
// Semvar doesn't exist, so create a new one. // Semvar doesn't exist, so create a new one.
logger.trace("Generating new semvar.") logger.trace("Generating new semvar.")
return try await .semVar( return try await .semvar(
applyingPreRelease(.init(), gitDirectory), applyingPreRelease(.init(), gitDirectory),
usesOptionalType: usesOptionalType ?? false usesOptionalType: usesOptionalType ?? false
) )

View File

@@ -38,7 +38,7 @@ public extension FileClient {
return (String(versionString), isOptional) return (String(versionString), isOptional)
} }
func semVar( func semvar(
file: URL, file: URL,
gitDirectory: String? gitDirectory: String?
) async throws -> (semVar: SemVar?, usesOptionalType: Bool) { ) async throws -> (semVar: SemVar?, usesOptionalType: Bool) {

View File

@@ -90,7 +90,7 @@ public struct SemVar: CustomStringConvertible, Equatable, Sendable {
} }
// Bumps the sem-var by the given option (major, minor, patch) // 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 { switch option {
case .major: case .major:
return .init( return .init(

View File

@@ -68,6 +68,7 @@ public extension Configuration {
struct PreRelease: Codable, Equatable, Sendable { struct PreRelease: Codable, Equatable, Sendable {
public let prefix: String? public let prefix: String?
// TODO: Remove optional.
public let strategy: Strategy? public let strategy: Strategy?
public init( public init(
@@ -81,6 +82,7 @@ public extension Configuration {
public enum Strategy: Codable, Equatable, Sendable { public enum Strategy: Codable, Equatable, Sendable {
case branch(includeCommitSha: Bool = true) case branch(includeCommitSha: Bool = true)
case command(arguments: [String]) case command(arguments: [String])
// TODO: Remove.
case gitTag case gitTag
public var branch: Branch? { public var branch: Branch? {
@@ -116,6 +118,11 @@ public extension Configuration {
self.requireExistingSemVar = requireExistingSemVar 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. /// Represents the target where we will bump the version in.

View File

@@ -41,7 +41,10 @@ struct CliClientTests {
#expect(output == "/baz/Sources/bar/Version.swift") #expect(output == "/baz/Sources/bar/Version.swift")
} assert: { string, _ in } assert: { string, _ in
#expect(string != nil) if type != .preRelease {
#expect(string != nil)
}
let typeString = optional ? "String?" : "String" let typeString = optional ? "String?" : "String"
switch type { switch type {