diff --git a/CHANGELOG.md b/CHANGELOG.md index b85a3e0b..ec74cf10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ ### Added -- Show the file link of the current exercise when running `rustlings hint` +- Show the file link of the current exercise when running `rustlings hint` and `rustlings reset` ### Fixed diff --git a/src/app_state.rs b/src/app_state.rs index bc1d520d..9980aeea 100644 --- a/src/app_state.rs +++ b/src/app_state.rs @@ -334,12 +334,10 @@ impl AppState { Ok(()) } - pub fn reset_current_exercise(&mut self) -> Result<&str> { + pub fn reset_current_exercise(&mut self) -> Result<()> { self.set_pending(self.current_exercise_ind)?; let exercise = self.current_exercise(); - self.reset(self.current_exercise_ind, exercise.path)?; - - Ok(exercise.path) + self.reset(self.current_exercise_ind, exercise.path) } // Reset the exercise by index and return its name. diff --git a/src/main.rs b/src/main.rs index 564e0719..fb976653 100644 --- a/src/main.rs +++ b/src/main.rs @@ -149,8 +149,13 @@ fn main() -> Result { } Some(Command::Reset { name }) => { app_state.set_current_exercise_by_name(&name)?; - let exercise_path = app_state.reset_current_exercise()?; - println!("The exercise {exercise_path} has been reset"); + app_state.reset_current_exercise()?; + + let current_exercise = app_state.current_exercise(); + let mut stdout = io::stdout().lock(); + stdout.write_all(b"The exercise ")?; + current_exercise.terminal_file_link(&mut stdout, app_state.emit_file_links())?; + stdout.write_all(b" has been reset\n")?; } Some(Command::Hint { name }) => { if let Some(name) = name {