From cffe4f130d7979df1ebbe84ec77f955b5430e8db Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 23 Jan 2026 05:15:28 +0800 Subject: Move status command types to separate modules --- src/arguments/status.rs | 4 ++++ src/cmds/status.rs | 64 ++++--------------------------------------------- src/outputs.rs | 1 + src/outputs/status.rs | 45 ++++++++++++++++++++++++++++++++++ src/renderers.rs | 1 + src/renderers/status.rs | 18 ++++++++++++++ 6 files changed, 74 insertions(+), 59 deletions(-) create mode 100644 src/outputs/status.rs create mode 100644 src/renderers/status.rs (limited to 'src') 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, - pub created: HashSet, - pub lost: HashSet, - pub erased: HashSet, - pub modified: HashSet, - 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 for JVStatusCommand { @@ -112,11 +66,3 @@ impl JVCommand for JVStatusRenderer { - async fn render(data: &JVStatusResult) -> Result { - 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, + pub created: HashSet, + pub lost: HashSet, + pub erased: HashSet, + pub modified: HashSet, + 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 for JVStatusRenderer { + async fn render(_data: &JVStatusResult) -> Result { + let mut r = JVRenderResult::default(); + r_println!(r, "Nothing"); + Ok(r) + } +} -- cgit