From 6aa95d1549283a199cda1020704d7237ef6621a9 Mon Sep 17 00:00:00 2001 From: theMackabu <theMackabu@gmail.com> Date: Sun, 24 Nov 2024 22:44:36 -0800 Subject: [PATCH] revamp info command --- maid/client/cli/mod.rs | 64 ++++++++++++++++++++++++------------ maid/client/main.rs | 2 +- maid/shared/models/client.rs | 2 +- 3 files changed, 45 insertions(+), 23 deletions(-) diff --git a/maid/client/cli/mod.rs b/maid/client/cli/mod.rs index fb24243..70ce1d2 100644 --- a/maid/client/cli/mod.rs +++ b/maid/client/cli/mod.rs @@ -6,7 +6,7 @@ use crate::parse; use crate::server; use crate::task; -use maid::models::client::{Cache, CacheConfig, Task}; +use maid::models::client::{Cache, CacheConfig, Project, Task}; use maid::{helpers, log::prelude::*}; use fs_extra::dir::get_size; @@ -28,32 +28,54 @@ pub fn get_version(short: bool) -> String { } pub fn info(path: &String) { - let values = parse::merge(path); + let values = parse::merge(path).project; let project_root = parse::file::find_maidfile_root(path); - let name = match &values.project { - Some(project) => match project.name.clone() { - Some(name) => name, - None => string!("none"), - }, - None => string!("none"), + let project_name = match values.to_owned() { + Some(project) => project.name, + None => Project::default().name, + }; + + let project_version = match values.to_owned() { + Some(project) => project.version, + None => Project::default().version, + }; + + match project_name { + Some(name) => info!("Project {name} info\n"), + None => info!("Project info\n"), }; - let version = match &values.project { - Some(project) => match project.version.clone() { - Some(version) => version, - None => string!("none"), - }, - None => string!("none"), + match project_version { + Some(version) => println!( + "{}\n{}", + format!("{}: {}", "Version".white(), version.bright_yellow()), + format!("{}: {}", "Directory".white(), project_root.to_string_lossy().bright_yellow()) + ), + None => println!("{}", format!("{}: {}", "Directory".white(), project_root.to_string_lossy().bright_yellow())), }; +} + +pub fn env(path: &String) { + let values = parse::merge(path); - println!( - "{}\n{}\n{}\n{}", - "Project Info".green().bold(), - format!(" {}: {}", "- Name".white(), name.bright_yellow()), - format!(" {}: {}", "- Version".white(), version.bright_yellow()), - format!(" {}: {}", "- Project".white(), project_root.to_string_lossy().bright_yellow()) - ); + let project_name = match values.project { + Some(project) => project.name, + None => Project::default().name, + }; + + if let Some(env) = values.env { + match project_name { + Some(name) => info!("ENV for {name}\n"), + None => info!("ENV for this project\n"), + }; + + for (key, value) in env { + println!("{}{}{value}", key.bright_cyan(), "=".white()) + } + } else { + error!("No ENV values defined for this project") + } } pub fn exec(task: &str, args: &Vec<String>, path: &String, silent: bool, is_dep: bool, is_remote: bool, log_level: Option<tracing::Level>, force: bool) { diff --git a/maid/client/main.rs b/maid/client/main.rs index 4c7f0ed..19a8ae1 100644 --- a/maid/client/main.rs +++ b/maid/client/main.rs @@ -124,7 +124,7 @@ fn main() { if let Some(project) = cli.project { return match project { Project::Info => cli::info(&cli.path), // add more info - Project::Env => {} // print env from maidfile + Project::Env => cli::env(&cli.path), }; } diff --git a/maid/shared/models/client.rs b/maid/shared/models/client.rs index 1cabfef..370534a 100644 --- a/maid/shared/models/client.rs +++ b/maid/shared/models/client.rs @@ -14,7 +14,7 @@ pub struct Maidfile { pub tasks: BTreeMap<String, Tasks>, } -#[derive(Clone, Debug, Deserialize, Serialize)] +#[derive(Clone, Debug, Default, Deserialize, Serialize)] pub struct Project { #[serde(skip_serializing_if = "Option::is_none")] pub name: Option<String>, -- GitLab