summaryrefslogtreecommitdiff
path: root/src/outputs/status.rs
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-01-23 09:42:09 +0800
committer魏曹先生 <1992414357@qq.com>2026-01-23 09:42:09 +0800
commitf9fa7d65d775959efbc9609ccafd1fdce76129e4 (patch)
tree111fc1933cfbe4bdc4e82207f53b6c1b74cc35e3 /src/outputs/status.rs
parentaee17b68b2b213553cd06406a3a5713ec91f374d (diff)
Add localization and refactor status command output
Diffstat (limited to 'src/outputs/status.rs')
-rw-r--r--src/outputs/status.rs46
1 files changed, 24 insertions, 22 deletions
diff --git a/src/outputs/status.rs b/src/outputs/status.rs
index f9ce875..2b8d9c6 100644
--- a/src/outputs/status.rs
+++ b/src/outputs/status.rs
@@ -1,43 +1,45 @@
-use std::{
- collections::{HashMap, HashSet},
- path::PathBuf,
- time::SystemTime,
-};
+use std::{collections::HashMap, time::SystemTime};
use just_enough_vcs::vcs::data::{
- local::workspace_analyzer::{
- CreatedRelativePathBuf, FromRelativePathBuf, LostRelativePathBuf, ModifiedRelativePathBuf,
- ToRelativePathBuf,
- },
+ local::workspace_analyzer::{AnalyzeResultPure, ModifiedRelativePathBuf},
member::MemberId,
sheet::SheetName,
- vault::virtual_file::VirtualFileId,
};
use serde::Serialize;
#[derive(Serialize)]
-pub struct JVStatusResult {
+pub struct JVStatusOutput {
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 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,
}
-impl Default for JVStatusResult {
+#[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(),
- moved: HashMap::default(),
- created: HashSet::default(),
- lost: HashSet::default(),
- erased: HashSet::default(),
- modified: HashSet::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(),
}