feat: Some variable renaming for consistency.
All checks were successful
CI / Ubuntu (push) Successful in 2m58s
All checks were successful
CI / Ubuntu (push) Successful in 2m58s
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user