File tree Expand file tree Collapse file tree 4 files changed +28
-22
lines changed Expand file tree Collapse file tree 4 files changed +28
-22
lines changed Original file line number Diff line number Diff 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}
Original file line number Diff line number Diff 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)
Original file line number Diff line number Diff 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)
Original file line number Diff line number Diff 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)
You can’t perform that action at this time.
0 commit comments