Skip to content

Commit d98bf7f

Browse files
feat: move version check inside validateSwiftly
1 parent 8e699e4 commit d98bf7f

File tree

9 files changed

+30
-58
lines changed

9 files changed

+30
-58
lines changed

Sources/Swiftly/Install.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,9 @@ struct Install: SwiftlyCommand {
7777
}
7878

7979
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
80-
try validateSwiftly(ctx)
81-
82-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
83-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
80+
let versionUpdateReminder = try await validateSwiftly(ctx)
8481
defer {
85-
if shouldUpdateSwiftly {
86-
ctx.print("A new release of swiftly is available")
87-
ctx.print("Please run `swiftly self-update` to update.")
88-
}
82+
versionUpdateReminder()
8983
}
9084

9185
var config = try Config.load(ctx)

Sources/Swiftly/List.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,9 @@ struct List: SwiftlyCommand {
3838
}
3939

4040
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
41-
try validateSwiftly(ctx)
42-
43-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
44-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
41+
let versionUpdateReminder = try await validateSwiftly(ctx)
4542
defer {
46-
if shouldUpdateSwiftly {
47-
ctx.print("A new release of swiftly is available")
48-
ctx.print("Please run `swiftly self-update` to update.")
49-
}
43+
versionUpdateReminder()
5044
}
5145

5246
let selector = try self.toolchainSelector.map { input in

Sources/Swiftly/ListAvailable.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,9 @@ struct ListAvailable: SwiftlyCommand {
4444
}
4545

4646
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
47-
try validateSwiftly(ctx)
48-
49-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
50-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
47+
let versionUpdateReminder = try await validateSwiftly(ctx)
5148
defer {
52-
if shouldUpdateSwiftly {
53-
ctx.print("A new release of swiftly is available")
54-
ctx.print("Please run `swiftly self-update` to update.")
55-
}
49+
versionUpdateReminder()
5650
}
5751

5852
let selector = try self.toolchainSelector.map { input in

Sources/Swiftly/Run.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,9 @@ struct Run: SwiftlyCommand {
5858
}
5959

6060
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
61-
try validateSwiftly(ctx)
62-
63-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
64-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
61+
let versionUpdateReminder = try await validateSwiftly(ctx)
6562
defer {
66-
if shouldUpdateSwiftly {
67-
ctx.print("A new release of swiftly is available")
68-
ctx.print("Please run `swiftly self-update` to update.")
69-
}
63+
versionUpdateReminder()
7064
}
7165

7266
// Handle the specific case where help is requested of the run subcommand

Sources/Swiftly/SelfUpdate.swift

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ struct SelfUpdate: SwiftlyCommand {
2121
}
2222

2323
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
24-
try validateSwiftly(ctx)
24+
let versionUpdateReminder = try await validateSwiftly(ctx)
25+
defer {
26+
versionUpdateReminder()
27+
}
2528

2629
let swiftlyBin = Swiftly.currentPlatform.swiftlyBinDir(ctx).appendingPathComponent("swiftly")
2730
guard FileManager.default.fileExists(atPath: swiftlyBin.path) else {

Sources/Swiftly/Swiftly.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ extension Data {
8080
}
8181

8282
extension SwiftlyCommand {
83-
public mutating func validateSwiftly(_ ctx: SwiftlyCoreContext) throws {
83+
public mutating func validateSwiftly(_ ctx: SwiftlyCoreContext) async throws -> () -> Void {
8484
for requiredDir in Swiftly.requiredDirectories(ctx) {
8585
guard requiredDir.fileExists() else {
8686
do {
@@ -94,5 +94,16 @@ extension SwiftlyCommand {
9494

9595
// Verify that the configuration exists and can be loaded
9696
_ = try Config.load(ctx)
97+
98+
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
99+
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
100+
101+
return {
102+
if shouldUpdateSwiftly {
103+
ctx.print("----------------------------")
104+
ctx.print("A new release of swiftly is available")
105+
ctx.print("Please run `swiftly self-update` to update.")
106+
}
107+
}
97108
}
98109
}

Sources/Swiftly/Uninstall.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,9 @@ struct Uninstall: SwiftlyCommand {
4848
}
4949

5050
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
51-
try validateSwiftly(ctx)
52-
53-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
54-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
51+
let versionUpdateReminder = try await validateSwiftly(ctx)
5552
defer {
56-
if shouldUpdateSwiftly {
57-
ctx.print("A new release of swiftly is available")
58-
ctx.print("Please run `swiftly self-update` to update.")
59-
}
53+
versionUpdateReminder()
6054
}
6155

6256
let startingConfig = try Config.load(ctx)

Sources/Swiftly/Update.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,9 @@ struct Update: SwiftlyCommand {
8282
}
8383

8484
public mutating func run(_ ctx: SwiftlyCoreContext) async throws {
85-
try validateSwiftly(ctx)
86-
87-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
88-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
85+
let versionUpdateReminder = try await validateSwiftly(ctx)
8986
defer {
90-
if shouldUpdateSwiftly {
91-
ctx.print("A new release of swiftly is available")
92-
ctx.print("Please run `swiftly self-update` to update.")
93-
}
87+
versionUpdateReminder()
9488
}
9589

9690
var config = try Config.load(ctx)

Sources/Swiftly/Use.swift

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,9 @@ struct Use: SwiftlyCommand {
5959
}
6060

6161
mutating func run(_ ctx: SwiftlyCoreContext) async throws {
62-
try validateSwiftly(ctx)
63-
64-
let swiftlyRelease = try await ctx.httpClient.getCurrentSwiftlyRelease()
65-
let shouldUpdateSwiftly = try swiftlyRelease.swiftlyVersion > SwiftlyCore.version
62+
let versionUpdateReminder = try await validateSwiftly(ctx)
6663
defer {
67-
if shouldUpdateSwiftly {
68-
ctx.print("A new release of swiftly is available")
69-
ctx.print("Please run `swiftly self-update` to update.")
70-
}
64+
versionUpdateReminder()
7165
}
7266

7367
var config = try Config.load(ctx)

0 commit comments

Comments
 (0)