diff options
| -rw-r--r-- | src/bin/jvn.rs | 4 | ||||
| -rw-r--r-- | src/cmds/arg/empty.rs | 4 | ||||
| -rw-r--r-- | src/cmds/arg/helpdoc.rs | 2 | ||||
| -rw-r--r-- | src/cmds/cmd/helpdoc.rs | 6 | ||||
| -rw-r--r-- | src/cmds/cmd/helpdoc_list.rs | 48 | ||||
| -rw-r--r-- | src/cmds/out/helpdocs.rs | 6 | ||||
| -rw-r--r-- | src/cmds/renderer/helpdocs.rs | 14 | ||||
| -rw-r--r-- | src/systems/helpdoc.rs | 2 |
8 files changed, 80 insertions, 6 deletions
diff --git a/src/bin/jvn.rs b/src/bin/jvn.rs index 0e5a9f6..965d0ec 100644 --- a/src/bin/jvn.rs +++ b/src/bin/jvn.rs @@ -11,7 +11,7 @@ use just_enough_vcs_cli::{ processer::jv_cmd_process, }, debug::verbose_logger::init_verbose_logger, - helpdoc::helpdoc_viewer, + helpdoc::{DEFAULT_HELPDOC, helpdoc_viewer}, }, }; use just_progress::{ @@ -101,7 +101,7 @@ async fn main() { // Handle help when no arguments provided if args.len() < 1 && help { warn!("{}", t!("verbose.no_arguments")); - helpdoc_viewer::display_with_lang("Welcome_To_JVCS", &lang).await; + helpdoc_viewer::display_with_lang(DEFAULT_HELPDOC, &lang).await; exit(1); } diff --git a/src/cmds/arg/empty.rs b/src/cmds/arg/empty.rs new file mode 100644 index 0000000..24d7895 --- /dev/null +++ b/src/cmds/arg/empty.rs @@ -0,0 +1,4 @@ +use clap::Parser; + +#[derive(Parser, Debug)] +pub struct JVEmptyArgument {} diff --git a/src/cmds/arg/helpdoc.rs b/src/cmds/arg/helpdoc.rs index 3a34123..8950628 100644 --- a/src/cmds/arg/helpdoc.rs +++ b/src/cmds/arg/helpdoc.rs @@ -2,5 +2,5 @@ use clap::Parser; #[derive(Parser, Debug)] pub struct JVHelpdocArgument { - pub doc_name: String, + pub doc_name: Option<String>, } diff --git a/src/cmds/cmd/helpdoc.rs b/src/cmds/cmd/helpdoc.rs index 8b692ee..bebd08c 100644 --- a/src/cmds/cmd/helpdoc.rs +++ b/src/cmds/cmd/helpdoc.rs @@ -9,7 +9,7 @@ use crate::{ cmd_system::JVCommandContext, errors::{CmdExecuteError, CmdPrepareError}, }, - helpdoc::helpdoc_viewer, + helpdoc::{DEFAULT_HELPDOC, helpdoc_viewer}, }, }; use cmd_system_macros::exec; @@ -22,13 +22,13 @@ type In = JVHelpdocInput; type Collect = JVEmptyCollect; async fn help_str() -> String { - helpdoc_viewer::display("Welcome_To_JVCS").await; + helpdoc_viewer::display(DEFAULT_HELPDOC).await; String::new() } async fn prepare(args: &Arg, ctx: &JVCommandContext) -> Result<In, CmdPrepareError> { Ok(JVHelpdocInput { - name: args.doc_name.clone(), + name: args.doc_name.clone().unwrap_or(DEFAULT_HELPDOC.to_string()), lang: ctx.lang.clone(), }) } diff --git a/src/cmds/cmd/helpdoc_list.rs b/src/cmds/cmd/helpdoc_list.rs new file mode 100644 index 0000000..b4b05cf --- /dev/null +++ b/src/cmds/cmd/helpdoc_list.rs @@ -0,0 +1,48 @@ +use crate::{ + cmd_output, + cmds::{ + arg::empty::JVEmptyArgument, collect::empty::JVEmptyCollect, r#in::empty::JVEmptyInput, + out::helpdocs::JVHelpdocsOutput, + }, + systems::{ + cmd::{ + cmd_system::JVCommandContext, + errors::{CmdExecuteError, CmdPrepareError}, + }, + helpdoc::{DEFAULT_HELPDOC, get_helpdoc_list, helpdoc_viewer}, + }, +}; +use cmd_system_macros::exec; +use std::any::TypeId; + +pub struct JVHelpdocListCommand; +type Cmd = JVHelpdocListCommand; +type Arg = JVEmptyArgument; +type In = JVEmptyInput; +type Collect = JVEmptyCollect; + +async fn help_str() -> String { + helpdoc_viewer::display(DEFAULT_HELPDOC).await; + String::new() +} + +async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareError> { + Ok(JVEmptyInput) +} + +async fn collect(_args: &Arg, _ctx: &JVCommandContext) -> Result<Collect, CmdPrepareError> { + Ok(JVEmptyCollect) +} + +#[exec] +async fn exec( + _input: In, + _collect: Collect, +) -> Result<(Box<dyn std::any::Any + Send + 'static>, TypeId), CmdExecuteError> { + let output = JVHelpdocsOutput { + names: get_helpdoc_list().into_iter().map(String::from).collect(), + }; + cmd_output!(JVHelpdocsOutput => output) +} + +crate::command_template!(); diff --git a/src/cmds/out/helpdocs.rs b/src/cmds/out/helpdocs.rs new file mode 100644 index 0000000..72142db --- /dev/null +++ b/src/cmds/out/helpdocs.rs @@ -0,0 +1,6 @@ +use serde::Serialize; + +#[derive(Serialize)] +pub struct JVHelpdocsOutput { + pub names: Vec<String>, +} diff --git a/src/cmds/renderer/helpdocs.rs b/src/cmds/renderer/helpdocs.rs new file mode 100644 index 0000000..8fc34e0 --- /dev/null +++ b/src/cmds/renderer/helpdocs.rs @@ -0,0 +1,14 @@ +use render_system_macros::result_renderer; + +use crate::{ + cmds::out::helpdocs::JVHelpdocsOutput, + r_println, + systems::{cmd::errors::CmdRenderError, render::renderer::JVRenderResult}, +}; + +#[result_renderer(JVHelpdocsRenderer)] +pub async fn render(data: &JVHelpdocsOutput) -> Result<JVRenderResult, CmdRenderError> { + let mut r = JVRenderResult::default(); + data.names.iter().for_each(|d| r_println!(r, "{}", d)); + Ok(r) +} diff --git a/src/systems/helpdoc.rs b/src/systems/helpdoc.rs index 4e5b2a6..c36130d 100644 --- a/src/systems/helpdoc.rs +++ b/src/systems/helpdoc.rs @@ -1,5 +1,7 @@ pub mod helpdoc_viewer; +pub const DEFAULT_HELPDOC: &str = "Welcome_To_JVCS"; + helpdoc_system_macros::generate_helpdoc_mapping!(); helpdoc_system_macros::generate_helpdoc_list!(); helpdoc_system_macros::generate_helpdoc_test!(); |
