diff options
| author | mo8it <mo8it@proton.me> | 2024-08-26 00:09:04 +0200 |
|---|---|---|
| committer | mo8it <mo8it@proton.me> | 2024-08-26 00:09:04 +0200 |
| commit | 159273e53291cd72d27795cd2cfe0820587e3009 (patch) | |
| tree | ee30d367bdce05f2a720373943d498913ede35a0 /src/watch.rs | |
| parent | 631f2db1a31ce5a32bc954412a7cf42158046113 (diff) | |
Take stdout as argument in watch mode
Diffstat (limited to 'src/watch.rs')
| -rw-r--r-- | src/watch.rs | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/src/watch.rs b/src/watch.rs index c669030..e14d3c5 100644 --- a/src/watch.rs +++ b/src/watch.rs @@ -72,35 +72,32 @@ pub fn watch( let mut watch_state = WatchState::new(app_state, manual_run); - watch_state.run_current_exercise()?; + let mut stdout = io::stdout().lock(); + watch_state.run_current_exercise(&mut stdout)?; thread::spawn(move || terminal_event_handler(tx, manual_run)); while let Ok(event) = rx.recv() { match event { - WatchEvent::Input(InputEvent::Next) => match watch_state.next_exercise()? { + WatchEvent::Input(InputEvent::Next) => match watch_state.next_exercise(&mut stdout)? { ExercisesProgress::AllDone => break, - ExercisesProgress::CurrentPending => watch_state.render()?, - ExercisesProgress::NewPending => watch_state.run_current_exercise()?, + ExercisesProgress::CurrentPending => watch_state.render(&mut stdout)?, + ExercisesProgress::NewPending => watch_state.run_current_exercise(&mut stdout)?, }, - WatchEvent::Input(InputEvent::Hint) => { - watch_state.show_hint()?; - } + WatchEvent::Input(InputEvent::Hint) => watch_state.show_hint(&mut stdout)?, WatchEvent::Input(InputEvent::List) => { return Ok(WatchExit::List); } WatchEvent::Input(InputEvent::Quit) => { - watch_state.into_writer().write_all(QUIT_MSG)?; + stdout.write_all(QUIT_MSG)?; break; } - WatchEvent::Input(InputEvent::Run) => watch_state.run_current_exercise()?, - WatchEvent::Input(InputEvent::Unrecognized) => watch_state.render()?, + WatchEvent::Input(InputEvent::Run) => watch_state.run_current_exercise(&mut stdout)?, + WatchEvent::Input(InputEvent::Unrecognized) => watch_state.render(&mut stdout)?, WatchEvent::FileChange { exercise_ind } => { - watch_state.handle_file_change(exercise_ind)?; - } - WatchEvent::TerminalResize => { - watch_state.render()?; + watch_state.handle_file_change(exercise_ind, &mut stdout)?; } + WatchEvent::TerminalResize => watch_state.render(&mut stdout)?, WatchEvent::NotifyErr(e) => { return Err(Error::from(e).context(NOTIFY_ERR)); } |
