diff options
| author | mo8it <mo8it@proton.me> | 2024-09-24 16:12:44 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-09-24 16:12:44 +0200 |
| commit | 554301b8e9a1c3f8eda05d616fbdb909e2ebf640 (patch) | |
| tree | 57d2d2300012448fc3854e906700cd8b9c60cf08 /src | |
| parent | a55e84835995b87cdcdb7f746ac9d0fb477a5586 (diff) | |
Clear terminal before final check in watch mode
Diffstat (limited to 'src')
| -rw-r--r-- | src/app_state.rs | 16 | ||||
| -rw-r--r-- | src/run.rs | 2 | ||||
| -rw-r--r-- | src/watch/state.rs | 2 |
3 files changed, 14 insertions, 6 deletions
diff --git a/src/app_state.rs b/src/app_state.rs index ecb4689..c879955 100644 --- a/src/app_state.rs +++ b/src/app_state.rs @@ -381,7 +381,7 @@ impl AppState { // Return the exercise index of the first pending exercise found. fn check_all_exercises(&self, stdout: &mut StdoutLock) -> Result<Option<usize>> { - stdout.write_all(RERUNNING_ALL_EXERCISES_MSG)?; + stdout.write_all(FINAL_CHECK_MSG)?; let n_exercises = self.exercises.len(); let status = thread::scope(|s| { @@ -441,7 +441,10 @@ impl AppState { /// Mark the current exercise as done and move on to the next pending exercise if one exists. /// If all exercises are marked as done, run all of them to make sure that they are actually /// done. If an exercise which is marked as done fails, mark it as pending and continue on it. - pub fn done_current_exercise(&mut self, stdout: &mut StdoutLock) -> Result<ExercisesProgress> { + pub fn done_current_exercise<const CLEAR_BEFORE_FINAL_CHECK: bool>( + &mut self, + stdout: &mut StdoutLock, + ) -> Result<ExercisesProgress> { let exercise = &mut self.exercises[self.current_exercise_ind]; if !exercise.done { exercise.done = true; @@ -453,6 +456,12 @@ impl AppState { return Ok(ExercisesProgress::NewPending); } + if CLEAR_BEFORE_FINAL_CHECK { + clear_terminal(stdout)?; + } else { + stdout.write_all(b"\n")?; + } + if let Some(pending_exercise_ind) = self.check_all_exercises(stdout)? { stdout.write_all(b"\n\n")?; @@ -482,8 +491,7 @@ impl AppState { const BAD_INDEX_ERR: &str = "The current exercise index is higher than the number of exercises"; const STATE_FILE_HEADER: &[u8] = b"DON'T EDIT THIS FILE!\n\n"; -const RERUNNING_ALL_EXERCISES_MSG: &[u8] = b" -All exercises seem to be done. +const FINAL_CHECK_MSG: &[u8] = b"All exercises seem to be done. Recompiling and running all exercises to make sure that all of them are actually done. "; const FENISH_LINE: &str = "+----------------------------------------------------+ @@ -44,7 +44,7 @@ pub fn run(app_state: &mut AppState) -> Result<()> { stdout.write_all(b"\n")?; } - match app_state.done_current_exercise(&mut stdout)? { + match app_state.done_current_exercise::<false>(&mut stdout)? { ExercisesProgress::NewPending | ExercisesProgress::CurrentPending => { stdout.write_all(b"Next exercise: ")?; app_state diff --git a/src/watch/state.rs b/src/watch/state.rs index cb79b35..d6c3eb2 100644 --- a/src/watch/state.rs +++ b/src/watch/state.rs @@ -113,7 +113,7 @@ impl<'a> WatchState<'a> { return Ok(ExercisesProgress::CurrentPending); } - self.app_state.done_current_exercise(stdout) + self.app_state.done_current_exercise::<true>(stdout) } fn show_prompt(&self, stdout: &mut StdoutLock) -> io::Result<()> { |
