summaryrefslogtreecommitdiff
path: root/src/watch.rs
diff options
context:
space:
mode:
authormo8it <mo8it@proton.me>2024-08-26 00:09:04 +0200
committermo8it <mo8it@proton.me>2024-08-26 00:09:04 +0200
commit159273e53291cd72d27795cd2cfe0820587e3009 (patch)
treeee30d367bdce05f2a720373943d498913ede35a0 /src/watch.rs
parent631f2db1a31ce5a32bc954412a7cf42158046113 (diff)
Take stdout as argument in watch mode
Diffstat (limited to 'src/watch.rs')
-rw-r--r--src/watch.rs25
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));
}