mirror of
https://git.aramjonghu.dev/AramJonghu/rustlings.git
synced 2026-09-04 17:23:36 +02:00
Handle the case when all exercises are done
This commit is contained in:
+10
-14
@@ -1,6 +1,6 @@
|
||||
use anyhow::{bail, Result};
|
||||
use crossterm::style::Stylize;
|
||||
use std::io::{stdout, Write};
|
||||
use std::io::{self, Write};
|
||||
|
||||
use crate::app_state::{AppState, ExercisesProgress};
|
||||
|
||||
@@ -8,28 +8,24 @@ pub fn run(app_state: &mut AppState) -> Result<()> {
|
||||
let exercise = app_state.current_exercise();
|
||||
let output = exercise.run()?;
|
||||
|
||||
{
|
||||
let mut stdout = stdout().lock();
|
||||
stdout.write_all(&output.stdout)?;
|
||||
stdout.write_all(&output.stderr)?;
|
||||
stdout.flush()?;
|
||||
}
|
||||
let mut stdout = io::stdout().lock();
|
||||
stdout.write_all(&output.stdout)?;
|
||||
stdout.write_all(b"\n")?;
|
||||
stdout.write_all(&output.stderr)?;
|
||||
stdout.flush()?;
|
||||
|
||||
if !output.status.success() {
|
||||
bail!("Ran {exercise} with errors");
|
||||
}
|
||||
|
||||
println!(
|
||||
stdout.write_fmt(format_args!(
|
||||
"{}{}",
|
||||
"✓ Successfully ran ".green(),
|
||||
exercise.path.to_string_lossy().green(),
|
||||
);
|
||||
))?;
|
||||
|
||||
match app_state.done_current_exercise()? {
|
||||
ExercisesProgress::AllDone => println!(
|
||||
"🎉 Congratulations! You have done all the exercises!
|
||||
🔚 There are no more exercises to do next!"
|
||||
),
|
||||
match app_state.done_current_exercise(&mut stdout)? {
|
||||
ExercisesProgress::AllDone => (),
|
||||
ExercisesProgress::Pending => println!("Next exercise: {}", app_state.current_exercise()),
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user