diff options
| author | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-06-11 00:54:30 +0200 |
|---|---|---|
| committer | Benedikt Peetz <benedikt.peetz@b-peetz.de> | 2026-06-11 00:54:30 +0200 |
| commit | 5c39e7cf284a1f6e9a1657f2deb44e359fc47eb8 (patch) | |
| tree | c64baa8d5866c8e339eaf660dd3f94f30a3f7d8a /crates/atuin-server/src | |
| parent | chore: Somewhat simplify sync code (diff) | |
| download | atuin-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 '')
| -rw-r--r-- | crates/atuin-server/src/bin/main.rs | 73 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/health.rs (renamed from crates/atuin-server/src/handlers/health.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/history.rs (renamed from crates/atuin-server/src/handlers/history.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/mod.rs (renamed from crates/atuin-server/src/handlers/mod.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/record.rs (renamed from crates/atuin-server/src/handlers/record.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/status.rs (renamed from crates/atuin-server/src/handlers/status.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/user.rs (renamed from crates/atuin-server/src/handlers/user.rs) | 8 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/v0/me.rs (renamed from crates/atuin-server/src/handlers/v0/me.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/v0/mod.rs (renamed from crates/atuin-server/src/handlers/v0/mod.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/v0/record.rs (renamed from crates/atuin-server/src/handlers/v0/record.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/handlers/v0/store.rs (renamed from crates/atuin-server/src/handlers/v0/store.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/metrics.rs (renamed from crates/atuin-server/src/metrics.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/mod.rs (renamed from crates/atuin-server/src/lib.rs) | 5 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/router.rs (renamed from crates/atuin-server/src/router.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/settings.rs (renamed from crates/atuin-server/src/settings.rs) | 31 | ||||
| -rw-r--r-- | crates/turtle/src/atuin_server/utils.rs (renamed from crates/atuin-server/src/utils.rs) | 0 |
16 files changed, 41 insertions, 120 deletions
diff --git a/crates/atuin-server/src/bin/main.rs b/crates/atuin-server/src/bin/main.rs deleted file mode 100644 index 960bdf6e..00000000 --- a/crates/atuin-server/src/bin/main.rs +++ /dev/null @@ -1,73 +0,0 @@ -#![forbid(unsafe_code)] - -use std::net::SocketAddr; - -use atuin_server::{Settings, example_config, launch, launch_metrics_server}; -use atuin_server_database::DbType; -use atuin_server_postgres::Postgres; -use atuin_server_sqlite::Sqlite; - -use clap::Parser; -use eyre::{Context, Result, eyre}; -use tracing_subscriber::{EnvFilter, fmt, prelude::*}; - -#[derive(Parser, Debug)] -#[clap( - name = "atuin-server", - about = "Atuin sync server", - version, - infer_subcommands = true -)] -enum Cmd { - /// Start the server - Start { - /// The host address to bind - #[clap(long)] - host: Option<String>, - - /// The port to bind - #[clap(long, short)] - port: Option<u16>, - }, - - /// Print server example configuration - DefaultConfig, -} - -#[tokio::main] -async fn main() -> Result<()> { - let cmd = Cmd::parse(); - - tracing_subscriber::registry() - .with(fmt::layer()) - .with(EnvFilter::from_default_env()) - .init(); - - tracing::trace!(command = ?cmd, "server command"); - - match cmd { - Cmd::Start { host, port } => { - let settings = Settings::new().wrap_err("could not load server settings")?; - let host = host.as_ref().unwrap_or(&settings.host).clone(); - let port = port.unwrap_or(settings.port); - let addr = SocketAddr::new(host.parse()?, port); - - if settings.metrics.enable { - tokio::spawn(launch_metrics_server( - settings.metrics.host.clone(), - settings.metrics.port, - )); - } - - match settings.db_settings.db_type() { - DbType::Postgres => launch::<Postgres>(settings, addr).await, - DbType::Sqlite => launch::<Sqlite>(settings, addr).await, - DbType::Unknown => Err(eyre!("db_uri must start with postgres:// or sqlite://")), - } - } - Cmd::DefaultConfig => { - println!("{}", example_config()); - Ok(()) - } - } -} diff --git a/crates/atuin-server/src/handlers/health.rs b/crates/turtle/src/atuin_server/handlers/health.rs index aebd1e8f..aebd1e8f 100644 --- a/crates/atuin-server/src/handlers/health.rs +++ b/crates/turtle/src/atuin_server/handlers/health.rs diff --git a/crates/atuin-server/src/handlers/history.rs b/crates/turtle/src/atuin_server/handlers/history.rs index bdafcc60..7f09161b 100644 --- a/crates/atuin-server/src/handlers/history.rs +++ b/crates/turtle/src/atuin_server/handlers/history.rs @@ -10,17 +10,17 @@ use time::{Month, UtcOffset}; use tracing::{debug, error, instrument}; use super::{ErrorResponse, ErrorResponseStatus, RespExt}; -use crate::{ +use crate::atuin_server::{ router::{AppState, UserAuth}, utils::client_version_min, }; -use atuin_server_database::{ +use crate::atuin_server_database::{ Database, calendar::{TimePeriod, TimePeriodInfo}, models::NewHistory, }; -use atuin_common::api::*; +use crate::atuin_common::api::*; #[instrument(skip_all, fields(user.id = user.id))] pub async fn count<DB: Database>( diff --git a/crates/atuin-server/src/handlers/mod.rs b/crates/turtle/src/atuin_server/handlers/mod.rs index 2176ac5e..7722d03e 100644 --- a/crates/atuin-server/src/handlers/mod.rs +++ b/crates/turtle/src/atuin_server/handlers/mod.rs @@ -1,8 +1,8 @@ -use atuin_common::api::{ErrorResponse, IndexResponse}; -use atuin_server_database::Database; +use crate::atuin_common::api::{ErrorResponse, IndexResponse}; +use crate::atuin_server_database::Database; use axum::{Json, extract::State, http, response::IntoResponse}; -use crate::router::AppState; +use crate::atuin_server::router::AppState; pub mod health; pub mod history; diff --git a/crates/atuin-server/src/handlers/record.rs b/crates/turtle/src/atuin_server/handlers/record.rs index 410c54bd..63325606 100644 --- a/crates/atuin-server/src/handlers/record.rs +++ b/crates/turtle/src/atuin_server/handlers/record.rs @@ -3,9 +3,9 @@ use serde_json::json; use tracing::instrument; use super::{ErrorResponse, ErrorResponseStatus, RespExt}; -use crate::router::UserAuth; +use crate::atuin_server::router::UserAuth; -use atuin_common::record::{EncryptedData, Record}; +use crate::atuin_common::record::{EncryptedData, Record}; #[instrument(skip_all, fields(user.id = user.id))] pub async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'static>> { diff --git a/crates/atuin-server/src/handlers/status.rs b/crates/turtle/src/atuin_server/handlers/status.rs index 9c152d51..0cf2ca1e 100644 --- a/crates/atuin-server/src/handlers/status.rs +++ b/crates/turtle/src/atuin_server/handlers/status.rs @@ -2,10 +2,10 @@ use axum::{Json, extract::State, http::StatusCode}; use tracing::instrument; use super::{ErrorResponse, ErrorResponseStatus, RespExt}; -use crate::router::{AppState, UserAuth}; -use atuin_server_database::Database; +use crate::atuin_server::router::{AppState, UserAuth}; +use crate::atuin_server_database::Database; -use atuin_common::api::*; +use crate::atuin_common::api::*; const VERSION: &str = env!("CARGO_PKG_VERSION"); diff --git a/crates/atuin-server/src/handlers/user.rs b/crates/turtle/src/atuin_server/handlers/user.rs index dda7a381..01b72202 100644 --- a/crates/atuin-server/src/handlers/user.rs +++ b/crates/turtle/src/atuin_server/handlers/user.rs @@ -16,18 +16,18 @@ use metrics::counter; use rand::rngs::OsRng; use tracing::{debug, error, info, instrument}; -use atuin_common::tls::ensure_crypto_provider; +use crate::atuin_common::tls::ensure_crypto_provider; use super::{ErrorResponse, ErrorResponseStatus, RespExt}; -use crate::router::{AppState, UserAuth}; -use atuin_server_database::{ +use crate::atuin_server::router::{AppState, UserAuth}; +use crate::atuin_server_database::{ Database, DbError, models::{NewSession, NewUser}, }; use reqwest::header::CONTENT_TYPE; -use atuin_common::{api::*, utils::crypto_random_string}; +use crate::atuin_common::{api::*, utils::crypto_random_string}; pub fn verify_str(hash: &str, password: &str) -> bool { let arg2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default()); diff --git a/crates/atuin-server/src/handlers/v0/me.rs b/crates/turtle/src/atuin_server/handlers/v0/me.rs index 7960b479..a1e2db46 100644 --- a/crates/atuin-server/src/handlers/v0/me.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/me.rs @@ -1,10 +1,10 @@ use axum::Json; use tracing::instrument; -use crate::handlers::ErrorResponseStatus; -use crate::router::UserAuth; +use crate::atuin_server::handlers::ErrorResponseStatus; +use crate::atuin_server::router::UserAuth; -use atuin_common::api::*; +use crate::atuin_common::api::*; #[instrument(skip_all, fields(user.id = user.id))] pub async fn get( diff --git a/crates/atuin-server/src/handlers/v0/mod.rs b/crates/turtle/src/atuin_server/handlers/v0/mod.rs index d6f880f2..d6f880f2 100644 --- a/crates/atuin-server/src/handlers/v0/mod.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/mod.rs diff --git a/crates/atuin-server/src/handlers/v0/record.rs b/crates/turtle/src/atuin_server/handlers/v0/record.rs index 5c57910b..9b147a52 100644 --- a/crates/atuin-server/src/handlers/v0/record.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/record.rs @@ -3,13 +3,13 @@ use metrics::counter; use serde::Deserialize; use tracing::{error, instrument}; -use crate::{ +use crate::atuin_server::{ handlers::{ErrorResponse, ErrorResponseStatus, RespExt}, router::{AppState, UserAuth}, }; -use atuin_server_database::Database; +use crate::atuin_server_database::Database; -use atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus}; +use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus}; #[instrument(skip_all, fields(user.id = user.id))] pub async fn post<DB: Database>( diff --git a/crates/atuin-server/src/handlers/v0/store.rs b/crates/turtle/src/atuin_server/handlers/v0/store.rs index 6ca455d7..cd184546 100644 --- a/crates/atuin-server/src/handlers/v0/store.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/store.rs @@ -3,11 +3,11 @@ use metrics::counter; use serde::Deserialize; use tracing::{error, instrument}; -use crate::{ +use crate::atuin_server::{ handlers::{ErrorResponse, ErrorResponseStatus, RespExt}, router::{AppState, UserAuth}, }; -use atuin_server_database::Database; +use crate::atuin_server_database::Database; #[derive(Deserialize)] pub struct DeleteParams {} diff --git a/crates/atuin-server/src/metrics.rs b/crates/turtle/src/atuin_server/metrics.rs index ebd0dd2d..ebd0dd2d 100644 --- a/crates/atuin-server/src/metrics.rs +++ b/crates/turtle/src/atuin_server/metrics.rs diff --git a/crates/atuin-server/src/lib.rs b/crates/turtle/src/atuin_server/mod.rs index 02e50e1e..bd0f2168 100644 --- a/crates/atuin-server/src/lib.rs +++ b/crates/turtle/src/atuin_server/mod.rs @@ -1,9 +1,7 @@ -#![forbid(unsafe_code)] - use std::future::Future; use std::net::SocketAddr; -use atuin_server_database::Database; +use crate::atuin_server_database::Database; use axum::{Router, serve}; use eyre::{Context, Result}; @@ -13,7 +11,6 @@ mod router; mod utils; pub use settings::Settings; -pub use settings::example_config; pub mod settings; diff --git a/crates/atuin-server/src/router.rs b/crates/turtle/src/atuin_server/router.rs index 2d679759..11a16148 100644 --- a/crates/atuin-server/src/router.rs +++ b/crates/turtle/src/atuin_server/router.rs @@ -1,4 +1,4 @@ -use atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse}; +use crate::atuin_common::api::{ATUIN_CARGO_VERSION, ATUIN_HEADER_VERSION, ErrorResponse}; use axum::{ Router, extract::{FromRequestParts, Request}, @@ -12,12 +12,12 @@ use tower::ServiceBuilder; use tower_http::trace::TraceLayer; use super::handlers; -use crate::{ +use crate::atuin_server::{ handlers::{ErrorResponseStatus, RespExt}, metrics, settings::Settings, }; -use atuin_server_database::{Database, DbError, models::User}; +use crate::atuin_server_database::{Database, DbError, models::User}; pub struct UserAuth(pub User); diff --git a/crates/atuin-server/src/settings.rs b/crates/turtle/src/atuin_server/settings.rs index 3a612be9..f6650af0 100644 --- a/crates/atuin-server/src/settings.rs +++ b/crates/turtle/src/atuin_server/settings.rs @@ -1,13 +1,11 @@ use std::{io::prelude::*, path::PathBuf}; -use atuin_server_database::DbSettings; +use crate::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")] @@ -60,7 +58,7 @@ impl Settings { PathBuf::from(p) } else { let mut config_file = PathBuf::new(); - let config_dir = atuin_common::utils::config_dir(); + let config_dir = crate::atuin_common::utils::config_dir(); config_file.push(config_dir); config_file }; @@ -87,27 +85,26 @@ impl Settings { .separator("__"), ); - config_builder = if config_file.exists() { - config_builder.add_source(ConfigFile::new( - config_file.to_str().unwrap(), - FileFormat::Toml, - )) + let config = if config_file.exists() { + config_builder + .add_source(ConfigFile::new( + config_file.to_str().unwrap(), + FileFormat::Toml, + )) + .build()? } 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()?; + // TODO(@bpeetz): I'm quiet unsure, if this will work <2026-06-10> + file.write_all(config.cache.to_string().as_bytes())?; - let config = config_builder.build()?; + config + }; config .try_deserialize() .map_err(|e| eyre!("failed to deserialize: {}", e)) } } - -pub fn example_config() -> &'static str { - EXAMPLE_CONFIG -} diff --git a/crates/atuin-server/src/utils.rs b/crates/turtle/src/atuin_server/utils.rs index 12e9ac1b..12e9ac1b 100644 --- a/crates/atuin-server/src/utils.rs +++ b/crates/turtle/src/atuin_server/utils.rs |
