aboutsummaryrefslogtreecommitdiffstats
path: root/crates/turtle/src/atuin_server/settings.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/turtle/src/atuin_server/settings.rs')
-rw-r--r--crates/turtle/src/atuin_server/settings.rs29
1 files changed, 17 insertions, 12 deletions
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))