diff --git a/Sources/Swiftly/Config.swift b/Sources/Swiftly/Config.swift index 0e8547c1..83eaaca5 100644 --- a/Sources/Swiftly/Config.swift +++ b/Sources/Swiftly/Config.swift @@ -9,12 +9,13 @@ public struct Config: Codable, Equatable, Sendable { public var inUse: ToolchainVersion? public var installedToolchains: Set public var platform: PlatformDefinition - public var version: SwiftlyVersion? + public var version: SwiftlyVersion - init(inUse: ToolchainVersion?, installedToolchains: Set, platform: PlatformDefinition) { + init(inUse: ToolchainVersion?, installedToolchains: Set, platform: PlatformDefinition, version: SwiftlyVersion) { self.inUse = inUse self.installedToolchains = installedToolchains self.platform = platform + self.version = version } private static func makeEncoder() -> JSONEncoder { @@ -28,12 +29,8 @@ public struct Config: Codable, Equatable, Sendable { do { let configFile = Swiftly.currentPlatform.swiftlyConfigFile(ctx) let data = try await fs.cat(atPath: configFile) - var config = try JSONDecoder().decode(Config.self, from: data) - if config.version == nil { - // Assume that the version of swiftly is 0.3.0 because that is the last - // unversioned release. - config.version = try? SwiftlyVersion(parsing: "0.3.0") - } + let config = try JSONDecoder().decode(Config.self, from: data) + return config } catch { let msg = """ diff --git a/Sources/Swiftly/Init.swift b/Sources/Swiftly/Init.swift index 60185699..d7d46b6e 100644 --- a/Sources/Swiftly/Init.swift +++ b/Sources/Swiftly/Init.swift @@ -48,7 +48,7 @@ struct Init: SwiftlyCommand { ( config.version == SwiftlyVersion(major: 0, minor: 4, patch: 0, suffix: "dev") || config.version == SwiftlyVersion(major: 0, minor: 4, patch: 0) || - (config.version?.major == 1 && config.version?.minor == 0) + (config.version.major == 1 && config.version.minor == 0) ) { // This is a simple upgrade from the 0.4.0 pre-releases, or 1.x @@ -178,9 +178,8 @@ struct Init: SwiftlyCommand { // Force the configuration to be present. Generate it if it doesn't already exist or overwrite is set if overwrite || config == nil { let pd = try await Swiftly.currentPlatform.detectPlatform(ctx, disableConfirmation: assumeYes, platform: platform) - var c = Config(inUse: nil, installedToolchains: [], platform: pd) - // Stamp the current version of swiftly on this config - c.version = SwiftlyCore.version + let c = Config(inUse: nil, installedToolchains: [], platform: pd, version: SwiftlyCore.version) + try c.save(ctx) config = c }