aboutsummaryrefslogtreecommitdiffstats
path: root/atuin-client/src/settings.rs
diff options
context:
space:
mode:
authorEllie Huxtable <e@elm.sh>2021-04-25 18:21:52 +0100
committerGitHub <noreply@github.com>2021-04-25 17:21:52 +0000
commit156893d774b4da5b541fdbb08428f9ec392949a0 (patch)
tree9185d94384aa62eb6eb099ddc4ca9408df6f90d1 /atuin-client/src/settings.rs
parentAdd to Cargo.toml (diff)
downloadatuin-156893d774b4da5b541fdbb08428f9ec392949a0.zip
Update docs, unify on SQLx, bugfixes (#40)
* Begin moving to sqlx for local too * Stupid scanners should just have a nice cup of tea Random internet shit searching for /.env or whatever * Remove diesel and rusqlite fully
Diffstat (limited to 'atuin-client/src/settings.rs')
-rw-r--r--atuin-client/src/settings.rs46
1 files changed, 17 insertions, 29 deletions
diff --git a/atuin-client/src/settings.rs b/atuin-client/src/settings.rs
index 254bca6d..4ea4be84 100644
--- a/atuin-client/src/settings.rs
+++ b/atuin-client/src/settings.rs
@@ -5,7 +5,6 @@ use std::path::{Path, PathBuf};
use chrono::prelude::*;
use chrono::Utc;
use config::{Config, Environment, File as ConfigFile};
-use directories::ProjectDirs;
use eyre::{eyre, Result};
use parse_duration::parse;
@@ -28,9 +27,10 @@ pub struct Settings {
impl Settings {
pub fn save_sync_time() -> Result<()> {
- let sync_time_path = ProjectDirs::from("com", "elliehuxtable", "atuin")
- .ok_or_else(|| eyre!("could not determine key file location"))?;
- let sync_time_path = sync_time_path.data_dir().join("last_sync_time");
+ let data_dir = atuin_common::utils::data_dir();
+ let data_dir = data_dir.as_path();
+
+ let sync_time_path = data_dir.join("last_sync_time");
std::fs::write(sync_time_path, Utc::now().to_rfc3339())?;
@@ -38,15 +38,10 @@ impl Settings {
}
pub fn last_sync() -> Result<chrono::DateTime<Utc>> {
- let sync_time_path = ProjectDirs::from("com", "elliehuxtable", "atuin");
-
- if sync_time_path.is_none() {
- debug!("failed to load projectdirs, not syncing");
- return Err(eyre!("could not load project dirs"));
- }
+ let data_dir = atuin_common::utils::data_dir();
+ let data_dir = data_dir.as_path();
- let sync_time_path = sync_time_path.unwrap();
- let sync_time_path = sync_time_path.data_dir().join("last_sync_time");
+ let sync_time_path = data_dir.join("last_sync_time");
if !sync_time_path.exists() {
return Ok(Utc.ymd(1970, 1, 1).and_hms(0, 0, 0));
@@ -73,10 +68,14 @@ impl Settings {
}
pub fn new() -> Result<Self> {
- let config_dir = ProjectDirs::from("com", "elliehuxtable", "atuin").unwrap();
- let config_dir = config_dir.config_dir();
+ let config_dir = atuin_common::utils::config_dir();
+ let config_dir = config_dir.as_path();
+
+ let data_dir = atuin_common::utils::data_dir();
+ let data_dir = data_dir.as_path();
create_dir_all(config_dir)?;
+ create_dir_all(data_dir)?;
let mut config_file = if let Ok(p) = std::env::var("ATUIN_CONFIG_DIR") {
PathBuf::from(p)
@@ -90,27 +89,16 @@ impl Settings {
let mut s = Config::new();
- let db_path = ProjectDirs::from("com", "elliehuxtable", "atuin")
- .ok_or_else(|| eyre!("could not determine db file location"))?
- .data_dir()
- .join("history.db");
-
- let key_path = ProjectDirs::from("com", "elliehuxtable", "atuin")
- .ok_or_else(|| eyre!("could not determine key file location"))?
- .data_dir()
- .join("key");
-
- let session_path = ProjectDirs::from("com", "elliehuxtable", "atuin")
- .ok_or_else(|| eyre!("could not determine session file location"))?
- .data_dir()
- .join("session");
+ let db_path = data_dir.join("history.db");
+ let key_path = data_dir.join("key");
+ let session_path = data_dir.join("session");
s.set_default("db_path", db_path.to_str())?;
s.set_default("key_path", key_path.to_str())?;
s.set_default("session_path", session_path.to_str())?;
s.set_default("dialect", "us")?;
s.set_default("auto_sync", true)?;
- s.set_default("sync_frequency", "5m")?;
+ s.set_default("sync_frequency", "1h")?;
s.set_default("sync_address", "https://api.atuin.sh")?;
if config_file.exists() {