diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmds/arg/workspace_sheet.rs | 3 | ||||
| -rw-r--r-- | src/cmds/cmd/workspace_sheet.rs | 35 | ||||
| -rw-r--r-- | src/cmds/comp/workspace_sheet.rs | 6 | ||||
| -rw-r--r-- | src/cmds/in/workspace_sheet.rs | 1 |
4 files changed, 38 insertions, 7 deletions
diff --git a/src/cmds/arg/workspace_sheet.rs b/src/cmds/arg/workspace_sheet.rs index 7cf65e4..7115c17 100644 --- a/src/cmds/arg/workspace_sheet.rs +++ b/src/cmds/arg/workspace_sheet.rs @@ -8,6 +8,9 @@ pub struct JVWorkspaceSheetArgument { pub name: Option<String>, + #[arg(short = 'a', long = "active")] + pub active: bool, + #[arg(short = 'n', long = "new")] pub new: bool, diff --git a/src/cmds/cmd/workspace_sheet.rs b/src/cmds/cmd/workspace_sheet.rs index 2154b43..e824d70 100644 --- a/src/cmds/cmd/workspace_sheet.rs +++ b/src/cmds/cmd/workspace_sheet.rs @@ -3,7 +3,9 @@ use crate::{ cmds::{ arg::workspace_sheet::JVWorkspaceSheetArgument, collect::workspace::JVWorkspaceCollect, - converter::make_sheet_error::MakeSheetErrorConverter, + converter::{ + make_sheet_error::MakeSheetErrorConverter, space_error::JVSpaceErrorConverter, + }, r#in::workspace_sheet::JVWorkspaceSheetInput, out::{none::JVNoneOutput, path::JVPathOutput, string_vcs::JVStringVecOutput}, }, @@ -31,8 +33,24 @@ async fn help_str() -> String { } async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareError> { - let input = match (_args.new, _args.delete, _args.list_all, _args.print_path) { - (true, false, false, false) => { + let input = match ( + _args.active, + _args.new, + _args.delete, + _args.list_all, + _args.print_path, + ) { + (true, false, false, false, false) => { + let name = _args.name.as_ref().ok_or_else(|| { + CmdPrepareError::Error( + t!("workspace_sheet.error.sheet_name_required_for_active") + .trim() + .to_string(), + ) + })?; + JVWorkspaceSheetInput::Active(name.clone()) + } + (false, true, false, false, false) => { let name = _args.name.as_ref().ok_or_else(|| { CmdPrepareError::Error( t!("workspace_sheet.error.sheet_name_required_for_new") @@ -42,7 +60,7 @@ async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareE })?; JVWorkspaceSheetInput::Add(name.clone()) } - (false, true, false, false) => { + (false, false, true, false, false) => { let name = _args.name.as_ref().ok_or_else(|| { CmdPrepareError::Error( t!("workspace_sheet.error.sheet_name_required_for_delete") @@ -52,8 +70,8 @@ async fn prepare(_args: &Arg, _ctx: &JVCommandContext) -> Result<In, CmdPrepareE })?; JVWorkspaceSheetInput::Delete(name.clone()) } - (false, false, true, false) => JVWorkspaceSheetInput::ListAll, - (false, false, false, true) => { + (false, false, false, true, false) => JVWorkspaceSheetInput::ListAll, + (false, false, false, false, true) => { let name = _args.name.as_ref().ok_or_else(|| { CmdPrepareError::Error( t!("workspace_sheet.error.sheet_name_required_for_print_path") @@ -83,6 +101,11 @@ async fn collect(_args: &Arg, _ctx: &JVCommandContext) -> Result<Collect, CmdPre #[exec] async fn exec(input: In, collect: Collect) -> Result<AnyOutput, CmdExecuteError> { match input { + JVWorkspaceSheetInput::Active(sheet_name) => { + if let Err(e) = collect.manager.edit_using_sheet_name(sheet_name).await { + return Err(JVSpaceErrorConverter::to_exec_error(e)); + } + } JVWorkspaceSheetInput::Add(sheet_name) => { if let Err(e) = collect.manager.make_sheet(sheet_name).await { return Err(MakeSheetErrorConverter::to_exec_error(e)); diff --git a/src/cmds/comp/workspace_sheet.rs b/src/cmds/comp/workspace_sheet.rs index d74f3c8..a0dd260 100644 --- a/src/cmds/comp/workspace_sheet.rs +++ b/src/cmds/comp/workspace_sheet.rs @@ -7,6 +7,8 @@ use crate::systems::comp::{context::CompletionContext, result::CompletionResult} pub fn comp(ctx: CompletionContext) -> CompletionResult { if ctx.current_word.starts_with('-') { return suggest!( + "-a" = t!("workspace_sheet.comp.active").trim(), + "--active" = t!("workspace_sheet.comp.active").trim(), "-A" = t!("workspace_sheet.comp.list_all").trim(), "--list-all" = t!("workspace_sheet.comp.list_all").trim(), "-p" = t!("workspace_sheet.comp.print_path").trim(), @@ -23,7 +25,9 @@ pub fn comp(ctx: CompletionContext) -> CompletionResult { return suggest!().into(); } - if ctx.previous_word == "--list-all" + if ctx.previous_word == "--active" + || ctx.previous_word == "-a" + || ctx.previous_word == "--list-all" || ctx.previous_word == "-A" || ctx.previous_word == "--print-path" || ctx.previous_word == "-p" diff --git a/src/cmds/in/workspace_sheet.rs b/src/cmds/in/workspace_sheet.rs index 78159ac..a1f33fd 100644 --- a/src/cmds/in/workspace_sheet.rs +++ b/src/cmds/in/workspace_sheet.rs @@ -1,4 +1,5 @@ pub enum JVWorkspaceSheetInput { + Active(String), Add(String), Delete(String), ListAll, |
