aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmds/arg/workspace_sheet.rs3
-rw-r--r--src/cmds/cmd/workspace_sheet.rs35
-rw-r--r--src/cmds/comp/workspace_sheet.rs6
-rw-r--r--src/cmds/in/workspace_sheet.rs1
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,