Skip to content

Commit a087184

Browse files
BushuoRoland Peelen
authored andcommitted
refactor: return result from check version
1 parent c237234 commit a087184

File tree

1 file changed

+29
-19
lines changed

1 file changed

+29
-19
lines changed

src/bsconfig.rs

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -243,12 +243,15 @@ pub fn read(path: String) -> Config {
243243
.expect("Errors reading bsconfig")
244244
}
245245

246-
fn check_if_rescript11_or_higher(version: &str) -> bool {
247-
if let Some(major) = version.split('.').next().and_then(|s| s.parse::<usize>().ok()) {
248-
major >= 11
249-
} else {
250-
false
251-
}
246+
fn check_if_rescript11_or_higher(version: &str) -> Result<bool, String> {
247+
version
248+
.split('.')
249+
.next()
250+
.and_then(|s| s.parse::<usize>().ok())
251+
.map_or(
252+
Err("Could not parse version".to_string()),
253+
|major| Ok(major >= 11),
254+
)
252255
}
253256

254257
fn namespace_from_package_name(package_name: &str) -> String {
@@ -340,14 +343,17 @@ impl Config {
340343
}
341344

342345
pub fn get_uncurried_args(&self, version: &str) -> Vec<String> {
343-
if check_if_rescript11_or_higher(version) {
344-
match self.uncurried.to_owned() {
346+
match check_if_rescript11_or_higher(version) {
347+
Ok(true) => match self.uncurried.to_owned() {
345348
// v11 is always uncurried except iff explicitly set to false in the root rescript.json
346349
Some(false) => vec![],
347350
_ => vec!["-uncurried".to_string()],
351+
},
352+
Ok(false) => vec![],
353+
Err(_) => {
354+
eprintln!("Could not parse version: {}", version);
355+
vec![]
348356
}
349-
} else {
350-
vec![]
351357
}
352358
}
353359

@@ -430,20 +436,24 @@ mod tests {
430436

431437
#[test]
432438
fn test_check_if_rescript11_or_higher() {
433-
assert_eq!(check_if_rescript11_or_higher("11.0.0"), true);
434-
assert_eq!(check_if_rescript11_or_higher("11.0.1"), true);
435-
assert_eq!(check_if_rescript11_or_higher("11.1.0"), true);
439+
assert_eq!(check_if_rescript11_or_higher("11.0.0"), Ok(true));
440+
assert_eq!(check_if_rescript11_or_higher("11.0.1"), Ok(true));
441+
assert_eq!(check_if_rescript11_or_higher("11.1.0"), Ok(true));
436442

437-
assert_eq!(check_if_rescript11_or_higher("12.0.0"), true);
443+
assert_eq!(check_if_rescript11_or_higher("12.0.0"), Ok(true));
438444

439-
assert_eq!(check_if_rescript11_or_higher("10.0.0"), false);
440-
assert_eq!(check_if_rescript11_or_higher("9.0.0"), false);
445+
assert_eq!(check_if_rescript11_or_higher("10.0.0"), Ok(false));
446+
assert_eq!(check_if_rescript11_or_higher("9.0.0"), Ok(false));
441447
}
442448

443449
#[test]
444450
fn test_check_if_rescript11_or_higher_misc() {
445-
assert_eq!(check_if_rescript11_or_higher("11"), true);
446-
assert_eq!(check_if_rescript11_or_higher("*"), false);
447-
assert_eq!(check_if_rescript11_or_higher("12.0.0-alpha.4"), true);
451+
assert_eq!(check_if_rescript11_or_higher("11"), Ok(true));
452+
assert_eq!(check_if_rescript11_or_higher("12.0.0-alpha.4"), Ok(true));
453+
454+
match check_if_rescript11_or_higher("*") {
455+
Ok(_) => unreachable!("Should not parse"),
456+
Err(_) => assert!(true),
457+
}
448458
}
449459
}

0 commit comments

Comments
 (0)