Skip to content

Commit dec09a8

Browse files
committed
Replace panics with exits using the expect-exit library
1 parent 53e5212 commit dec09a8

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

src/main.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ fn main() {
5252
get_rules_file(&args).or_exit_("Must specify -f or have a ~/.sdk-rules.yaml file");
5353
let rules = parse_rules(fs::read_to_string(rules_file).or_exit_("Failed to read rules file"));
5454

55-
for (name, candidate) in rules.expect("Rules file could not be parsed").candidates {
55+
for (name, candidate) in rules.or_exit_("Rules file could not be parsed").candidates {
5656
let installed: HashSet<_> = sdkman
5757
.installed_versions(name.clone())
5858
.into_iter()

src/rules/mod.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use expect_exit::Expected;
12
use regex::Regex;
23
use std::collections::HashMap;
34

@@ -32,7 +33,7 @@ pub trait VersionMatch {
3233
impl VersionMatch for Version {
3334
fn get_matching(&self, name: String, available: Vec<String>) -> Option<String> {
3435
let pattern = Regex::new(self.pattern.as_str())
35-
.unwrap_or_else(|_| panic!("Invalid regex for {}: {}", name, self.pattern));
36+
.or_exit_(format!("Invalid regex for {}: {}", name, self.pattern).as_str());
3637
let mut matches: Vec<String> = available
3738
.iter()
3839
.filter(|it| pattern.is_match(it))
@@ -41,7 +42,7 @@ impl VersionMatch for Version {
4142

4243
if let Some(exclude) = self.exclude.as_ref() {
4344
let exclude_pattern = Regex::new(exclude.join("|").as_str())
44-
.unwrap_or_else(|_| panic!("Invalid regex for {}: {}", name, exclude.join("|")));
45+
.or_exit_(format!("Invalid regex for {}: {}", name, exclude.join("|")).as_str());
4546
matches.retain(|it| !exclude_pattern.is_match(it));
4647
}
4748

src/sdkman/mod.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use crate::sdkman::candidate::{Candidate, SdkManCandidate};
2+
use expect_exit::Expected;
23
use std::fs::read_dir;
34
use std::io::Write;
45
use std::path::Path;
@@ -27,7 +28,7 @@ impl ToolManager for SdkMan {
2728
let base = Path::new(dir.as_str()).join("candidates").join(candidate);
2829
if base.is_dir() {
2930
read_dir(base)
30-
.expect("Failed to read $SDKMAN_DIR")
31+
.or_exit_("Failed to read $SDKMAN_DIR")
3132
.filter(|entry| entry.as_ref().unwrap().file_type().unwrap().is_dir())
3233
.map(|entry| entry.unwrap().file_name().into_string().unwrap())
3334
.collect()
@@ -49,7 +50,7 @@ impl ToolManager for SdkMan {
4950
.arg("-c")
5051
.arg(format!("sdk list {}", candidate))
5152
.output()
52-
.expect("Failed to run the sdk list command. Is SDKMAN installed?");
53+
.or_exit_("Failed to run the sdk list command. Is SDKMAN installed?");
5354
if output.status.success() {
5455
SdkManCandidate {
5556
name: candidate,
@@ -77,7 +78,7 @@ impl ToolManager for SdkMan {
7778
.arg("-c")
7879
.arg(cmd)
7980
.output()
80-
.expect("Error running sdk install command");
81+
.or_exit_("Error running sdk install command");
8182
if output.status.success() {
8283
println!("OK");
8384
} else {
@@ -106,7 +107,7 @@ impl ToolManager for SdkMan {
106107
.arg("-c")
107108
.arg(cmd)
108109
.output()
109-
.expect("Error running sdk install command");
110+
.or_exit_("Error running sdk install command");
110111
if output.status.success() {
111112
println!("OK");
112113
} else {
@@ -133,7 +134,7 @@ impl ToolManager for SdkMan {
133134
.arg("-c")
134135
.arg(cmd)
135136
.output()
136-
.expect("Error running sdk install command");
137+
.or_exit_("Error running sdk install command");
137138
if output.status.success() {
138139
println!("OK");
139140
} else {

0 commit comments

Comments
 (0)