summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/bin/jv.rs56
1 files changed, 42 insertions, 14 deletions
diff --git a/src/bin/jv.rs b/src/bin/jv.rs
index 60055da..4397e17 100644
--- a/src/bin/jv.rs
+++ b/src/bin/jv.rs
@@ -800,6 +800,8 @@ async fn main() {
return;
};
+ let _ = correct_current_dir();
+
// Check if account list is not empty
let Some(dir) = UserDirectory::current_cfg_dir() else {
return;
@@ -1024,7 +1026,9 @@ async fn main() {
}
SheetManage::List(sheet_list_args) => jv_sheet_list(sheet_list_args).await,
SheetManage::Use(sheet_use_args) => jv_sheet_use(sheet_use_args).await,
- SheetManage::Exit(sheet_exit_args) => jv_sheet_exit(sheet_exit_args).await,
+ SheetManage::Exit(sheet_exit_args) => {
+ let _ = jv_sheet_exit(sheet_exit_args).await;
+ }
SheetManage::Make(sheet_make_args) => jv_sheet_make(sheet_make_args).await,
SheetManage::Drop(sheet_drop_args) => jv_sheet_drop(sheet_drop_args).await,
SheetManage::Align(sheet_align_args) => jv_sheet_align(sheet_align_args).await,
@@ -1100,15 +1104,16 @@ async fn main() {
jv_docs(docs_args).await;
}
JustEnoughVcsWorkspaceCommand::Exit => {
- jv_sheet_exit(SheetExitArgs { help: false }).await;
+ let _ = jv_sheet_exit(SheetExitArgs { help: false }).await;
}
JustEnoughVcsWorkspaceCommand::Use(use_args) => {
- jv_sheet_exit(SheetExitArgs { help: false }).await;
- jv_sheet_use(SheetUseArgs {
- help: false,
- sheet_name: use_args.sheet_name,
- })
- .await;
+ if let Ok(_) = jv_sheet_exit(SheetExitArgs { help: false }).await {
+ jv_sheet_use(SheetUseArgs {
+ help: false,
+ sheet_name: use_args.sheet_name,
+ })
+ .await;
+ }
}
JustEnoughVcsWorkspaceCommand::Sheets => {
jv_sheet_list(SheetListArgs {
@@ -1222,16 +1227,19 @@ async fn main() {
};
}
JustEnoughVcsWorkspaceCommand::GetCurrentAccount => {
+ let _ = correct_current_dir();
if let Ok(local_config) = LocalConfig::read().await {
println!("{}", local_config.current_account())
};
}
JustEnoughVcsWorkspaceCommand::GetCurrentUpstream => {
+ let _ = correct_current_dir();
if let Ok(local_config) = LocalConfig::read().await {
println!("{}", local_config.upstream_addr())
};
}
JustEnoughVcsWorkspaceCommand::GetCurrentSheet => {
+ let _ = correct_current_dir();
if let Ok(local_config) = LocalConfig::read().await {
println!(
"{}",
@@ -1980,6 +1988,8 @@ async fn jv_status(_args: StatusArgs) {
}
async fn jv_sheet_list(args: SheetListArgs) {
+ let _ = correct_current_dir();
+
let Some(local_dir) = current_local_path() else {
if !args.raw {
eprintln!("{}", t!("jv.fail.workspace_not_found").trim());
@@ -2096,11 +2106,18 @@ async fn jv_sheet_list(args: SheetListArgs) {
}
async fn jv_sheet_use(args: SheetUseArgs) {
- let Some(_local_dir) = current_local_path() else {
+ let Some(local_dir) = current_local_path() else {
eprintln!("{}", t!("jv.fail.workspace_not_found").trim());
return;
};
+ let current_dir = current_dir().unwrap();
+
+ if local_dir != current_dir {
+ eprintln!("{}", t!("jv.fail.not_root_dir").trim());
+ return;
+ }
+
let Ok(mut local_cfg) = LocalConfig::read().await else {
eprintln!("{}", md(t!("jv.fail.read_cfg")));
return;
@@ -2139,26 +2156,35 @@ async fn jv_sheet_use(args: SheetUseArgs) {
}
}
-async fn jv_sheet_exit(_args: SheetExitArgs) {
- let Some(_local_dir) = current_local_path() else {
+async fn jv_sheet_exit(_args: SheetExitArgs) -> Result<(), ()> {
+ let Some(local_dir) = current_local_path() else {
eprintln!("{}", t!("jv.fail.workspace_not_found").trim());
- return;
+ return Err(());
};
+ let current_dir = current_dir().unwrap();
+
+ if local_dir != current_dir {
+ eprintln!("{}", t!("jv.fail.not_root_dir").trim());
+ return Err(());
+ }
+
let Ok(mut local_cfg) = LocalConfig::read().await else {
eprintln!("{}", md(t!("jv.fail.read_cfg")));
- return;
+ return Err(());
};
match local_cfg.exit_sheet().await {
Ok(_) => {
let Ok(_) = LocalConfig::write(&local_cfg).await else {
eprintln!("{}", t!("jv.fail.write_cfg").trim());
- return;
+ return Err(());
};
+ return Ok(());
}
Err(e) => {
handle_err(e.into());
+ return Err(());
}
}
}
@@ -3804,6 +3830,8 @@ async fn jv_account_remove(user_dir: UserDirectory, args: AccountRemoveArgs) {
}
async fn jv_account_list(user_dir: UserDirectory, args: AccountListArgs) {
+ let _ = correct_current_dir();
+
if args.raw {
let Ok(account_ids) = user_dir.account_ids() else {
return;