From acf135620be13a602d7d3de6beebb52e362c45c9 Mon Sep 17 00:00:00 2001 From: Patrik Kaprinay Date: Sun, 14 Jan 2024 01:28:00 +0100 Subject: [PATCH] feat: added next up message with the path of next exercise Added a new property to Exercise, next_path. I populate this property, when loading the exercises. --- src/exercise.rs | 2 ++ src/main.rs | 20 ++++++++++++++++++-- src/verify.rs | 7 +++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/exercise.rs b/src/exercise.rs index 664b362b..26995295 100644 --- a/src/exercise.rs +++ b/src/exercise.rs @@ -54,6 +54,8 @@ pub struct Exercise { pub mode: Mode, // The hint text associated with the exercise pub hint: String, + // The path of the next exercise + pub next_path: Option } // An enum to track of the state of an Exercise. diff --git a/src/main.rs b/src/main.rs index a06f0c56..83dbe006 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ use notify_debouncer_mini::{new_debouncer, DebouncedEventKind}; use std::ffi::OsStr; use std::fs; use std::io::{self, prelude::*}; -use std::path::Path; +use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::mpsc::{channel, RecvTimeoutError}; @@ -108,9 +108,11 @@ fn main() { } let toml_str = &fs::read_to_string("info.toml").unwrap(); - let exercises = toml::from_str::(toml_str).unwrap().exercises; + let mut exercises = toml::from_str::(toml_str).unwrap().exercises; let verbose = args.nocapture; + edit_exercises(&mut exercises); + let command = args.command.unwrap_or_else(|| { println!("{DEFAULT_OUT}\n"); std::process::exit(0); @@ -245,6 +247,20 @@ fn main() { } } +fn edit_exercises(exercises: &mut Vec){ + let siz = exercises.len(); + for i in 0.. siz { + if i == siz - 1 { + exercises[i].next_path = None; + break; + } + let next_path = &exercises[i + 1].path; + let mut x = PathBuf::new(); + x.push(next_path); + exercises[i].next_path = Some(x); + } +} + fn spawn_watch_shell( failed_exercise_hint: &Arc>>, should_quit: Arc, diff --git a/src/verify.rs b/src/verify.rs index 8a2ad49f..3cfe0f05 100644 --- a/src/verify.rs +++ b/src/verify.rs @@ -171,6 +171,13 @@ fn prompt_for_completion( let no_emoji = env::var("NO_EMOJI").is_ok(); + match &exercise.next_path { + Some(path) => { + println!("Next up: {:?}", path); + } + None => {} + } + let clippy_success_msg = if no_emoji { "The code is compiling, and Clippy is happy!" } else {