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 {
|
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)
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user