From 2da44ba48a322fce69141f76488995d756f569e2 Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L. de Mello" Date: Wed, 1 May 2024 10:12:00 -0300 Subject: [PATCH] feat(frontmatter): convert results to json argument --- src/main.rs | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 672152a..b49defc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -46,6 +46,9 @@ enum FrontmatterCommands { Get { #[clap()] property: String, + + #[arg(short = 'j', long, action = ArgAction::SetTrue)] + to_json: bool, }, } @@ -151,21 +154,36 @@ fn main() { frontmatter.insert_ast(ast); cli::ResultType::Markdown(ast) } - FrontmatterCommands::Get { property } => { + FrontmatterCommands::Get { property, to_json } => { let value = frontmatter .get(String::from(property)) .unwrap_or(&serde_yaml::Value::Null); - match serde_yaml::to_string(value) { - Ok(s) => cli::ResultType::String(s), - Err(err) => cli::ResultType::Err(cli::Error { + + let result = if *to_json { + serde_json::to_string(value).map_err(|err| cli::Error { code: cli::ErrorCode::EPRSG, description: format!( - "Failed to parse frontmatter value to string\n{:#?}", + "Failed to parse frontmatter value to yaml string\n{:#?}", err ), fix: None, url: None, - }), + }) + } else { + serde_yaml::to_string(value).map_err(|err| cli::Error { + code: cli::ErrorCode::EPRSG, + description: format!( + "Failed to parse frontmatter value to yaml string\n{:#?}", + err + ), + fix: None, + url: None, + }) + }; + + match result { + Ok(s) => cli::ResultType::String(s), + Err(err) => cli::ResultType::Err(err), } } },