diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-03-12 20:36:09 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-03-12 20:36:09 +0800 |
| commit | 17db6e4dad312d58d4f118ea7542b1ed835d7675 (patch) | |
| tree | 80c3a6cfc2e1054c769cff7a9b0e66453dcfff7c /src/cmds/cmd/helpdoc_list.rs | |
| parent | 2cc0f1766dec2b0b9eb6bfe0d499f2b6d36a591f (diff) | |
Add helpdoc list command
Diffstat (limited to 'src/cmds/cmd/helpdoc_list.rs')
| -rw-r--r-- | src/cmds/cmd/helpdoc_list.rs | 48 |
1 files changed, 48 insertions, 0 deletions
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!(); |
