Skip to content

Commit 4bf979b

Browse files
oriongonzaOrionGonzalezdiemol
authored
[Rust] Refactors (#11832)
* Refactor so that it's more concise * cargo fmt * I found it too verbose * String interpolation * Since the error message is the same now put it in the chain. * Added never return type so I can remove the calls to exit() --------- Co-authored-by: ogonzalez <[email protected]> Co-authored-by: Diego Molina <[email protected]>
1 parent 85fd461 commit 4bf979b

File tree

2 files changed

+24
-49
lines changed

2 files changed

+24
-49
lines changed

rust/src/lib.rs

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -307,24 +307,17 @@ pub trait SeleniumManager {
307307
}
308308

309309
if !self.is_safari() {
310-
let (in_path_driver_version, in_path_driver_path) = self.find_driver_in_path();
311-
if let (Some(found_driver_version), Some(found_driver_path)) =
312-
(in_path_driver_version, in_path_driver_path)
313-
{
314-
if found_driver_version.eq(self.get_driver_version()) {
310+
if let (Some(version), Some(path)) = self.find_driver_in_path() {
311+
if version == self.get_driver_version() {
315312
self.get_logger().debug(format!(
316-
"Found {} {} in PATH: {}",
317-
self.get_driver_name(),
318-
found_driver_version,
319-
found_driver_path
313+
"Found {} {version} in PATH: {path}",
314+
self.get_driver_name()
320315
));
321-
return Ok(PathBuf::from(found_driver_path));
316+
return Ok(PathBuf::from(path));
322317
} else {
323318
self.get_logger().warn(format!(
324-
"Incompatible release of {} (version {}) detected in PATH: {}",
325-
self.get_driver_name(),
326-
found_driver_version,
327-
found_driver_path
319+
"Incompatible release of {} (version {version}) detected in PATH: {path}",
320+
self.get_driver_name()
328321
));
329322
}
330323
}

rust/src/main.rs

Lines changed: 17 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use std::error::Error;
19-
2018
use std::process::exit;
2119

2220
use clap::Parser;
2321

2422
use exitcode::DATAERR;
2523

24+
use exitcode::OK;
2625
use selenium_manager::config::BooleanKey;
2726
use selenium_manager::logger::Logger;
2827
use 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

Comments
 (0)