diff --git a/src/commands/generate.rs b/src/commands/generate.rs index 035f8d8..1ba2889 100644 --- a/src/commands/generate.rs +++ b/src/commands/generate.rs @@ -2,9 +2,12 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -use crate::commands::{ - traces::{Trace, Traces, Traversable}, - Runnable, +use crate::{ + commands::{ + traces::{Trace, Traces, Traversable}, + Runnable, + }, + displayer::Displayer, }; use clap::Parser; use console::{style, Emoji}; @@ -105,24 +108,43 @@ impl Display for Author { impl Runnable for Generate { fn run(&self) -> ExitCode { + let mut displayer: Displayer = Displayer::new(); + displayer.loading("Checking the generation path validity"); + let Ok(generation_exists) = self.generation.try_exists() else { + displayer.failure("Failed to check the existence of the generation path"); + return ExitCode::FAILURE; }; if !generation_exists || !self.generation.is_file() { + displayer.failure("The generation path does not exist or is not a file path"); + return ExitCode::FAILURE; } + displayer.success("The generation path is valid"); + displayer.loading("Reading the generation file"); + let Ok(file_content) = read_to_string(self.generation.clone()) else { + displayer.failure("Failed to read the generation file"); + return ExitCode::FAILURE; }; + displayer.success("The generation file is read"); + displayer.loading("Parsing the content"); + let Ok(generation): Result = from_str(file_content.as_str()) else { + displayer.failure("Failed to parse the content"); + return ExitCode::FAILURE; }; + displayer.success("The content is parsed"); + println!( - "Generation metadata\n\ + "\nGeneration metadata\n\ {}", generation.metadata );