@@ -12,7 +12,7 @@ use clap::Parser;
1212use dsc_lib_registry:: { config:: Registry , RegistryHelper } ;
1313use rust_i18n:: t;
1414use schemars:: schema_for;
15- use std:: process:: exit ;
15+ use std:: process:: ExitCode ;
1616use tracing:: { error, trace} ;
1717use tracing_subscriber:: { filter:: LevelFilter , prelude:: __tracing_subscriber_SubscriberExt, EnvFilter , Layer } ;
1818use types:: RegistryList ;
@@ -24,12 +24,12 @@ mod types;
2424
2525rust_i18n:: i18n!( "locales" , fallback = "en-us" ) ;
2626
27- const EXIT_SUCCESS : i32 = 0 ;
28- const EXIT_INVALID_INPUT : i32 = 2 ;
29- const EXIT_REGISTRY_ERROR : i32 = 3 ;
27+ const EXIT_SUCCESS : u8 = 0 ;
28+ const EXIT_INVALID_INPUT : u8 = 2 ;
29+ const EXIT_REGISTRY_ERROR : u8 = 3 ;
3030
3131#[ allow( clippy:: too_many_lines) ]
32- fn main ( ) {
32+ fn main ( ) -> ExitCode {
3333 #[ cfg( debug_assertions) ]
3434 check_debug ( ) ;
3535
@@ -45,17 +45,17 @@ fn main() {
4545 AdapterSubCommand :: Set { input, adapted_resource } => {
4646 if let Err ( e) = adapter_set ( & input, & adapted_resource) {
4747 error ! ( "{e}" ) ;
48- exit ( EXIT_REGISTRY_ERROR ) ;
48+ return ExitCode :: from ( EXIT_REGISTRY_ERROR ) ;
4949 }
50- exit ( EXIT_SUCCESS ) ;
50+ return ExitCode :: from ( EXIT_SUCCESS ) ;
5151 } ,
5252 AdapterSubCommand :: Export { input, adapted_resource } => {
5353 adapter_export ( & input, & adapted_resource)
5454 } ,
5555 AdapterSubCommand :: Schema => {
5656 let schema = schema_for ! ( AdaptedRegistryValue ) ;
5757 println ! ( "{}" , serde_json:: to_string( & schema) . unwrap( ) ) ;
58- exit ( EXIT_SUCCESS ) ;
58+ return ExitCode :: from ( EXIT_SUCCESS ) ;
5959 }
6060 } ;
6161 match result {
@@ -64,7 +64,7 @@ fn main() {
6464 } ,
6565 Err ( err) => {
6666 error ! ( "{err}" ) ;
67- exit ( EXIT_INVALID_INPUT ) ;
67+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
6868 }
6969 }
7070 } ,
@@ -85,13 +85,15 @@ fn main() {
8585 ConfigSubCommand :: Get { input, list} => {
8686 trace ! ( "Get input: {input}" ) ;
8787 let mut output = RegistryList { registry_entries : vec ! [ ] , registry_file_path : None } ;
88- let reg_list = import_input ( & input, list) ;
88+ let Ok ( reg_list) = import_input ( & input, list) else {
89+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
90+ } ;
8991 for reg in reg_list. registry_entries {
9092 let reg_helper = match RegistryHelper :: new_from_registry ( & reg) {
9193 Ok ( helper) => helper,
9294 Err ( err) => {
9395 error ! ( "{err}" ) ;
94- exit ( EXIT_INVALID_INPUT ) ;
96+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
9597 }
9698 } ;
9799 match reg_helper. get ( ) {
@@ -101,29 +103,31 @@ fn main() {
101103 } else {
102104 let json = serde_json:: to_string ( & reg_config) . unwrap ( ) ;
103105 println ! ( "{json}" ) ;
104- exit ( EXIT_SUCCESS ) ;
106+ return ExitCode :: from ( EXIT_SUCCESS ) ;
105107 }
106108 } ,
107109 Err ( err) => {
108110 error ! ( "{err}" ) ;
109- exit ( EXIT_REGISTRY_ERROR ) ;
111+ return ExitCode :: from ( EXIT_REGISTRY_ERROR ) ;
110112 }
111113 }
112114 }
113115 let json = serde_json:: to_string ( & output) . unwrap ( ) ;
114116 println ! ( "{json}" ) ;
115- exit ( EXIT_SUCCESS ) ;
117+ return ExitCode :: from ( EXIT_SUCCESS ) ;
116118 } ,
117119 ConfigSubCommand :: Set { input, list, what_if} => {
118120 trace ! ( "Set input: {input}, what_if: {what_if}" ) ;
119121 let mut output = RegistryList { registry_entries : vec ! [ ] , registry_file_path : None } ;
120- let reg_list = import_input ( & input, list) ;
122+ let Ok ( reg_list) = import_input ( & input, list) else {
123+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
124+ } ;
121125 for reg in reg_list. registry_entries {
122126 let mut reg_helper = match RegistryHelper :: new_from_registry ( & reg) {
123127 Ok ( helper) => helper,
124128 Err ( err) => {
125129 error ! ( "{err}" ) ;
126- exit ( EXIT_INVALID_INPUT ) ;
130+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
127131 }
128132 } ;
129133 if what_if { reg_helper. enable_what_if ( ) ; }
@@ -136,14 +140,14 @@ fn main() {
136140 } else {
137141 let json = serde_json:: to_string ( & reg_config) . unwrap ( ) ;
138142 println ! ( "{json}" ) ;
139- exit ( EXIT_SUCCESS ) ;
143+ return ExitCode :: from ( EXIT_SUCCESS ) ;
140144 }
141145 }
142146 } ,
143147 Ok ( None ) => { } ,
144148 Err ( err) => {
145149 error ! ( "{err}" ) ;
146- exit ( EXIT_REGISTRY_ERROR ) ;
150+ return ExitCode :: from ( EXIT_REGISTRY_ERROR ) ;
147151 }
148152 }
149153 continue ;
@@ -156,32 +160,32 @@ fn main() {
156160 } else {
157161 let json = serde_json:: to_string ( & config) . unwrap ( ) ;
158162 println ! ( "{json}" ) ;
159- exit ( EXIT_SUCCESS ) ;
163+ return ExitCode :: from ( EXIT_SUCCESS ) ;
160164 }
161165 }
162166 if !list {
163- exit ( EXIT_SUCCESS ) ;
167+ return ExitCode :: from ( EXIT_SUCCESS ) ;
164168 }
165169 } ,
166170 Err ( err) => {
167171 error ! ( "{err}" ) ;
168- exit ( EXIT_REGISTRY_ERROR ) ;
172+ return ExitCode :: from ( EXIT_REGISTRY_ERROR ) ;
169173 }
170174 }
171175 }
172176 if what_if {
173177 let json = serde_json:: to_string ( & output) . unwrap ( ) ;
174178 println ! ( "{json}" ) ;
175179 }
176- exit ( EXIT_SUCCESS ) ;
180+ return ExitCode :: from ( EXIT_SUCCESS ) ;
177181 } ,
178182 ConfigSubCommand :: Delete { input, what_if} => {
179183 trace ! ( "Delete input: {input}, what_if: {what_if}" ) ;
180184 let mut reg_helper = match RegistryHelper :: new_from_json ( & input) {
181185 Ok ( reg_helper) => reg_helper,
182186 Err ( err) => {
183187 error ! ( "{err}" ) ;
184- exit ( EXIT_INVALID_INPUT ) ;
188+ return ExitCode :: from ( EXIT_INVALID_INPUT ) ;
185189 }
186190 } ;
187191 if what_if { reg_helper. enable_what_if ( ) ; }
@@ -193,7 +197,7 @@ fn main() {
193197 Ok ( None ) => { } ,
194198 Err ( err) => {
195199 error ! ( "{err}" ) ;
196- exit ( EXIT_REGISTRY_ERROR ) ;
200+ return ExitCode :: from ( EXIT_REGISTRY_ERROR ) ;
197201 }
198202 }
199203 } ,
@@ -210,10 +214,10 @@ fn main() {
210214 } ,
211215 }
212216
213- exit ( EXIT_SUCCESS ) ;
217+ ExitCode :: from ( EXIT_SUCCESS )
214218}
215219
216- fn import_input ( input : & str , list : bool ) -> RegistryList {
220+ fn import_input ( input : & str , list : bool ) -> Result < RegistryList , ExitCode > {
217221 if list {
218222 match serde_json:: from_str :: < RegistryList > ( input) {
219223 Ok ( mut reg_list) => {
@@ -225,19 +229,19 @@ fn import_input(input: &str, list: bool) -> RegistryList {
225229 }
226230 }
227231 }
228- reg_list
232+ Ok ( reg_list)
229233 } ,
230234 Err ( err) => {
231235 error ! ( "{err}" ) ;
232- exit ( EXIT_INVALID_INPUT ) ;
236+ Err ( ExitCode :: from ( EXIT_INVALID_INPUT ) )
233237 }
234238 }
235239 } else {
236240 match serde_json:: from_str :: < Registry > ( input) {
237- Ok ( reg) => RegistryList { registry_entries : vec ! [ reg] , registry_file_path : None } ,
241+ Ok ( reg) => Ok ( RegistryList { registry_entries : vec ! [ reg] , registry_file_path : None } ) ,
238242 Err ( err) => {
239243 error ! ( "{err}" ) ;
240- exit ( EXIT_INVALID_INPUT ) ;
244+ Err ( ExitCode :: from ( EXIT_INVALID_INPUT ) )
241245 }
242246 }
243247 }
0 commit comments