Skip to content

Commit bc919f7

Browse files
committed
add global progress flag
1 parent 54e6be4 commit bc919f7

File tree

4 files changed

+28
-22
lines changed

4 files changed

+28
-22
lines changed

Sources/ContainerClient/Flags.swift

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,4 +200,16 @@ public struct Flags {
200200
)
201201
public var virtualization: Bool = false
202202
}
203+
204+
public struct Progress: ParsableArguments {
205+
public init() {}
206+
207+
public enum ProgressType: String, ExpressibleByArgument {
208+
case none
209+
case ansi
210+
}
211+
212+
@Option(name: .long, help: ArgumentHelp("Progress type (format: none|ansi)", valueName: "type"))
213+
public var progress: ProgressType = .ansi
214+
}
203215
}

Sources/ContainerCommands/Container/ContainerRun.swift

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ extension Application {
4343

4444
@OptionGroup(title: "Registry options")
4545
var registryFlags: Flags.Registry
46-
47-
@Option(name: .long, help: ArgumentHelp("Progress type (format: none|ansi)", valueName: "type"))
48-
var progress: String = "ansi"
46+
47+
@OptionGroup
48+
var progress: Flags.Progress
4949

5050
@OptionGroup
5151
var global: Flags.Global
@@ -61,17 +61,15 @@ extension Application {
6161
let id = Utility.createContainerID(name: self.managementFlags.name)
6262

6363
var progressConfig: ProgressConfig
64-
switch self.progress {
65-
case "none": progressConfig = try ProgressConfig(disableProgressUpdates: true)
66-
case "ansi":
64+
switch self.progress.progress {
65+
case .none: progressConfig = try ProgressConfig(disableProgressUpdates: true)
66+
case .ansi:
6767
progressConfig = try ProgressConfig(
6868
showTasks: true,
6969
showItems: true,
7070
ignoreSmallSize: true,
7171
totalTasks: 6
7272
)
73-
default:
74-
throw ContainerizationError(.invalidArgument, message: "invalid progress mode \(self.progress)")
7573
}
7674

7775
let progress = ProgressBar(config: progressConfig)

Sources/ContainerCommands/Image/ImagePull.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ extension Application {
3434
@OptionGroup
3535
var registry: Flags.Registry
3636

37-
@Option(name: .long, help: ArgumentHelp("Progress type (format: none|ansi)", valueName: "type"))
38-
var progress: String = "ansi"
37+
@OptionGroup
38+
var progress: Flags.Progress
3939

4040
@Option(
4141
name: .shortAndLong,
@@ -79,17 +79,15 @@ extension Application {
7979
let processedReference = try ClientImage.normalizeReference(reference)
8080

8181
var progressConfig: ProgressConfig
82-
switch self.progress {
83-
case "none": progressConfig = try ProgressConfig(disableProgressUpdates: true)
84-
case "ansi":
82+
switch self.progress.progress {
83+
case .none: progressConfig = try ProgressConfig(disableProgressUpdates: true)
84+
case .ansi:
8585
progressConfig = try ProgressConfig(
8686
showTasks: true,
8787
showItems: true,
8888
ignoreSmallSize: true,
8989
totalTasks: 2
9090
)
91-
default:
92-
throw ContainerizationError(.invalidArgument, message: "invalid progress mode \(self.progress)")
9391
}
9492

9593
let progress = ProgressBar(config: progressConfig)

Sources/ContainerCommands/Image/ImagePush.swift

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ extension Application {
3131
@OptionGroup
3232
var registry: Flags.Registry
3333

34-
@Option(name: .long, help: ArgumentHelp("Progress type (format: none|ansi)", valueName: "type"))
35-
var progress: String = "ansi"
34+
@OptionGroup
35+
var progress: Flags.Progress
3636

3737
@Option(
3838
name: [.customLong("arch"), .customShort("a")],
@@ -69,18 +69,16 @@ extension Application {
6969
let image = try await ClientImage.get(reference: reference)
7070

7171
var progressConfig: ProgressConfig
72-
switch self.progress {
73-
case "none": progressConfig = try ProgressConfig(disableProgressUpdates: true)
74-
case "ansi":
72+
switch self.progress.progress {
73+
case .none: progressConfig = try ProgressConfig(disableProgressUpdates: true)
74+
case .ansi:
7575
progressConfig = try ProgressConfig(
7676
description: "Pushing image \(image.reference)",
7777
itemsName: "blobs",
7878
showItems: true,
7979
showSpeed: false,
8080
ignoreSmallSize: true
8181
)
82-
default:
83-
throw ContainerizationError(.invalidArgument, message: "invalid progress mode \(self.progress)")
8482
}
8583

8684
let progress = ProgressBar(config: progressConfig)

0 commit comments

Comments
 (0)