From 199563550dd41c3dfb703bd3747604a8a03cdbc5 Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Thu, 11 Jun 2026 14:20:49 +0200 Subject: chore: Remove all `pub`s They will not be marked by rustc/cargo as unused, and as atuin doesn't expose an API all of them _should_ be `pub(crate)` --- crates/turtle/src/atuin_server/handlers/health.rs | 6 ++-- crates/turtle/src/atuin_server/handlers/history.rs | 18 +++++----- crates/turtle/src/atuin_server/handlers/mod.rs | 22 ++++++------- crates/turtle/src/atuin_server/handlers/record.rs | 6 ++-- crates/turtle/src/atuin_server/handlers/status.rs | 2 +- crates/turtle/src/atuin_server/handlers/user.rs | 12 +++---- crates/turtle/src/atuin_server/handlers/v0/me.rs | 2 +- .../turtle/src/atuin_server/handlers/v0/record.rs | 8 ++--- .../turtle/src/atuin_server/handlers/v0/store.rs | 4 +-- crates/turtle/src/atuin_server/metrics.rs | 4 +-- crates/turtle/src/atuin_server/mod.rs | 10 +++--- crates/turtle/src/atuin_server/router.rs | 10 +++--- crates/turtle/src/atuin_server/settings.rs | 38 +++++++++++----------- crates/turtle/src/atuin_server/utils.rs | 2 +- 14 files changed, 72 insertions(+), 72 deletions(-) (limited to 'crates/turtle/src/atuin_server') diff --git a/crates/turtle/src/atuin_server/handlers/health.rs b/crates/turtle/src/atuin_server/handlers/health.rs index aebd1e8f..d39f7aa5 100644 --- a/crates/turtle/src/atuin_server/handlers/health.rs +++ b/crates/turtle/src/atuin_server/handlers/health.rs @@ -3,11 +3,11 @@ use axum::{Json, http, response::IntoResponse}; use serde::Serialize; #[derive(Serialize)] -pub struct HealthResponse { - pub status: &'static str, +pub(crate) struct HealthResponse { + pub(crate) status: &'static str, } -pub async fn health_check() -> impl IntoResponse { +pub(crate) async fn health_check() -> impl IntoResponse { ( http::StatusCode::OK, Json(HealthResponse { status: "healthy" }), diff --git a/crates/turtle/src/atuin_server/handlers/history.rs b/crates/turtle/src/atuin_server/handlers/history.rs index 7f09161b..e5057bcb 100644 --- a/crates/turtle/src/atuin_server/handlers/history.rs +++ b/crates/turtle/src/atuin_server/handlers/history.rs @@ -23,7 +23,7 @@ use crate::atuin_server_database::{ use crate::atuin_common::api::*; #[instrument(skip_all, fields(user.id = user.id))] -pub async fn count( +pub(crate) async fn count( UserAuth(user): UserAuth, state: State>, ) -> Result, ErrorResponseStatus<'static>> { @@ -43,7 +43,7 @@ pub async fn count( } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn list( +pub(crate) async fn list( req: Query, UserAuth(user): UserAuth, headers: HeaderMap, @@ -101,7 +101,7 @@ pub async fn list( } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn delete( +pub(crate) async fn delete( UserAuth(user): UserAuth, state: State>, Json(req): Json, @@ -123,7 +123,7 @@ pub async fn delete( } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn add( +pub(crate) async fn add( UserAuth(user): UserAuth, state: State>, Json(req): Json>, @@ -174,7 +174,7 @@ pub async fn add( } #[derive(serde::Deserialize, Debug)] -pub struct CalendarQuery { +pub(crate) struct CalendarQuery { #[serde(default = "serde_calendar::zero")] year: i32, #[serde(default = "serde_calendar::one")] @@ -187,21 +187,21 @@ pub struct CalendarQuery { mod serde_calendar { use time::UtcOffset; - pub fn zero() -> i32 { + pub(crate) fn zero() -> i32 { 0 } - pub fn one() -> u8 { + pub(crate) fn one() -> u8 { 1 } - pub fn utc() -> UtcOffset { + pub(crate) fn utc() -> UtcOffset { UtcOffset::UTC } } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn calendar( +pub(crate) async fn calendar( Path(focus): Path, Query(params): Query, UserAuth(user): UserAuth, diff --git a/crates/turtle/src/atuin_server/handlers/mod.rs b/crates/turtle/src/atuin_server/handlers/mod.rs index 7722d03e..322324c4 100644 --- a/crates/turtle/src/atuin_server/handlers/mod.rs +++ b/crates/turtle/src/atuin_server/handlers/mod.rs @@ -4,16 +4,16 @@ use axum::{Json, extract::State, http, response::IntoResponse}; use crate::atuin_server::router::AppState; -pub mod health; -pub mod history; -pub mod record; -pub mod status; -pub mod user; -pub mod v0; +pub(crate) mod health; +pub(crate) mod history; +pub(crate) mod record; +pub(crate) mod status; +pub(crate) mod user; +pub(crate) mod v0; const VERSION: &str = env!("CARGO_PKG_VERSION"); -pub async fn index(state: State>) -> Json { +pub(crate) async fn index(state: State>) -> Json { let homage = r#""Through the fathomless deeps of space swims the star turtle Great A'Tuin, bearing on its back the four giant elephants who carry on their shoulders the mass of the Discworld." -- Sir Terry Pratchett"#; let version = state @@ -34,12 +34,12 @@ impl IntoResponse for ErrorResponseStatus<'_> { } } -pub struct ErrorResponseStatus<'a> { - pub error: ErrorResponse<'a>, - pub status: http::StatusCode, +pub(crate) struct ErrorResponseStatus<'a> { + pub(crate) error: ErrorResponse<'a>, + pub(crate) status: http::StatusCode, } -pub trait RespExt<'a> { +pub(crate) trait RespExt<'a> { fn with_status(self, status: http::StatusCode) -> ErrorResponseStatus<'a>; fn reply(reason: &'a str) -> Self; } diff --git a/crates/turtle/src/atuin_server/handlers/record.rs b/crates/turtle/src/atuin_server/handlers/record.rs index 63325606..39060423 100644 --- a/crates/turtle/src/atuin_server/handlers/record.rs +++ b/crates/turtle/src/atuin_server/handlers/record.rs @@ -8,7 +8,7 @@ use crate::atuin_server::router::UserAuth; 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>> { +pub(crate) async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'static>> { // anyone who has actually used the old record store (a very small number) will see this error // upon trying to sync. // 1. The status endpoint will say that the server has nothing @@ -24,7 +24,7 @@ pub async fn post(UserAuth(user): UserAuth) -> Result<(), ErrorResponseStatus<'s } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn index(UserAuth(user): UserAuth) -> axum::response::Response { +pub(crate) async fn index(UserAuth(user): UserAuth) -> axum::response::Response { let ret = json!({ "hosts": {} }); @@ -33,7 +33,7 @@ pub async fn index(UserAuth(user): UserAuth) -> axum::response::Response { } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn next( +pub(crate) async fn next( UserAuth(user): UserAuth, ) -> Result>>, ErrorResponseStatus<'static>> { let records = Vec::new(); diff --git a/crates/turtle/src/atuin_server/handlers/status.rs b/crates/turtle/src/atuin_server/handlers/status.rs index 0cf2ca1e..59be1e5c 100644 --- a/crates/turtle/src/atuin_server/handlers/status.rs +++ b/crates/turtle/src/atuin_server/handlers/status.rs @@ -10,7 +10,7 @@ use crate::atuin_common::api::*; const VERSION: &str = env!("CARGO_PKG_VERSION"); #[instrument(skip_all, fields(user.id = user.id))] -pub async fn status( +pub(crate) async fn status( UserAuth(user): UserAuth, state: State>, ) -> Result, ErrorResponseStatus<'static>> { diff --git a/crates/turtle/src/atuin_server/handlers/user.rs b/crates/turtle/src/atuin_server/handlers/user.rs index 01b72202..7708d43e 100644 --- a/crates/turtle/src/atuin_server/handlers/user.rs +++ b/crates/turtle/src/atuin_server/handlers/user.rs @@ -29,7 +29,7 @@ use reqwest::header::CONTENT_TYPE; use crate::atuin_common::{api::*, utils::crypto_random_string}; -pub fn verify_str(hash: &str, password: &str) -> bool { +pub(crate) fn verify_str(hash: &str, password: &str) -> bool { let arg2 = Argon2::new(Algorithm::Argon2id, Version::V0x13, Params::default()); let Ok(hash) = PasswordHash::new(hash) else { return false; @@ -63,7 +63,7 @@ async fn send_register_hook(url: &str, username: String, registered: String) { } #[instrument(skip_all, fields(user.username = username.as_str()))] -pub async fn get( +pub(crate) async fn get( Path(username): Path, state: State>, ) -> Result, ErrorResponseStatus<'static>> { @@ -87,7 +87,7 @@ pub async fn get( } #[instrument(skip_all)] -pub async fn register( +pub(crate) async fn register( state: State>, Json(register): Json, ) -> Result, ErrorResponseStatus<'static>> { @@ -163,7 +163,7 @@ pub async fn register( } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn delete( +pub(crate) async fn delete( UserAuth(user): UserAuth, state: State>, ) -> Result, ErrorResponseStatus<'static>> { @@ -183,7 +183,7 @@ pub async fn delete( } #[instrument(skip_all, fields(user.id = user.id, change_password))] -pub async fn change_password( +pub(crate) async fn change_password( UserAuth(mut user): UserAuth, state: State>, Json(change_password): Json, @@ -213,7 +213,7 @@ pub async fn change_password( } #[instrument(skip_all, fields(user.username = login.username.as_str()))] -pub async fn login( +pub(crate) async fn login( state: State>, login: Json, ) -> Result, ErrorResponseStatus<'static>> { diff --git a/crates/turtle/src/atuin_server/handlers/v0/me.rs b/crates/turtle/src/atuin_server/handlers/v0/me.rs index a1e2db46..1f5f5016 100644 --- a/crates/turtle/src/atuin_server/handlers/v0/me.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/me.rs @@ -7,7 +7,7 @@ use crate::atuin_server::router::UserAuth; use crate::atuin_common::api::*; #[instrument(skip_all, fields(user.id = user.id))] -pub async fn get( +pub(crate) async fn get( UserAuth(user): UserAuth, ) -> Result, ErrorResponseStatus<'static>> { Ok(Json(MeResponse { diff --git a/crates/turtle/src/atuin_server/handlers/v0/record.rs b/crates/turtle/src/atuin_server/handlers/v0/record.rs index 9b147a52..2cc09118 100644 --- a/crates/turtle/src/atuin_server/handlers/v0/record.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/record.rs @@ -12,7 +12,7 @@ use crate::atuin_server_database::Database; use crate::atuin_common::record::{EncryptedData, HostId, Record, RecordIdx, RecordStatus}; #[instrument(skip_all, fields(user.id = user.id))] -pub async fn post( +pub(crate) async fn post( UserAuth(user): UserAuth, state: State>, Json(records): Json>>, @@ -51,7 +51,7 @@ pub async fn post( } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn index( +pub(crate) async fn index( UserAuth(user): UserAuth, state: State>, ) -> Result, ErrorResponseStatus<'static>> { @@ -76,7 +76,7 @@ pub async fn index( } #[derive(Deserialize)] -pub struct NextParams { +pub(crate) struct NextParams { host: HostId, tag: String, start: Option, @@ -84,7 +84,7 @@ pub struct NextParams { } #[instrument(skip_all, fields(user.id = user.id))] -pub async fn next( +pub(crate) async fn next( params: Query, UserAuth(user): UserAuth, state: State>, diff --git a/crates/turtle/src/atuin_server/handlers/v0/store.rs b/crates/turtle/src/atuin_server/handlers/v0/store.rs index cd184546..8269d6b3 100644 --- a/crates/turtle/src/atuin_server/handlers/v0/store.rs +++ b/crates/turtle/src/atuin_server/handlers/v0/store.rs @@ -10,10 +10,10 @@ use crate::atuin_server::{ use crate::atuin_server_database::Database; #[derive(Deserialize)] -pub struct DeleteParams {} +pub(crate) struct DeleteParams {} #[instrument(skip_all, fields(user.id = user.id))] -pub async fn delete( +pub(crate) async fn delete( _params: Query, UserAuth(user): UserAuth, state: State>, diff --git a/crates/turtle/src/atuin_server/metrics.rs b/crates/turtle/src/atuin_server/metrics.rs index ebd0dd2d..7a9dc571 100644 --- a/crates/turtle/src/atuin_server/metrics.rs +++ b/crates/turtle/src/atuin_server/metrics.rs @@ -7,7 +7,7 @@ use axum::{ }; use metrics_exporter_prometheus::{Matcher, PrometheusBuilder, PrometheusHandle}; -pub fn setup_metrics_recorder() -> PrometheusHandle { +pub(crate) fn setup_metrics_recorder() -> PrometheusHandle { const EXPONENTIAL_SECONDS: &[f64] = &[ 0.005, 0.01, 0.025, 0.05, 0.1, 0.25, 0.5, 1.0, 2.5, 5.0, 10.0, ]; @@ -25,7 +25,7 @@ pub fn setup_metrics_recorder() -> PrometheusHandle { /// Middleware to record some common HTTP metrics /// Generic over B to allow for arbitrary body types (eg Vec, Streams, a deserialized thing, etc) /// Someday tower-http might provide a metrics middleware: https://github.com/tower-rs/tower-http/issues/57 -pub async fn track_metrics(req: Request, next: Next) -> impl IntoResponse { +pub(crate) async fn track_metrics(req: Request, next: Next) -> impl IntoResponse { let start = Instant::now(); let path = match req.extensions().get::() { diff --git a/crates/turtle/src/atuin_server/mod.rs b/crates/turtle/src/atuin_server/mod.rs index bd0f2168..ad480e1d 100644 --- a/crates/turtle/src/atuin_server/mod.rs +++ b/crates/turtle/src/atuin_server/mod.rs @@ -10,9 +10,9 @@ mod metrics; mod router; mod utils; -pub use settings::Settings; +pub(crate) use settings::Settings; -pub mod settings; +pub(crate) mod settings; use tokio::net::TcpListener; use tokio::signal; @@ -31,7 +31,7 @@ async fn shutdown_signal() { eprintln!("Shutting down gracefully..."); } -pub async fn launch(settings: Settings, addr: SocketAddr) -> Result<()> { +pub(crate) async fn launch(settings: Settings, addr: SocketAddr) -> Result<()> { launch_with_tcp_listener::( settings, TcpListener::bind(addr) @@ -42,7 +42,7 @@ pub async fn launch(settings: Settings, addr: SocketAddr) -> Resul .await } -pub async fn launch_with_tcp_listener( +pub(crate) async fn launch_with_tcp_listener( settings: Settings, listener: TcpListener, shutdown: impl Future + Send + 'static, @@ -58,7 +58,7 @@ pub async fn launch_with_tcp_listener( // The separate listener means it's much easier to ensure metrics are not accidentally exposed to // the public. -pub async fn launch_metrics_server(host: String, port: u16) -> Result<()> { +pub(crate) async fn launch_metrics_server(host: String, port: u16) -> Result<()> { let listener = TcpListener::bind((host, port)) .await .context("failed to bind metrics tcp")?; diff --git a/crates/turtle/src/atuin_server/router.rs b/crates/turtle/src/atuin_server/router.rs index 11a16148..ed3d1e55 100644 --- a/crates/turtle/src/atuin_server/router.rs +++ b/crates/turtle/src/atuin_server/router.rs @@ -19,7 +19,7 @@ use crate::atuin_server::{ }; use crate::atuin_server_database::{Database, DbError, models::User}; -pub struct UserAuth(pub User); +pub(crate) struct UserAuth(pub(crate) User); impl FromRequestParts> for UserAuth where @@ -101,12 +101,12 @@ async fn semver(request: Request, next: Next) -> Response { } #[derive(Clone)] -pub struct AppState { - pub database: DB, - pub settings: Settings, +pub(crate) struct AppState { + pub(crate) database: DB, + pub(crate) settings: Settings, } -pub fn router(database: DB, settings: Settings) -> Router { +pub(crate) fn router(database: DB, settings: Settings) -> Router { let mut routes = Router::new() .route("/", get(handlers::index)) .route("/healthz", get(handlers::health::health_check)); diff --git a/crates/turtle/src/atuin_server/settings.rs b/crates/turtle/src/atuin_server/settings.rs index 2bce0dac..1d0ac2d0 100644 --- a/crates/turtle/src/atuin_server/settings.rs +++ b/crates/turtle/src/atuin_server/settings.rs @@ -7,11 +7,11 @@ use fs_err::{File, create_dir_all}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] -pub struct Metrics { +pub(crate) struct Metrics { #[serde(alias = "enabled")] - pub enable: bool, - pub host: String, - pub port: u16, + pub(crate) enable: bool, + pub(crate) host: String, + pub(crate) port: u16, } impl Default for Metrics { @@ -25,35 +25,35 @@ impl Default for Metrics { } #[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, - pub register_webhook_username: String, - pub metrics: Metrics, +pub(crate) struct Settings { + pub(crate) host: String, + pub(crate) port: u16, + pub(crate) path: String, + pub(crate) open_registration: bool, + pub(crate) max_history_length: usize, + pub(crate) max_record_size: usize, + pub(crate) page_size: i64, + pub(crate) register_webhook_url: Option, + pub(crate) register_webhook_username: String, + pub(crate) 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, + pub(crate) 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, + pub(crate) fake_version: Option, #[serde(flatten)] - pub db_settings: DbSettings, + pub(crate) db_settings: DbSettings, } impl Settings { - pub fn new() -> Result { + pub(crate) fn new() -> Result { let mut config_file = if let Ok(p) = std::env::var("ATUIN_CONFIG_DIR") { PathBuf::from(p) } else { diff --git a/crates/turtle/src/atuin_server/utils.rs b/crates/turtle/src/atuin_server/utils.rs index 12e9ac1b..cceef3ed 100644 --- a/crates/turtle/src/atuin_server/utils.rs +++ b/crates/turtle/src/atuin_server/utils.rs @@ -1,7 +1,7 @@ use eyre::Result; use semver::{Version, VersionReq}; -pub fn client_version_min(user_agent: &str, req: &str) -> Result { +pub(crate) fn client_version_min(user_agent: &str, req: &str) -> Result { if user_agent.is_empty() { return Ok(false); } -- cgit v1.3.1