diff options
Diffstat (limited to 'src/cmds/out/status.rs')
| -rw-r--r-- | src/cmds/out/status.rs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/src/cmds/out/status.rs b/src/cmds/out/status.rs new file mode 100644 index 0000000..2b8d9c6 --- /dev/null +++ b/src/cmds/out/status.rs @@ -0,0 +1,47 @@ +use std::{collections::HashMap, time::SystemTime}; + +use just_enough_vcs::vcs::data::{ + local::workspace_analyzer::{AnalyzeResultPure, ModifiedRelativePathBuf}, + member::MemberId, + sheet::SheetName, +}; +use serde::Serialize; + +#[derive(Serialize)] +pub struct JVStatusOutput { + pub current_account: MemberId, + pub current_sheet: SheetName, + pub is_host_mode: bool, + pub in_ref_sheet: bool, + pub analyzed_result: AnalyzeResultPure, + pub wrong_modified_items: HashMap<ModifiedRelativePathBuf, JVStatusWrongModifyReason>, + pub update_time: SystemTime, + pub now_time: SystemTime, +} + +#[derive(Serialize)] +pub enum JVStatusWrongModifyReason { + BaseVersionMismatch { + base_version: String, + latest_version: String, + }, + ModifiedButNotHeld { + holder: String, + }, + NoHolder, +} + +impl Default for JVStatusOutput { + fn default() -> Self { + Self { + current_account: MemberId::default(), + current_sheet: SheetName::default(), + is_host_mode: false, + in_ref_sheet: false, + analyzed_result: AnalyzeResultPure::default(), + wrong_modified_items: HashMap::new(), + update_time: SystemTime::now(), + now_time: SystemTime::now(), + } + } +} |
