diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-01-23 05:15:28 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-01-23 05:15:28 +0800 |
| commit | cffe4f130d7979df1ebbe84ec77f955b5430e8db (patch) | |
| tree | 79c5e23ea9555acad308fd677fe73b2e7f320063 | |
| parent | 0a150104ea4ff39986a65216386423603d5e3119 (diff) | |
Move status command types to separate modules
| -rw-r--r-- | src/arguments/status.rs | 4 | ||||
| -rw-r--r-- | src/cmds/status.rs | 64 | ||||
| -rw-r--r-- | src/outputs.rs | 1 | ||||
| -rw-r--r-- | src/outputs/status.rs | 45 | ||||
| -rw-r--r-- | src/renderers.rs | 1 | ||||
| -rw-r--r-- | src/renderers/status.rs | 18 |
6 files changed, 74 insertions, 59 deletions
diff --git a/src/arguments/status.rs b/src/arguments/status.rs index e69de29..c713227 100644 --- a/src/arguments/status.rs +++ b/src/arguments/status.rs @@ -0,0 +1,4 @@ +use clap::Parser; + +#[derive(Parser, Debug)] +pub struct JVStatusArgument; diff --git a/src/cmds/status.rs b/src/cmds/status.rs index 57e9cde..8279e50 100644 --- a/src/cmds/status.rs +++ b/src/cmds/status.rs @@ -1,64 +1,18 @@ -use std::{ - collections::{HashMap, HashSet}, - path::PathBuf, - time::SystemTime, -}; - -use clap::Parser; -use just_enough_vcs::vcs::data::{ - local::workspace_analyzer::{ - CreatedRelativePathBuf, FromRelativePathBuf, LostRelativePathBuf, ModifiedRelativePathBuf, - ToRelativePathBuf, - }, - member::MemberId, - sheet::SheetName, - vault::virtual_file::VirtualFileId, -}; -use serde::Serialize; +use std::time::SystemTime; use crate::{ + arguments::status::JVStatusArgument, + outputs::status::JVStatusResult, + renderers::status::JVStatusRenderer, systems::cmd::{ cmd_system::{JVCommand, JVCommandContext}, - errors::{CmdExecuteError, CmdPrepareError, CmdRenderError}, - renderer::{JVRenderResult, JVResultRenderer}, + errors::{CmdExecuteError, CmdPrepareError}, }, utils::workspace_reader::LocalWorkspaceReader, }; pub struct JVStatusCommand; -#[derive(Parser, Debug)] -pub struct JVStatusArgument; - -#[derive(Serialize)] -pub struct JVStatusResult { - pub current_account: MemberId, - pub current_sheet: SheetName, - pub moved: HashMap<VirtualFileId, (FromRelativePathBuf, ToRelativePathBuf)>, - pub created: HashSet<CreatedRelativePathBuf>, - pub lost: HashSet<LostRelativePathBuf>, - pub erased: HashSet<PathBuf>, - pub modified: HashSet<ModifiedRelativePathBuf>, - pub update_time: SystemTime, - pub now_time: SystemTime, -} - -impl Default for JVStatusResult { - fn default() -> Self { - Self { - current_account: MemberId::default(), - current_sheet: SheetName::default(), - moved: HashMap::default(), - created: HashSet::default(), - lost: HashSet::default(), - erased: HashSet::default(), - modified: HashSet::default(), - update_time: SystemTime::now(), - now_time: SystemTime::now(), - } - } -} - impl JVCommand<JVStatusArgument, JVStatusResult, JVStatusResult, JVStatusRenderer> for JVStatusCommand { @@ -112,11 +66,3 @@ impl JVCommand<JVStatusArgument, JVStatusResult, JVStatusResult, JVStatusRendere "".to_string() } } - -pub struct JVStatusRenderer; - -impl JVResultRenderer<JVStatusResult> for JVStatusRenderer { - async fn render(data: &JVStatusResult) -> Result<JVRenderResult, CmdRenderError> { - todo!() - } -} diff --git a/src/outputs.rs b/src/outputs.rs index e69de29..822c729 100644 --- a/src/outputs.rs +++ b/src/outputs.rs @@ -0,0 +1 @@ +pub mod status; diff --git a/src/outputs/status.rs b/src/outputs/status.rs new file mode 100644 index 0000000..f9ce875 --- /dev/null +++ b/src/outputs/status.rs @@ -0,0 +1,45 @@ +use std::{ + collections::{HashMap, HashSet}, + path::PathBuf, + time::SystemTime, +}; + +use just_enough_vcs::vcs::data::{ + local::workspace_analyzer::{ + CreatedRelativePathBuf, FromRelativePathBuf, LostRelativePathBuf, ModifiedRelativePathBuf, + ToRelativePathBuf, + }, + member::MemberId, + sheet::SheetName, + vault::virtual_file::VirtualFileId, +}; +use serde::Serialize; + +#[derive(Serialize)] +pub struct JVStatusResult { + pub current_account: MemberId, + pub current_sheet: SheetName, + pub moved: HashMap<VirtualFileId, (FromRelativePathBuf, ToRelativePathBuf)>, + pub created: HashSet<CreatedRelativePathBuf>, + pub lost: HashSet<LostRelativePathBuf>, + pub erased: HashSet<PathBuf>, + pub modified: HashSet<ModifiedRelativePathBuf>, + pub update_time: SystemTime, + pub now_time: SystemTime, +} + +impl Default for JVStatusResult { + fn default() -> Self { + Self { + current_account: MemberId::default(), + current_sheet: SheetName::default(), + moved: HashMap::default(), + created: HashSet::default(), + lost: HashSet::default(), + erased: HashSet::default(), + modified: HashSet::default(), + update_time: SystemTime::now(), + now_time: SystemTime::now(), + } + } +} diff --git a/src/renderers.rs b/src/renderers.rs index 60ad190..48478c0 100644 --- a/src/renderers.rs +++ b/src/renderers.rs @@ -1,2 +1,3 @@ pub mod json; pub mod json_pretty; +pub mod status; diff --git a/src/renderers/status.rs b/src/renderers/status.rs new file mode 100644 index 0000000..0bf1c5c --- /dev/null +++ b/src/renderers/status.rs @@ -0,0 +1,18 @@ +use crate::{ + outputs::status::JVStatusResult, + r_println, + systems::cmd::{ + errors::CmdRenderError, + renderer::{JVRenderResult, JVResultRenderer}, + }, +}; + +pub struct JVStatusRenderer; + +impl JVResultRenderer<JVStatusResult> for JVStatusRenderer { + async fn render(_data: &JVStatusResult) -> Result<JVRenderResult, CmdRenderError> { + let mut r = JVRenderResult::default(); + r_println!(r, "Nothing"); + Ok(r) + } +} |
