Skip to content

Commit b084d31

Browse files
authored
Merge pull request #23 from coding-kelps/19-add-a-terminal-spinner-during-leetcode-api-calls
feat(main): spinner for each command
2 parents 8892e15 + 0232853 commit b084d31

3 files changed

Lines changed: 40 additions & 12 deletions

File tree

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ html2md = "0.2.15"
3737
tempfile = "3.20.0"
3838
regex = "1.11.1"
3939
thiserror = "2.0.12"
40+
spinners = "4.1.1"

src/main.rs

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
use clap::Parser;
22
use leetcode_cli::{
3-
utils,
3+
utils::{
4+
parse_programming_language,
5+
spin_the_spinner,
6+
},
47
Cli,
58
Commands,
69
LeetcodeApiRunner,
@@ -18,36 +21,56 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
1821
Commands::Info {
1922
id,
2023
} => {
21-
println!("{}", api_runner.get_problem_info(*id).await?);
24+
let mut spin = spin_the_spinner("Fetching problem info...");
25+
let result = api_runner.get_problem_info(*id).await;
26+
spin.stop();
27+
match result {
28+
Ok(info) => println!("{}", info),
29+
Err(e) => eprintln!("Error fetching problem info: {}", e),
30+
}
2231
},
2332
Commands::Start {
2433
id,
2534
language,
2635
} => {
2736
let default = &rcs.config.default_language.unwrap();
2837
let lang = match language {
29-
Some(lang) => utils::parse_programming_language(lang)?,
30-
None => utils::parse_programming_language(default)?,
38+
Some(lang) => parse_programming_language(lang)?,
39+
None => parse_programming_language(default)?,
3140
};
32-
let start_problem = api_runner.start_problem(*id, lang).await?;
33-
println!("{}\n\nHappy coding :)", start_problem);
41+
let mut spin = spin_the_spinner("Starting problem setup...");
42+
let start_problem = api_runner.start_problem(*id, lang).await;
43+
spin.stop();
44+
match start_problem {
45+
Ok(message) => println!("{}\n\nHappy coding :)", message),
46+
Err(e) => eprintln!("Error starting problem: {}", e),
47+
}
3448
},
3549
Commands::Test {
3650
id,
3751
path_to_file,
3852
} => {
53+
let mut spin = spin_the_spinner("Running tests...");
3954
let test_result =
40-
api_runner.test_response(*id, path_to_file.clone()).await?;
41-
println!("Test result: {}", test_result);
55+
api_runner.test_response(*id, path_to_file.clone()).await;
56+
spin.stop();
57+
match test_result {
58+
Ok(result) => println!("Test result: {}", result),
59+
Err(e) => eprintln!("Error running tests: {}", e),
60+
}
4261
},
4362
Commands::Submit {
4463
id,
4564
path_to_file,
4665
} => {
47-
let submit_result = api_runner
48-
.submit_response(*id, path_to_file.clone())
49-
.await?;
50-
println!("Submit result: {}", submit_result);
66+
let mut spin = spin_the_spinner("Submitting solution...");
67+
let submit_result =
68+
api_runner.submit_response(*id, path_to_file.clone()).await;
69+
spin.stop();
70+
match submit_result {
71+
Ok(result) => println!("Submit result: {}", result),
72+
Err(e) => eprintln!("Error submitting solution: {}", e),
73+
}
5174
},
5275
}
5376
Ok(())

src/utils.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,7 @@ pub fn extension_programming_language(
155155
_ => panic!("Unsupported language: {}", extension),
156156
}
157157
}
158+
159+
pub fn spin_the_spinner(message: &str) -> spinners::Spinner {
160+
spinners::Spinner::new(spinners::Spinners::Dots12, message.to_string())
161+
}

0 commit comments

Comments
 (0)