From 478ccf2b33ee06f43a27378992280b8f62de6531 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 13 Jun 2026 20:45:39 +0200 Subject: fix({client,server}/settings): Don't fail, when there is no config file --- crates/turtle/src/atuin_server/settings.rs | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'crates/turtle/src/atuin_server') 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)) -- cgit v1.3.1