aboutsummaryrefslogtreecommitdiffstats
path: root/crates/atuin-server/src/settings.rs
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 00:54:30 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2026-06-11 00:54:30 +0200
commit5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8 (patch)
treec64baa8d5866c8e339eaf660dd3f94f30a3f7d8a /crates/atuin-server/src/settings.rs
parentchore: Somewhat simplify sync code (diff)
downloadatuin-5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8.zip
chore: Move everything into one big crate
That helps remove duplicated code and rustc/cargo will now also show dead code correctly.
Diffstat (limited to 'crates/atuin-server/src/settings.rs')
-rw-r--r--crates/atuin-server/src/settings.rs113
1 files changed, 0 insertions, 113 deletions
diff --git a/crates/atuin-server/src/settings.rs b/crates/atuin-server/src/settings.rs
deleted file mode 100644
index 3a612be9..00000000
--- a/crates/atuin-server/src/settings.rs
+++ /dev/null
@@ -1,113 +0,0 @@
-use std::{io::prelude::*, path::PathBuf};
-
-use atuin_server_database::DbSettings;
-use config::{Config, Environment, File as ConfigFile, FileFormat};
-use eyre::{Result, eyre};
-use fs_err::{File, create_dir_all};
-use serde::{Deserialize, Serialize};
-
-static EXAMPLE_CONFIG: &str = include_str!("../server.toml");
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Metrics {
- #[serde(alias = "enabled")]
- pub enable: bool,
- pub host: String,
- pub port: u16,
-}
-
-impl Default for Metrics {
- fn default() -> Self {
- Self {
- enable: false,
- host: String::from("127.0.0.1"),
- port: 9001,
- }
- }
-}
-
-#[derive(Clone, Debug, Deserialize, Serialize)]
-pub struct Settings {
- pub host: String,
- pub port: u16,
- pub path: String,
- pub open_registration: bool,
- pub max_history_length: usize,
- pub max_record_size: usize,
- pub page_size: i64,
- pub register_webhook_url: Option<String>,
- pub register_webhook_username: String,
- pub metrics: Metrics,
-
- /// Enable legacy sync v1 routes (history-based sync)
- /// Set to false to use only the newer record-based sync
- pub sync_v1_enabled: bool,
-
- /// Advertise a version that is not what we are _actually_ running
- /// Many clients compare their version with api.atuin.sh, and if they differ, notify the user
- /// that an update is available.
- /// Now that we take beta releases, we should be able to advertise a different version to avoid
- /// notifying users when the server runs something that is not a stable release.
- pub fake_version: Option<String>,
-
- #[serde(flatten)]
- pub db_settings: DbSettings,
-}
-
-impl Settings {
- pub fn new() -> Result<Self> {
- let mut config_file = if let Ok(p) = std::env::var("ATUIN_CONFIG_DIR") {
- PathBuf::from(p)
- } else {
- let mut config_file = PathBuf::new();
- let config_dir = atuin_common::utils::config_dir();
- config_file.push(config_dir);
- config_file
- };
-
- config_file.push("server.toml");
-
- // create the config file if it does not exist
- let mut config_builder = Config::builder()
- .set_default("host", "127.0.0.1")?
- .set_default("port", 8888)?
- .set_default("open_registration", false)?
- .set_default("max_history_length", 8192)?
- .set_default("max_record_size", 1024 * 1024 * 1024)? // pretty chonky
- .set_default("path", "")?
- .set_default("register_webhook_username", "")?
- .set_default("page_size", 1100)?
- .set_default("metrics.enable", false)?
- .set_default("metrics.host", "127.0.0.1")?
- .set_default("metrics.port", 9001)?
- .set_default("sync_v1_enabled", true)?
- .add_source(
- Environment::with_prefix("atuin")
- .prefix_separator("_")
- .separator("__"),
- );
-
- config_builder = if config_file.exists() {
- config_builder.add_source(ConfigFile::new(
- config_file.to_str().unwrap(),
- FileFormat::Toml,
- ))
- } else {
- create_dir_all(config_file.parent().unwrap())?;
- let mut file = File::create(config_file)?;
- file.write_all(EXAMPLE_CONFIG.as_bytes())?;
-
- config_builder
- };
-
- let config = config_builder.build()?;
-
- config
- .try_deserialize()
- .map_err(|e| eyre!("failed to deserialize: {}", e))
- }
-}
-
-pub fn example_config() -> &'static str {
- EXAMPLE_CONFIG
-}