1515// specific language governing permissions and limitations
1616// under the License.
1717
18- use std:: error:: Error ;
19-
2018use std:: process:: exit;
2119
2220use clap:: Parser ;
2321
2422use exitcode:: DATAERR ;
2523
24+ use exitcode:: OK ;
2625use selenium_manager:: config:: BooleanKey ;
2726use selenium_manager:: logger:: Logger ;
2827use selenium_manager:: REQUEST_TIMEOUT_SEC ;
@@ -101,7 +100,7 @@ struct Cli {
101100 clear_metadata : bool ,
102101}
103102
104- fn main ( ) -> Result < ( ) , Box < dyn Error > > {
103+ fn main ( ) {
105104 let cli = Cli :: parse ( ) ;
106105 let debug = cli. debug || BooleanKey ( "debug" , false ) . get_value ( ) ;
107106 let trace = cli. trace || BooleanKey ( "trace" , false ) . get_value ( ) ;
@@ -122,56 +121,39 @@ fn main() -> Result<(), Box<dyn Error>> {
122121 get_manager_by_browser ( browser_name) . unwrap_or_else ( |err| {
123122 log. error ( err) ;
124123 flush_and_exit ( DATAERR , & log) ;
125- exit ( DATAERR ) ;
126124 } )
127125 } else if !driver_name. is_empty ( ) {
128126 get_manager_by_driver ( driver_name) . unwrap_or_else ( |err| {
129127 log. error ( err) ;
130128 flush_and_exit ( DATAERR , & log) ;
131- exit ( DATAERR ) ;
132129 } )
133130 } else {
134131 log. error ( "You need to specify a browser or driver" . to_string ( ) ) ;
135132 flush_and_exit ( DATAERR , & log) ;
136- exit ( DATAERR ) ;
137133 } ;
138134
139135 selenium_manager. set_logger ( log) ;
140136 selenium_manager. set_browser_version ( cli. browser_version . unwrap_or_default ( ) ) ;
141137 selenium_manager. set_driver_version ( cli. driver_version . unwrap_or_default ( ) ) ;
142138 selenium_manager. set_browser_path ( cli. browser_path . unwrap_or_default ( ) ) ;
143- match selenium_manager. set_timeout ( cli. timeout ) {
144- Ok ( _) => { }
145- Err ( err) => {
146- selenium_manager. get_logger ( ) . error ( err) ;
147- flush_and_exit ( DATAERR , selenium_manager. get_logger ( ) ) ;
148- }
149- }
150- match selenium_manager. set_proxy ( cli. proxy . unwrap_or_default ( ) ) {
151- Ok ( _) => { }
152- Err ( err) => {
153- selenium_manager. get_logger ( ) . error ( err) ;
154- flush_and_exit ( DATAERR , selenium_manager. get_logger ( ) ) ;
155- }
156- }
157-
158- match selenium_manager. resolve_driver ( ) {
159- Ok ( driver_path) => {
160- selenium_manager
161- . get_logger ( )
162- . info ( driver_path. display ( ) . to_string ( ) ) ;
163- flush_and_exit ( 0 , selenium_manager. get_logger ( ) ) ;
164- }
165- Err ( err) => {
166- selenium_manager. get_logger ( ) . error ( err. to_string ( ) ) ;
167- flush_and_exit ( DATAERR , selenium_manager. get_logger ( ) ) ;
168- }
169- } ;
170139
171- Ok ( ( ) )
140+ selenium_manager
141+ . set_timeout ( cli. timeout )
142+ . and_then ( |_| selenium_manager. set_proxy ( cli. proxy . unwrap_or_default ( ) ) )
143+ . and_then ( |_| selenium_manager. resolve_driver ( ) . map_err ( |x| x. to_string ( ) ) )
144+ . and_then ( |path| {
145+ let log = selenium_manager. get_logger ( ) ;
146+ log. info ( path. display ( ) . to_string ( ) ) ;
147+ flush_and_exit ( OK , & log) ;
148+ } )
149+ . unwrap_or_else ( |err| {
150+ let log = selenium_manager. get_logger ( ) ;
151+ log. error ( err) ;
152+ flush_and_exit ( DATAERR , & log) ;
153+ } ) ;
172154}
173155
174- fn flush_and_exit ( code : i32 , log : & Logger ) {
156+ fn flush_and_exit ( code : i32 , log : & Logger ) -> ! {
175157 log. set_code ( code) ;
176158 log. flush ( ) ;
177159 exit ( code) ;
0 commit comments