From 8c1b207ac135e545a71bae3ed88a826d8ee77af1 Mon Sep 17 00:00:00 2001 From: Joscha Date: Sat, 27 Aug 2022 12:06:19 +0200 Subject: [PATCH] Fix --data-dir being incorrectly resolved --- src/main.rs | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main.rs b/src/main.rs index 387d30d..08e471d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,7 +32,6 @@ use clap::Parser; use cookie::CookieJar; use directories::{BaseDirs, ProjectDirs}; use log::info; -use macros::some_or_return; use toss::terminal::Terminal; use ui::Ui; use vault::Vault; @@ -83,13 +82,17 @@ struct Args { } fn set_data_dir(config: &mut Config, args_data_dir: Option) { - let data_dir = some_or_return!(args_data_dir); - let data_dir = if let Some(base_dirs) = BaseDirs::new() { - base_dirs.home_dir().join(data_dir) - } else { - data_dir - }; - config.data_dir = Some(data_dir); + if let Some(data_dir) = args_data_dir { + // The data dir specified via args_data_dir is relative to the current + // directory and needs no resolving. + config.data_dir = Some(data_dir); + } else if let Some(data_dir) = &config.data_dir { + // Resolve the data dir specified in the config file relative to the + // user's home directory, if possible. + if let Some(base_dirs) = BaseDirs::new() { + config.data_dir = Some(base_dirs.home_dir().join(data_dir)); + } + } } fn set_ephemeral(config: &mut Config, args_ephemeral: bool) {