summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arguments/status.rs4
-rw-r--r--src/cmds/status.rs64
-rw-r--r--src/outputs.rs1
-rw-r--r--src/outputs/status.rs45
-rw-r--r--src/renderers.rs1
-rw-r--r--src/renderers/status.rs18
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)
+ }
+}