aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crates/turtle/src/atuin_client/settings.rs14
-rw-r--r--crates/turtle/src/atuin_server/settings.rs29
2 files changed, 25 insertions, 18 deletions
diff --git a/crates/turtle/src/atuin_client/settings.rs b/crates/turtle/src/atuin_client/settings.rs
index e4c21d4a..98829529 100644
--- a/crates/turtle/src/atuin_client/settings.rs
+++ b/crates/turtle/src/atuin_client/settings.rs
@@ -1,9 +1,9 @@
use crypto_secretbox::Key;
use std::{
- collections::HashMap, fmt, fs::read_to_string, io::prelude::Write, path::PathBuf, str::FromStr,
- sync::OnceLock,
+ collections::HashMap, fmt, fs::read_to_string, path::PathBuf, str::FromStr, sync::OnceLock,
};
use tokio::sync::OnceCell;
+use tracing::info;
use uuid::Uuid;
use crate::atuin_common::utils;
@@ -13,7 +13,7 @@ use config::{
Config, ConfigBuilder, Environment, File as ConfigFile, FileFormat, builder::DefaultState,
};
use eyre::{Context, Error, Result, bail, eyre};
-use fs_err::{File, create_dir_all};
+use fs_err::create_dir_all;
use regex::RegexSet;
use serde::{Deserialize, Serialize};
use serde_with::DeserializeFromStr;
@@ -1181,10 +1181,12 @@ impl Settings {
// file with defaults. <2026-06-13>
create_dir_all(config_file.parent().unwrap())?;
- bail!(
- "No config file at: `{}`. Please add one.",
+ info!(
+ "No config file at: `{}`. Not adding one.",
config_file.display()
- )
+ );
+
+ config_builder
};
// all paths should be expanded
diff --git a/crates/turtle/src/atuin_server/settings.rs b/crates/turtle/src/atuin_server/settings.rs
index ee2fbebf..73fc5e42 100644
--- a/crates/turtle/src/atuin_server/settings.rs
+++ b/crates/turtle/src/atuin_server/settings.rs
@@ -1,9 +1,10 @@
use std::path::PathBuf;
use config::{Config, Environment, File as ConfigFile, FileFormat};
-use eyre::{Result, bail, eyre};
+use eyre::{Result, eyre};
use fs_err::create_dir_all;
use serde::{Deserialize, Serialize};
+use tracing::info;
use crate::atuin_server::database::DbSettings;
@@ -62,7 +63,7 @@ impl Settings {
config_file.push("server.toml");
// create the config file if it does not exist
- let config_builder = Config::builder()
+ let mut config_builder = Config::builder()
.set_default("host", "127.0.0.1")?
.set_default("port", 8888)?
.set_default("max_history_length", 8192)?
@@ -78,22 +79,26 @@ impl Settings {
.separator("__"),
);
- let config = if config_file.exists() {
- config_builder
- .add_source(ConfigFile::new(
- config_file.to_str().unwrap(),
- FileFormat::Toml,
- ))
- .build()?
+ config_builder = if config_file.exists() {
+ config_builder.add_source(ConfigFile::new(
+ config_file.to_str().unwrap(),
+ FileFormat::Toml,
+ ))
} else {
+ // TODO(@bpeetz): Rework the config handling, so that we can actually auto-write a
+ // file with defaults. <2026-06-13>
create_dir_all(config_file.parent().unwrap())?;
- bail!(
- "No config file at: `{}`. Please add one.",
+ info!(
+ "No config file at: `{}`. Not adding one.",
config_file.display()
- )
+ );
+
+ config_builder
};
+ let config = config_builder.build()?;
+
config
.try_deserialize()
.map_err(|e| eyre!("failed to deserialize: {}", e))