summaryrefslogtreecommitdiff
path: root/src/cmds/cmd
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-03-26 16:24:04 +0800
committer魏曹先生 <1992414357@qq.com>2026-03-26 16:24:04 +0800
commitc0e321067a1a19754041ac7996267adfea881037 (patch)
treebb9f8de7e3129ed5de2b465c5570f38599b0e1e2 /src/cmds/cmd
parentba08a376182c839479e6e81cc60c5a0d24865f7f (diff)
Add workspace here command and alias documentation
Diffstat (limited to 'src/cmds/cmd')
-rw-r--r--src/cmds/cmd/workspace_here.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/cmds/cmd/workspace_here.rs b/src/cmds/cmd/workspace_here.rs
new file mode 100644
index 0000000..dde5bab
--- /dev/null
+++ b/src/cmds/cmd/workspace_here.rs
@@ -0,0 +1,50 @@
+use crate::{
+ cmd_output,
+ cmds::{
+ arg::empty::JVEmptyArgument, collect::workspace::JVWorkspaceCollect,
+ converter::space_error::JVSpaceErrorConverter, r#in::empty::JVEmptyInput,
+ out::path::JVPathOutput,
+ },
+ systems::{
+ cmd::{
+ cmd_system::{AnyOutput, JVCommandContext},
+ errors::{CmdExecuteError, CmdPrepareError},
+ },
+ helpdoc::helpdoc_viewer,
+ },
+};
+use cmd_system_macros::exec;
+use just_enough_vcs::system::workspace::workspace::manager::WorkspaceManager;
+
+pub struct JVWorkspaceHereCommand;
+type Cmd = JVWorkspaceHereCommand;
+type Arg = JVEmptyArgument;
+type In = JVEmptyInput;
+type Collect = JVWorkspaceCollect;
+
+async fn help_str() -> String {
+ helpdoc_viewer::display("commands/workspace_here").await;
+ String::new()
+}
+
+async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareError> {
+ Ok(JVEmptyInput)
+}
+
+async fn collect(_args: &Arg, _ctx: &JVCommandContext) -> Result<Collect, CmdPrepareError> {
+ Ok(JVWorkspaceCollect {
+ manager: WorkspaceManager::new(),
+ })
+}
+
+#[exec]
+async fn exec(_input: In, collect: Collect) -> Result<AnyOutput, CmdExecuteError> {
+ let path = collect
+ .manager
+ .get_space()
+ .space_dir_current()
+ .map_err(JVSpaceErrorConverter::to_exec_error)?;
+ cmd_output!(JVPathOutput => JVPathOutput { path })
+}
+
+crate::command_template!();