summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/jvn.rs4
-rw-r--r--src/cmds/arg/empty.rs4
-rw-r--r--src/cmds/arg/helpdoc.rs2
-rw-r--r--src/cmds/cmd/helpdoc.rs6
-rw-r--r--src/cmds/cmd/helpdoc_list.rs48
-rw-r--r--src/cmds/out/helpdocs.rs6
-rw-r--r--src/cmds/renderer/helpdocs.rs14
-rw-r--r--src/systems/helpdoc.rs2
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!();