diff --git a/Cargo.lock b/Cargo.lock index 0eb7ec6..ad52603 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -772,7 +772,7 @@ checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "logger" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "chrono", "nu-ansi-term 0.50.0", @@ -839,7 +839,7 @@ checksum = "8c6890fa4fc6790993c82dfd736389499d6c71c7ae798dc9bc8cbabf5df68611" [[package]] name = "metassr" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", @@ -872,7 +872,7 @@ dependencies = [ [[package]] name = "metassr-build" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "lazy_static", @@ -888,7 +888,7 @@ dependencies = [ [[package]] name = "metassr-bundler" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "lazy_static", @@ -901,7 +901,7 @@ dependencies = [ [[package]] name = "metassr-cli" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", @@ -921,7 +921,7 @@ dependencies = [ [[package]] name = "metassr-create" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "walkdir", @@ -929,7 +929,7 @@ dependencies = [ [[package]] name = "metassr-fs-analyzer" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "metassr-utils", @@ -939,14 +939,14 @@ dependencies = [ [[package]] name = "metassr-html" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", ] [[package]] name = "metassr-server" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "axum", @@ -972,7 +972,7 @@ dependencies = [ [[package]] name = "metassr-utils" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "serde", @@ -981,7 +981,7 @@ dependencies = [ [[package]] name = "metassr-watcher" -version = "0.0.1-alpha" +version = "1.0.0-alpha" dependencies = [ "anyhow", "notify", diff --git a/metassr-cli/src/cli/creator.rs b/metassr-cli/src/cli/creator.rs index e8aa11b..9ae60d8 100644 --- a/metassr-cli/src/cli/creator.rs +++ b/metassr-cli/src/cli/creator.rs @@ -1,10 +1,14 @@ use clap::ValueEnum; use metassr_create::Creator as MetassrCreator; -use std::{fmt::Display, str::FromStr}; +use std::{collections::HashMap, fmt::Display, str::FromStr}; use tracing::{error, info}; use super::traits::Exec; +// ANSI color codes +pub const RESET: &str = "\x1b[0m"; +pub const YELLOW: &str = "\x1b[93m"; +pub const BLUE: &str = "\x1b[94m"; pub struct Creator { project_name: String, version: String, @@ -68,7 +72,7 @@ impl Exec for Creator { &self.project_name, &self.version, &self.description, - &self.template.to_string(), + &self.template.as_str(), ) .generate() { @@ -79,18 +83,39 @@ impl Exec for Creator { } } -#[derive(Debug, ValueEnum, PartialEq, Eq, Clone, Copy)] +#[derive(Debug, ValueEnum, PartialEq, Eq, Clone, Copy, Hash)] pub enum Template { Javascript, Typescript, } +impl Template { + fn templates_info() -> HashMap { + let mut map = HashMap::new(); + map.insert(Template::Javascript, ("javascript", YELLOW)); + map.insert(Template::Typescript, ("typescript", BLUE)); + map + } + + pub fn as_str(&self) -> &'static str { + Self::templates_info() + .get(self) + .map(|(name, _)| *name) + .unwrap_or("unknown") + } + + pub fn fmt_colored(&self) -> String { + let templates = Self::templates_info(); + if let Some((name, color)) = templates.get(self) { + format!("{}{}{RESET}", color, name) + } else { + String::from("unknown") + } + } +} impl Display for Template { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.write_str(match *self { - Self::Javascript => "javascript", - Self::Typescript => "typescript", - }) + write!(f, "{}", self.fmt_colored()) } }