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 {
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)

View File

@@ -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
)

View File

@@ -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) {

View File

@@ -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(

View File

@@ -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.

View File

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