diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-02-25 10:58:51 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-02-25 10:58:51 +0800 |
| commit | ec6fdf88419a7fdad0128f04bb7a0478776974ab (patch) | |
| tree | 1e44067a7afef878bed9b8b228f6555806e77738 /src/cmds/cmd/hexdump.rs | |
| parent | 6bd344793e5c2e84361475d6e221007ef21faaad (diff) | |
Add hexdump and sheetdump commands
Diffstat (limited to 'src/cmds/cmd/hexdump.rs')
| -rw-r--r-- | src/cmds/cmd/hexdump.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/cmds/cmd/hexdump.rs b/src/cmds/cmd/hexdump.rs new file mode 100644 index 0000000..a0f4a21 --- /dev/null +++ b/src/cmds/cmd/hexdump.rs @@ -0,0 +1,44 @@ +use crate::{ + cmd_output, + cmds::{ + arg::single_file::JVSingleFileArgument, collect::single_file::JVSingleFileCollect, + r#in::empty::JVEmptyInput, out::hex::JVHexOutput, + }, + systems::cmd::{ + cmd_system::JVCommandContext, + errors::{CmdExecuteError, CmdPrepareError}, + }, +}; +use cmd_system_macros::exec; +use tokio::fs; + +pub struct JVHexdumpCommand; +type Cmd = JVHexdumpCommand; +type Arg = JVSingleFileArgument; +type In = JVEmptyInput; +type Collect = JVSingleFileCollect; + +fn help_str() -> String { + "Hello".to_string() +} + +async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareError> { + Ok(In {}) +} + +async fn collect(args: &Arg, _ctx: &JVCommandContext) -> Result<Collect, CmdPrepareError> { + let file = &args.file; + let data = fs::read(file).await?; + Ok(Collect { data }) +} + +#[exec] +async fn exec( + _input: In, + collect: Collect, +) -> Result<(Box<dyn std::any::Any + Send + 'static>, String), CmdExecuteError> { + let output = JVHexOutput { data: collect.data }; + cmd_output!(output, JVHexOutput) +} + +crate::command_template!(); |
