15
15
// specific language governing permissions and limitations
16
16
// under the License.
17
17
18
- use std:: error:: Error ;
19
-
20
18
use std:: process:: exit;
21
19
22
20
use clap:: Parser ;
23
21
24
22
use exitcode:: DATAERR ;
25
23
24
+ use exitcode:: OK ;
26
25
use selenium_manager:: config:: BooleanKey ;
27
26
use selenium_manager:: logger:: Logger ;
28
27
use selenium_manager:: REQUEST_TIMEOUT_SEC ;
@@ -101,7 +100,7 @@ struct Cli {
101
100
clear_metadata : bool ,
102
101
}
103
102
104
- fn main ( ) -> Result < ( ) , Box < dyn Error > > {
103
+ fn main ( ) {
105
104
let cli = Cli :: parse ( ) ;
106
105
let debug = cli. debug || BooleanKey ( "debug" , false ) . get_value ( ) ;
107
106
let trace = cli. trace || BooleanKey ( "trace" , false ) . get_value ( ) ;
@@ -122,56 +121,39 @@ fn main() -> Result<(), Box<dyn Error>> {
122
121
get_manager_by_browser ( browser_name) . unwrap_or_else ( |err| {
123
122
log. error ( err) ;
124
123
flush_and_exit ( DATAERR , & log) ;
125
- exit ( DATAERR ) ;
126
124
} )
127
125
} else if !driver_name. is_empty ( ) {
128
126
get_manager_by_driver ( driver_name) . unwrap_or_else ( |err| {
129
127
log. error ( err) ;
130
128
flush_and_exit ( DATAERR , & log) ;
131
- exit ( DATAERR ) ;
132
129
} )
133
130
} else {
134
131
log. error ( "You need to specify a browser or driver" . to_string ( ) ) ;
135
132
flush_and_exit ( DATAERR , & log) ;
136
- exit ( DATAERR ) ;
137
133
} ;
138
134
139
135
selenium_manager. set_logger ( log) ;
140
136
selenium_manager. set_browser_version ( cli. browser_version . unwrap_or_default ( ) ) ;
141
137
selenium_manager. set_driver_version ( cli. driver_version . unwrap_or_default ( ) ) ;
142
138
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
- } ;
170
139
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
+ } ) ;
172
154
}
173
155
174
- fn flush_and_exit ( code : i32 , log : & Logger ) {
156
+ fn flush_and_exit ( code : i32 , log : & Logger ) -> ! {
175
157
log. set_code ( code) ;
176
158
log. flush ( ) ;
177
159
exit ( code) ;
0 commit comments