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/turtle/src/command | |
| 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 '')
| l--------- | crates/turtle/src/command/CONTRIBUTORS (renamed from crates/atuin/src/command/CONTRIBUTORS) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client.rs (renamed from crates/atuin/src/command/client.rs) | 9 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account.rs (renamed from crates/atuin/src/command/client/account.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account/change_password.rs (renamed from crates/atuin/src/command/client/account/change_password.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account/delete.rs (renamed from crates/atuin/src/command/client/account/delete.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account/login.rs (renamed from crates/atuin/src/command/client/account/login.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account/logout.rs (renamed from crates/atuin/src/command/client/account/logout.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/account/register.rs (renamed from crates/atuin/src/command/client/account/register.rs) | 6 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/config.rs (renamed from crates/atuin/src/command/client/config.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/daemon.rs (renamed from crates/atuin/src/command/client/daemon.rs) | 27 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/default_config.rs | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/doctor.rs (renamed from crates/atuin/src/command/client/doctor.rs) | 10 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/history.rs (renamed from crates/atuin/src/command/client/history.rs) | 21 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/import.rs (renamed from crates/atuin/src/command/client/import.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/info.rs (renamed from crates/atuin/src/command/client/info.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init.rs (renamed from crates/atuin/src/command/client/init.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init/bash.rs (renamed from crates/atuin/src/command/client/init/bash.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init/fish.rs (renamed from crates/atuin/src/command/client/init/fish.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init/powershell.rs (renamed from crates/atuin/src/command/client/init/powershell.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init/xonsh.rs (renamed from crates/atuin/src/command/client/init/xonsh.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/init/zsh.rs (renamed from crates/atuin/src/command/client/init/zsh.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search.rs (renamed from crates/atuin/src/command/client/search.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/cursor.rs (renamed from crates/atuin/src/command/client/search/cursor.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/duration.rs (renamed from crates/atuin/src/command/client/search/duration.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/engines.rs (renamed from crates/atuin/src/command/client/search/engines.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/engines/daemon.rs (renamed from crates/atuin/src/command/client/search/engines/daemon.rs) | 13 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/engines/db.rs (renamed from crates/atuin/src/command/client/search/engines/db.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/engines/skim.rs (renamed from crates/atuin/src/command/client/search/engines/skim.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/history_list.rs (renamed from crates/atuin/src/command/client/search/history_list.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/inspector.rs (renamed from crates/atuin/src/command/client/search/inspector.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/interactive.rs (renamed from crates/atuin/src/command/client/search/interactive.rs) | 82 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/actions.rs (renamed from crates/atuin/src/command/client/search/keybindings/actions.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/conditions.rs (renamed from crates/atuin/src/command/client/search/keybindings/conditions.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/defaults.rs (renamed from crates/atuin/src/command/client/search/keybindings/defaults.rs) | 28 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/key.rs (renamed from crates/atuin/src/command/client/search/keybindings/key.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/keymap.rs (renamed from crates/atuin/src/command/client/search/keybindings/keymap.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/search/keybindings/mod.rs (renamed from crates/atuin/src/command/client/search/keybindings/mod.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/server.rs | 61 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/setup.rs (renamed from crates/atuin/src/command/client/setup.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/stats.rs (renamed from crates/atuin/src/command/client/stats.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store.rs (renamed from crates/atuin/src/command/client/store.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/pull.rs (renamed from crates/atuin/src/command/client/store/pull.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/purge.rs (renamed from crates/atuin/src/command/client/store/purge.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/push.rs (renamed from crates/atuin/src/command/client/store/push.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/rebuild.rs (renamed from crates/atuin/src/command/client/store/rebuild.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/rekey.rs (renamed from crates/atuin/src/command/client/store/rekey.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/store/verify.rs (renamed from crates/atuin/src/command/client/store/verify.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/sync.rs (renamed from crates/atuin/src/command/client/sync.rs) | 4 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/sync/status.rs (renamed from crates/atuin/src/command/client/sync/status.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/client/wrapped.rs (renamed from crates/atuin/src/command/client/wrapped.rs) | 12 | ||||
| -rw-r--r-- | crates/turtle/src/command/contributors.rs (renamed from crates/atuin/src/command/contributors.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/external.rs (renamed from crates/atuin/src/command/external.rs) | 2 | ||||
| -rw-r--r-- | crates/turtle/src/command/gen_completions.rs (renamed from crates/atuin/src/command/gen_completions.rs) | 0 | ||||
| -rw-r--r-- | crates/turtle/src/command/mod.rs (renamed from crates/atuin/src/command/mod.rs) | 26 |
54 files changed, 189 insertions, 196 deletions
diff --git a/crates/atuin/src/command/CONTRIBUTORS b/crates/turtle/src/command/CONTRIBUTORS index 1ca4115a..1ca4115a 120000 --- a/crates/atuin/src/command/CONTRIBUTORS +++ b/crates/turtle/src/command/CONTRIBUTORS diff --git a/crates/atuin/src/command/client.rs b/crates/turtle/src/command/client.rs index 6c1bac29..20d85303 100644 --- a/crates/atuin/src/command/client.rs +++ b/crates/turtle/src/command/client.rs @@ -4,7 +4,7 @@ use std::path::{Path, PathBuf}; use clap::Subcommand; use eyre::{Result, WrapErr}; -use atuin_client::{ +use crate::atuin_client::{ database::Sqlite, record::sqlite_store::SqliteStore, settings::Settings, theme, }; use tracing_appender::rolling::{RollingFileAppender, Rotation}; @@ -57,6 +57,7 @@ mod import; mod info; mod init; mod search; +mod server; mod setup; mod stats; mod store; @@ -87,6 +88,10 @@ pub enum Cmd { #[command(flatten)] Sync(sync::Cmd), + /// Manage the atuin server + #[command(subcommand)] + Server(server::Cmd), + /// Manage your sync account #[cfg(feature = "sync")] Account(account::Cmd), @@ -341,6 +346,8 @@ impl Cmd { Self::Store(store) => store.run(&settings, &db, sqlite_store).await, + Self::Server(server) => server.run().await, + Self::Info => { info::run(&settings); Ok(()) diff --git a/crates/atuin/src/command/client/account.rs b/crates/turtle/src/command/client/account.rs index fc1c9343..898f1ac4 100644 --- a/crates/atuin/src/command/client/account.rs +++ b/crates/turtle/src/command/client/account.rs @@ -1,8 +1,8 @@ use clap::{Args, Subcommand}; use eyre::Result; -use atuin_client::record::sqlite_store::SqliteStore; -use atuin_client::settings::Settings; +use crate::atuin_client::record::sqlite_store::SqliteStore; +use crate::atuin_client::settings::Settings; pub mod change_password; pub mod delete; diff --git a/crates/atuin/src/command/client/account/change_password.rs b/crates/turtle/src/command/client/account/change_password.rs index 234d4dc0..6112b0df 100644 --- a/crates/atuin/src/command/client/account/change_password.rs +++ b/crates/turtle/src/command/client/account/change_password.rs @@ -1,7 +1,7 @@ use clap::Parser; use eyre::{Result, bail}; -use atuin_client::{ +use crate::atuin_client::{ auth::{self, MutateResponse}, settings::Settings, }; diff --git a/crates/atuin/src/command/client/account/delete.rs b/crates/turtle/src/command/client/account/delete.rs index a5e7f0dd..bcb40bc3 100644 --- a/crates/atuin/src/command/client/account/delete.rs +++ b/crates/turtle/src/command/client/account/delete.rs @@ -1,4 +1,4 @@ -use atuin_client::{ +use crate::atuin_client::{ auth::{self, MutateResponse}, settings::Settings, }; diff --git a/crates/atuin/src/command/client/account/login.rs b/crates/turtle/src/command/client/account/login.rs index e320e80b..0c5b66f5 100644 --- a/crates/atuin/src/command/client/account/login.rs +++ b/crates/turtle/src/command/client/account/login.rs @@ -4,7 +4,7 @@ use clap::Parser; use eyre::{Context, Result, bail}; use tokio::{fs::File, io::AsyncWriteExt}; -use atuin_client::{ +use crate::atuin_client::{ auth::{self, AuthResponse}, encryption::{decode_key, load_key}, record::sqlite_store::SqliteStore, @@ -65,7 +65,7 @@ impl Cmd { self.prompt_and_store_key(settings, store).await?; let client = auth::auth_client(settings).await; - let response = client.login(&username, &password, None).await?; + let response = client.login(&username, &password).await?; match response { AuthResponse::Success { session, .. } => { diff --git a/crates/atuin/src/command/client/account/logout.rs b/crates/turtle/src/command/client/account/logout.rs index b958e65a..6150a52b 100644 --- a/crates/atuin/src/command/client/account/logout.rs +++ b/crates/turtle/src/command/client/account/logout.rs @@ -1,5 +1,5 @@ use eyre::Result; pub async fn run() -> Result<()> { - atuin_client::logout::logout().await + crate::atuin_client::logout::logout().await } diff --git a/crates/atuin/src/command/client/account/register.rs b/crates/turtle/src/command/client/account/register.rs index bd836e7b..548c2739 100644 --- a/crates/atuin/src/command/client/account/register.rs +++ b/crates/turtle/src/command/client/account/register.rs @@ -2,7 +2,7 @@ use clap::Parser; use eyre::{Result, bail}; use super::login::or_user_input; -use atuin_client::settings::{Settings, SyncAuth}; +use crate::atuin_client::settings::{Settings, SyncAuth}; #[derive(Parser, Debug)] pub struct Cmd { @@ -42,7 +42,7 @@ impl Cmd { bail!("please provide a password"); } - let session = atuin_client::api_client::register( + let session = crate::atuin_client::api_client::register( settings.sync_address.as_str(), &username, &email, @@ -53,7 +53,7 @@ impl Cmd { let meta = Settings::meta_store().await?; meta.save_session(&session.session).await?; - let _key = atuin_client::encryption::load_key(settings)?; + let _key = crate::atuin_client::encryption::load_key(settings)?; println!( "Registration successful! Please make a note of your key (run 'atuin key') and keep it safe." diff --git a/crates/atuin/src/command/client/config.rs b/crates/turtle/src/command/client/config.rs index 5ec5f7f3..1597a8d6 100644 --- a/crates/atuin/src/command/client/config.rs +++ b/crates/turtle/src/command/client/config.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Settings; +use crate::atuin_client::settings::Settings; use clap::{Args, Subcommand, ValueEnum}; use eyre::Result; use toml_edit::{Document, DocumentMut, Item, Table, TableLike, Value}; diff --git a/crates/atuin/src/command/client/daemon.rs b/crates/turtle/src/command/client/daemon.rs index c3dcf9d0..2ee9b759 100644 --- a/crates/atuin/src/command/client/daemon.rs +++ b/crates/turtle/src/command/client/daemon.rs @@ -6,11 +6,13 @@ use std::path::{Path, PathBuf}; use std::process::{Command, Stdio}; use std::time::{Duration, Instant}; -use atuin_client::{ +use crate::atuin_client::{ database::Sqlite, history::History, record::sqlite_store::SqliteStore, settings::Settings, }; -use atuin_daemon::DaemonEvent; -use atuin_daemon::client::{ControlClient, DaemonClientErrorKind, HistoryClient, classify_error}; +use crate::atuin_daemon::DaemonEvent; +use crate::atuin_daemon::client::{ + ControlClient, DaemonClientErrorKind, HistoryClient, classify_error, +}; use clap::Subcommand; #[cfg(unix)] use daemonize::Daemonize; @@ -218,8 +220,6 @@ async fn wait_for_pidfile_available(path: &Path, timeout: Duration) -> Result<() async fn connect_client(settings: &Settings) -> Result<HistoryClient> { HistoryClient::new( - #[cfg(not(unix))] - settings.daemon.tcp_port, #[cfg(unix)] settings.daemon.socket_path.clone(), ) @@ -339,8 +339,6 @@ fn ensure_autostart_supported(settings: &Settings) -> Result<()> { "daemon autostart is incompatible with `daemon.systemd_socket = true`; use systemd to manage the daemon" ); } - #[cfg(not(unix))] - let _ = settings; Ok(()) } @@ -546,8 +544,6 @@ async fn status_cmd(settings: &Settings) -> Result<()> { println!(" Healthy: {}", status.healthy); #[cfg(unix)] println!(" Socket: {}", settings.daemon.socket_path); - #[cfg(not(unix))] - println!(" Port: {}", settings.daemon.tcp_port); } Probe::NeedsRestart(reason) => { println!("Daemon running (needs restart)"); @@ -648,7 +644,7 @@ async fn run( let pidfile_path = PathBuf::from(&settings.daemon.pidfile_path); let _pidfile_guard = PidfileGuard::acquire(&pidfile_path)?; - atuin_daemon::boot(settings, store, history_db).await?; + crate::atuin_daemon::boot(settings, store, history_db).await?; Ok(()) } @@ -700,17 +696,6 @@ fn kill_process(pid: u32) { .status(); } -/// Kill a process by PID. -#[cfg(not(unix))] -fn kill_process(pid: u32) { - // On Windows, use taskkill - let _ = Command::new("taskkill") - .args(["/PID", &pid.to_string(), "/F"]) - .stdout(Stdio::null()) - .stderr(Stdio::null()) - .status(); -} - #[cfg(test)] mod tests { use super::*; diff --git a/crates/turtle/src/command/client/default_config.rs b/crates/turtle/src/command/client/default_config.rs new file mode 100644 index 00000000..e8cc15f9 --- /dev/null +++ b/crates/turtle/src/command/client/default_config.rs @@ -0,0 +1,4 @@ +pub fn run() { + // TODO(@bpeetz): Re-add the default settings option back (Settings::example_config()) <2026-06-11> + println!("TODO"); +} diff --git a/crates/atuin/src/command/client/doctor.rs b/crates/turtle/src/command/client/doctor.rs index 1bf003db..09fa6e77 100644 --- a/crates/atuin/src/command/client/doctor.rs +++ b/crates/turtle/src/command/client/doctor.rs @@ -1,10 +1,10 @@ use std::process::Command; use std::{env, str::FromStr}; -use atuin_client::database::Sqlite; -use atuin_client::settings::Settings; -use atuin_common::shell::{Shell, shell_name}; -use atuin_common::utils; +use crate::atuin_client::database::Sqlite; +use crate::atuin_client::settings::Settings; +use crate::atuin_common::shell::{Shell, shell_name}; +use crate::atuin_common::utils; use colored::Colorize; use eyre::Result; use serde::Serialize; @@ -168,7 +168,7 @@ impl ShellInfo { } pub fn new() -> Self { - // TODO: rework to use atuin_common::Shell + // TODO: rework to use crate::atuin_common::Shell let sys = System::new_all(); diff --git a/crates/atuin/src/command/client/history.rs b/crates/turtle/src/command/client/history.rs index abf39cc2..0c61392c 100644 --- a/crates/atuin/src/command/client/history.rs +++ b/crates/turtle/src/command/client/history.rs @@ -5,7 +5,7 @@ use std::{ time::Duration, }; -use atuin_common::utils::{self, Escapable as _}; +use crate::atuin_common::utils::{self, Escapable as _}; use clap::Subcommand; use eyre::{Context, Result, bail}; use runtime_format::{FormatKey, FormatKeyError, ParseSegment, ParsedFmt}; @@ -18,9 +18,9 @@ use colored::Colorize; use serde::Serialize; #[cfg(feature = "daemon")] -use atuin_daemon::history::{HistoryEventKind, TailHistoryReply}; +use crate::atuin_daemon::history::{HistoryEventKind, TailHistoryReply}; -use atuin_client::{ +use crate::atuin_client::{ database::{Database, Sqlite, current_context}, encryption, history::{History, store::HistoryStore}, @@ -32,7 +32,7 @@ use atuin_client::{ }; #[cfg(feature = "sync")] -use atuin_client::{record, sync}; +use crate::atuin_client::record; use log::{debug, warn}; use time::{OffsetDateTime, macros::format_description}; @@ -924,7 +924,7 @@ impl Cmd { async fn handle_list( db: &impl Database, settings: &Settings, - context: atuin_client::database::Context, + context: crate::atuin_client::database::Context, session: bool, cwd: bool, mode: ListMode, @@ -967,7 +967,7 @@ impl Cmd { db: &impl Database, settings: &Settings, store: SqliteStore, - context: atuin_client::database::Context, + context: crate::atuin_client::database::Context, dry_run: bool, ) -> Result<()> { // Grab all executed commands and filter them using History::should_save. @@ -1011,7 +1011,7 @@ impl Cmd { } #[cfg(feature = "daemon")] - daemon_cmd::emit_event(settings, atuin_daemon::DaemonEvent::HistoryPruned).await; + daemon_cmd::emit_event(settings, crate::atuin_daemon::DaemonEvent::HistoryPruned).await; } Ok(()) } @@ -1068,8 +1068,11 @@ impl Cmd { } #[cfg(feature = "daemon")] - daemon_cmd::emit_event(settings, atuin_daemon::DaemonEvent::HistoryDeleted { ids }) - .await; + daemon_cmd::emit_event( + settings, + crate::atuin_daemon::DaemonEvent::HistoryDeleted { ids }, + ) + .await; } Ok(()) } diff --git a/crates/atuin/src/command/client/import.rs b/crates/turtle/src/command/client/import.rs index 21ac76b4..363e6405 100644 --- a/crates/atuin/src/command/client/import.rs +++ b/crates/turtle/src/command/client/import.rs @@ -5,7 +5,7 @@ use clap::Parser; use eyre::Result; use indicatif::ProgressBar; -use atuin_client::{ +use crate::atuin_client::{ database::Database, history::History, import::{ diff --git a/crates/atuin/src/command/client/info.rs b/crates/turtle/src/command/client/info.rs index a69f9b2f..ee24c419 100644 --- a/crates/atuin/src/command/client/info.rs +++ b/crates/turtle/src/command/client/info.rs @@ -1,9 +1,9 @@ -use atuin_client::settings::Settings;
+use crate::atuin_client::settings::Settings;
use crate::{SHA, VERSION};
pub fn run(settings: &Settings) {
- let config = atuin_common::utils::config_dir();
+ let config = crate::atuin_common::utils::config_dir();
let mut config_file = config.clone();
config_file.push("config.toml");
let mut sever_config = config;
diff --git a/crates/atuin/src/command/client/init.rs b/crates/turtle/src/command/client/init.rs index 39cd1247..bf9747bb 100644 --- a/crates/atuin/src/command/client/init.rs +++ b/crates/turtle/src/command/client/init.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::{Settings, Tmux}; +use crate::atuin_client::settings::{Settings, Tmux}; use clap::{Parser, ValueEnum}; mod bash; diff --git a/crates/atuin/src/command/client/init/bash.rs b/crates/turtle/src/command/client/init/bash.rs index 2280dc3d..fd17e37e 100644 --- a/crates/atuin/src/command/client/init/bash.rs +++ b/crates/turtle/src/command/client/init/bash.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Tmux; +use crate::atuin_client::settings::Tmux; fn print_tmux_config(tmux: &Tmux) { if tmux.enabled { diff --git a/crates/atuin/src/command/client/init/fish.rs b/crates/turtle/src/command/client/init/fish.rs index 07c6a5ba..8a046bfa 100644 --- a/crates/atuin/src/command/client/init/fish.rs +++ b/crates/turtle/src/command/client/init/fish.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Tmux; +use crate::atuin_client::settings::Tmux; fn print_tmux_config(tmux: &Tmux) { if tmux.enabled { diff --git a/crates/atuin/src/command/client/init/powershell.rs b/crates/turtle/src/command/client/init/powershell.rs index f92f1cbe..10c0c461 100644 --- a/crates/atuin/src/command/client/init/powershell.rs +++ b/crates/turtle/src/command/client/init/powershell.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Tmux; +use crate::atuin_client::settings::Tmux; pub fn init_static(disable_up_arrow: bool, disable_ctrl_r: bool, _tmux: &Tmux) { let base = include_str!("../../../shell/atuin.ps1"); diff --git a/crates/atuin/src/command/client/init/xonsh.rs b/crates/turtle/src/command/client/init/xonsh.rs index 9fb5730d..a17d85d8 100644 --- a/crates/atuin/src/command/client/init/xonsh.rs +++ b/crates/turtle/src/command/client/init/xonsh.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Tmux; +use crate::atuin_client::settings::Tmux; pub fn init_static(disable_up_arrow: bool, disable_ctrl_r: bool, _tmux: &Tmux) { let base = include_str!("../../../shell/atuin.xsh"); diff --git a/crates/atuin/src/command/client/init/zsh.rs b/crates/turtle/src/command/client/init/zsh.rs index 3f325167..38c3086b 100644 --- a/crates/atuin/src/command/client/init/zsh.rs +++ b/crates/turtle/src/command/client/init/zsh.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Tmux; +use crate::atuin_client::settings::Tmux; fn print_tmux_config(tmux: &Tmux) { if tmux.enabled { diff --git a/crates/atuin/src/command/client/search.rs b/crates/turtle/src/command/client/search.rs index a9dc9a68..4a2114d5 100644 --- a/crates/atuin/src/command/client/search.rs +++ b/crates/turtle/src/command/client/search.rs @@ -1,11 +1,11 @@ use std::fs::File; use std::io::{IsTerminal as _, Write, stderr, stdout}; -use atuin_common::utils::{self, Escapable as _}; +use crate::atuin_common::utils::{self, Escapable as _}; use clap::Parser; use eyre::Result; -use atuin_client::{ +use crate::atuin_client::{ database::Database, database::{OptFilters, current_context}, encryption, diff --git a/crates/atuin/src/command/client/search/cursor.rs b/crates/turtle/src/command/client/search/cursor.rs index c1cdfee4..84f94082 100644 --- a/crates/atuin/src/command/client/search/cursor.rs +++ b/crates/turtle/src/command/client/search/cursor.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::WordJumpMode; +use crate::atuin_client::settings::WordJumpMode; pub struct Cursor { source: String, diff --git a/crates/atuin/src/command/client/search/duration.rs b/crates/turtle/src/command/client/search/duration.rs index 54856c87..54856c87 100644 --- a/crates/atuin/src/command/client/search/duration.rs +++ b/crates/turtle/src/command/client/search/duration.rs diff --git a/crates/atuin/src/command/client/search/engines.rs b/crates/turtle/src/command/client/search/engines.rs index 886f0171..0f92b4c7 100644 --- a/crates/atuin/src/command/client/search/engines.rs +++ b/crates/turtle/src/command/client/search/engines.rs @@ -1,5 +1,5 @@ use async_trait::async_trait; -use atuin_client::{ +use crate::atuin_client::{ database::{Context, Database, OptFilters}, history::{AUTHOR_FILTER_ALL_USER, History, HistoryId}, settings::{FilterMode, SearchMode, Settings}, diff --git a/crates/atuin/src/command/client/search/engines/daemon.rs b/crates/turtle/src/command/client/search/engines/daemon.rs index 8b15c180..b1299c02 100644 --- a/crates/atuin/src/command/client/search/engines/daemon.rs +++ b/crates/turtle/src/command/client/search/engines/daemon.rs @@ -1,10 +1,10 @@ -use async_trait::async_trait; -use atuin_client::{ +use crate::atuin_client::{ database::{Database, OptFilters}, history::{AUTHOR_FILTER_ALL_USER, History}, settings::{SearchMode, Settings}, }; -use atuin_daemon::client::{DaemonClientErrorKind, SearchClient, classify_error}; +use crate::atuin_daemon::client::{DaemonClientErrorKind, SearchClient, classify_error}; +use async_trait::async_trait; use atuin_nucleo_matcher::{ Config, Matcher, Utf32Str, pattern::{CaseMatching, Normalization, Pattern}, @@ -22,8 +22,6 @@ pub struct Search { settings: Settings, #[cfg(unix)] socket_path: String, - #[cfg(not(unix))] - tcp_port: u64, } impl Search { @@ -34,8 +32,6 @@ impl Search { settings: settings.clone(), #[cfg(unix)] socket_path: settings.daemon.socket_path.clone(), - #[cfg(not(unix))] - tcp_port: settings.daemon.tcp_port, } } @@ -51,9 +47,6 @@ impl Search { #[cfg(unix)] let client = SearchClient::new(self.socket_path.clone()).await?; - #[cfg(not(unix))] - let client = SearchClient::new(self.tcp_port).await?; - self.client = Some(client); Ok(()) } diff --git a/crates/atuin/src/command/client/search/engines/db.rs b/crates/turtle/src/command/client/search/engines/db.rs index b15aabd8..2765faf5 100644 --- a/crates/atuin/src/command/client/search/engines/db.rs +++ b/crates/turtle/src/command/client/search/engines/db.rs @@ -1,6 +1,6 @@ use super::{SearchEngine, SearchState}; use async_trait::async_trait; -use atuin_client::{ +use crate::atuin_client::{ database::Database, database::OptFilters, database::{QueryToken, QueryTokenizer}, diff --git a/crates/atuin/src/command/client/search/engines/skim.rs b/crates/turtle/src/command/client/search/engines/skim.rs index fe05fd09..96a6574d 100644 --- a/crates/atuin/src/command/client/search/engines/skim.rs +++ b/crates/turtle/src/command/client/search/engines/skim.rs @@ -1,7 +1,7 @@ use std::path::Path; use async_trait::async_trait; -use atuin_client::{ +use crate::atuin_client::{ database::Database, history::{History, is_known_agent}, settings::FilterMode, diff --git a/crates/atuin/src/command/client/search/history_list.rs b/crates/turtle/src/command/client/search/history_list.rs index 7af324b4..4c83d7eb 100644 --- a/crates/atuin/src/command/client/search/history_list.rs +++ b/crates/turtle/src/command/client/search/history_list.rs @@ -2,12 +2,12 @@ use std::time::Duration; use super::duration::format_duration; use super::engines::SearchEngine; -use atuin_client::{ +use crate::atuin_client::{ history::History, settings::{UiColumn, UiColumnType}, theme::{Meaning, Theme}, }; -use atuin_common::utils::Escapable as _; +use crate::atuin_common::utils::Escapable as _; use itertools::Itertools; use ratatui::{ backend::FromCrossterm, diff --git a/crates/atuin/src/command/client/search/inspector.rs b/crates/turtle/src/command/client/search/inspector.rs index e2cdabe5..1ebc4383 100644 --- a/crates/atuin/src/command/client/search/inspector.rs +++ b/crates/turtle/src/command/client/search/inspector.rs @@ -1,7 +1,7 @@ use std::time::Duration; use time::macros::format_description; -use atuin_client::{ +use crate::atuin_client::{ history::{History, HistoryStats}, settings::{Settings, Timezone}, }; @@ -338,7 +338,7 @@ pub fn draw_full( #[cfg(test)] mod tests { use super::draw_ultracompact; - use atuin_client::{ + use crate::atuin_client::{ history::{History, HistoryId, HistoryStats}, theme::ThemeManager, }; diff --git a/crates/atuin/src/command/client/search/interactive.rs b/crates/turtle/src/command/client/search/interactive.rs index 4efba803..a3d2cb79 100644 --- a/crates/atuin/src/command/client/search/interactive.rs +++ b/crates/turtle/src/command/client/search/interactive.rs @@ -6,7 +6,7 @@ use std::{ #[cfg(unix)] use std::io::Read as _; -use atuin_common::{shell::Shell, utils::Escapable as _}; +use crate::atuin_common::{shell::Shell, utils::Escapable as _}; use eyre::Result; use time::OffsetDateTime; use unicode_width::{UnicodeWidthChar, UnicodeWidthStr}; @@ -16,7 +16,7 @@ use super::{ engines::{SearchEngine, SearchState}, history_list::{HistoryList, ListState}, }; -use atuin_client::{ +use crate::atuin_client::{ database::{Context, Database, current_context}, history::{History, HistoryId, HistoryStats, store::HistoryStore}, settings::{ @@ -50,9 +50,6 @@ use ratatui::crossterm::event::{ KeyboardEnhancementFlags, PopKeyboardEnhancementFlags, PushKeyboardEnhancementFlags, }; -#[cfg(windows)] -use windows_sys::Win32::System::Console::{GetConsoleOutputCP, SetConsoleOutputCP}; - const TAB_TITLES: [&str; 2] = ["Search", "Inspect"]; pub enum InputAction { @@ -97,9 +94,9 @@ impl InspectingState { pub fn to_compactness(f: &Frame, settings: &Settings) -> Compactness { if match settings.style { - atuin_client::settings::Style::Auto => f.area().height < 14, - atuin_client::settings::Style::Compact => true, - atuin_client::settings::Style::Full => false, + crate::atuin_client::settings::Style::Auto => f.area().height < 14, + crate::atuin_client::settings::Style::Compact => true, + crate::atuin_client::settings::Style::Full => false, } { if settings.auto_hide_height != 0 && f.area().height <= settings.auto_hide_height { Compactness::Ultracompact @@ -166,7 +163,7 @@ impl State { self.results_len = results.len(); if smart_sort { - Ok(atuin_history::sort::sort( + Ok(crate::atuin_history::sort::sort( self.search.input.as_str(), results, )) @@ -1275,14 +1272,9 @@ enum TerminalWriter { Stdout(std::io::Stdout), #[cfg(unix)] Tty(std::fs::File), - #[cfg(windows)] - ConOut(std::io::LineWriter<std::fs::File>, u32), } impl TerminalWriter { - #[cfg(windows)] - const CP_UTF8: u32 = 65001; - fn new() -> std::io::Result<Self> { let stdout = stdout(); if stdout.is_terminal() { @@ -1301,35 +1293,6 @@ impl TerminalWriter { .open("/dev/tty")?, )) } - - // On Windows, use CONOUT$ which is the equivalent of /dev/tty, but this - // requires setting the current console output code page to UTF-8 for the - // TUI to render properly. We'll set it back to its previous value upon exit. - #[cfg(windows)] - { - let file = std::fs::File::options() - .read(true) - .write(true) - .open("CONOUT$")?; - - let initial_console_output_cp = unsafe { GetConsoleOutputCP() }; - if initial_console_output_cp != Self::CP_UTF8 { - unsafe { - SetConsoleOutputCP(Self::CP_UTF8); - } - } - - Ok(TerminalWriter::ConOut( - std::io::LineWriter::new(file), - initial_console_output_cp, - )) - } - - #[cfg(not(any(unix, windows)))] - Err(std::io::Error::new( - std::io::ErrorKind::Unsupported, - "Interactive mode requires a terminal", - )) } } @@ -1339,8 +1302,6 @@ impl Write for TerminalWriter { TerminalWriter::Stdout(stdout) => stdout.write(buf), #[cfg(unix)] TerminalWriter::Tty(file) => file.write(buf), - #[cfg(windows)] - TerminalWriter::ConOut(writer, _) => writer.write(buf), } } @@ -1349,21 +1310,6 @@ impl Write for TerminalWriter { TerminalWriter::Stdout(stdout) => stdout.flush(), #[cfg(unix)] TerminalWriter::Tty(file) => file.flush(), - #[cfg(windows)] - TerminalWriter::ConOut(writer, _) => writer.flush(), - } - } -} - -impl Drop for TerminalWriter { - fn drop(&mut self) { - #[cfg(windows)] - if let TerminalWriter::ConOut(_, initial_console_output_cp) = self - && *initial_console_output_cp != Self::CP_UTF8 - { - unsafe { - SetConsoleOutputCP(*initial_console_output_cp); - } } } } @@ -1668,10 +1614,6 @@ pub async fn history( } }; - #[cfg(not(unix))] - let (saved_screen, popup_rect, _popup_scroll_offset): (Option<()>, Rect, u16) = - (None, Rect::default(), 0); - let popup_mode = saved_screen.is_some(); let stdout = Stdout::new(inline_height > 0, settings.no_mouse)?; @@ -2053,9 +1995,9 @@ fn set_clipboard(_s: String) {} #[cfg(test)] mod tests { - use atuin_client::database::Context; - use atuin_client::history::History; - use atuin_client::settings::{ + use crate::atuin_client::database::Context; + use crate::atuin_client::history::History; + use crate::atuin_client::settings::{ FilterMode, KeymapMode, Preview, PreviewStrategy, SearchMode, Settings, }; use time::OffsetDateTime; @@ -2264,7 +2206,7 @@ mod tests { #[test] fn test_accept_keybindings() { - use atuin_client::settings::Keys; + use crate::atuin_client::settings::Keys; use ratatui::crossterm::event::{KeyCode, KeyEvent, KeyModifiers}; let mut settings = Settings::utc(); @@ -2870,8 +2812,8 @@ mod tests { #[test] fn execute_exit_returns_based_on_exit_mode() { + use crate::atuin_client::settings::ExitMode; use crate::command::client::search::keybindings::Action; - use atuin_client::settings::ExitMode; let mut state = make_executor_state(100, 0); let mut settings = Settings::utc(); @@ -3043,7 +2985,7 @@ mod tests { #[test] fn keymap_config_return_query() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; use ratatui::crossterm::event::{KeyCode, KeyEvent, KeyModifiers}; use std::collections::HashMap; diff --git a/crates/atuin/src/command/client/search/keybindings/actions.rs b/crates/turtle/src/command/client/search/keybindings/actions.rs index ff2ef7de..ff2ef7de 100644 --- a/crates/atuin/src/command/client/search/keybindings/actions.rs +++ b/crates/turtle/src/command/client/search/keybindings/actions.rs diff --git a/crates/atuin/src/command/client/search/keybindings/conditions.rs b/crates/turtle/src/command/client/search/keybindings/conditions.rs index 055ae905..055ae905 100644 --- a/crates/atuin/src/command/client/search/keybindings/conditions.rs +++ b/crates/turtle/src/command/client/search/keybindings/conditions.rs diff --git a/crates/atuin/src/command/client/search/keybindings/defaults.rs b/crates/turtle/src/command/client/search/keybindings/defaults.rs index a76cd4a9..c8401e37 100644 --- a/crates/atuin/src/command/client/search/keybindings/defaults.rs +++ b/crates/turtle/src/command/client/search/keybindings/defaults.rs @@ -1,6 +1,6 @@ use std::collections::HashMap; -use atuin_client::settings::{KeyBindingConfig, Settings}; +use crate::atuin_client::settings::{KeyBindingConfig, Settings}; use tracing::warn; use super::actions::Action; @@ -354,7 +354,7 @@ pub fn default_vim_insert_keymap(settings: &Settings) -> Keymap { /// bindings. We respect the user's `keymap_mode` to provide vim-style j/k /// navigation for vim users. pub fn default_inspector_keymap(settings: &Settings) -> Keymap { - use atuin_client::settings::KeymapMode; + use crate::atuin_client::settings::KeymapMode; let mut km = Keymap::new(); @@ -495,7 +495,7 @@ impl KeymapSet { /// - If `[keymap]` is empty/absent, `[keys]` customizes the defaults /// (current behavior for backward compatibility). pub fn from_settings(settings: &Settings) -> Self { - use atuin_client::settings::Keys; + use crate::atuin_client::settings::Keys; if settings.keymap.is_empty() { // No [keymap] section → use [keys] to customize defaults @@ -975,7 +975,7 @@ mod tests { #[test] fn parse_simple_binding_config() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; let cfg = KeyBindingConfig::Simple("accept".to_string()); let binding = super::parse_binding_config(&cfg).unwrap(); assert_eq!(binding.rules.len(), 1); @@ -985,7 +985,7 @@ mod tests { #[test] fn parse_conditional_binding_config() { - use atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; + use crate::atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; let cfg = KeyBindingConfig::Rules(vec![ KeyRuleConfig { when: Some("cursor-at-start".to_string()), @@ -1006,14 +1006,14 @@ mod tests { #[test] fn parse_binding_config_invalid_action() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; let cfg = KeyBindingConfig::Simple("not-a-real-action".to_string()); assert!(super::parse_binding_config(&cfg).is_err()); } #[test] fn parse_binding_config_invalid_condition() { - use atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; + use crate::atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; let cfg = KeyBindingConfig::Rules(vec![KeyRuleConfig { when: Some("not-a-real-condition".to_string()), action: "exit".to_string(), @@ -1023,7 +1023,7 @@ mod tests { #[test] fn config_override_replaces_key() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; use std::collections::HashMap; let mut settings = default_settings(); @@ -1048,7 +1048,7 @@ mod tests { #[test] fn config_override_preserves_unoverridden_keys() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; use std::collections::HashMap; let mut settings = default_settings(); @@ -1072,7 +1072,7 @@ mod tests { #[test] fn config_conditional_override() { - use atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; + use crate::atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; use std::collections::HashMap; let mut settings = default_settings(); @@ -1131,7 +1131,7 @@ mod tests { #[test] fn keymap_overrides_ignore_keys_section() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; // Set up: [keys] disables scroll_exits, but [keymap] is present let mut settings = default_settings(); @@ -1172,7 +1172,7 @@ mod tests { #[test] fn keymap_present_resets_to_standard_keys_defaults() { - use atuin_client::settings::KeyBindingConfig; + use crate::atuin_client::settings::KeyBindingConfig; let mut settings = default_settings(); // Disable all [keys] behaviors @@ -1214,7 +1214,7 @@ mod tests { #[test] fn keys_has_non_default_values_detection() { - use atuin_client::settings::Keys; + use crate::atuin_client::settings::Keys; let standard = Keys::standard_defaults(); assert!(!standard.has_non_default_values()); @@ -1230,7 +1230,7 @@ mod tests { #[test] fn original_input_empty_condition_in_config() { - use atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; + use crate::atuin_client::settings::{KeyBindingConfig, KeyRuleConfig}; use std::collections::HashMap; let mut settings = default_settings(); diff --git a/crates/atuin/src/command/client/search/keybindings/key.rs b/crates/turtle/src/command/client/search/keybindings/key.rs index c2eb31c6..c2eb31c6 100644 --- a/crates/atuin/src/command/client/search/keybindings/key.rs +++ b/crates/turtle/src/command/client/search/keybindings/key.rs diff --git a/crates/atuin/src/command/client/search/keybindings/keymap.rs b/crates/turtle/src/command/client/search/keybindings/keymap.rs index 0d362863..0d362863 100644 --- a/crates/atuin/src/command/client/search/keybindings/keymap.rs +++ b/crates/turtle/src/command/client/search/keybindings/keymap.rs diff --git a/crates/atuin/src/command/client/search/keybindings/mod.rs b/crates/turtle/src/command/client/search/keybindings/mod.rs index 3b6eb2b2..3b6eb2b2 100644 --- a/crates/atuin/src/command/client/search/keybindings/mod.rs +++ b/crates/turtle/src/command/client/search/keybindings/mod.rs diff --git a/crates/turtle/src/command/client/server.rs b/crates/turtle/src/command/client/server.rs new file mode 100644 index 00000000..7de27551 --- /dev/null +++ b/crates/turtle/src/command/client/server.rs @@ -0,0 +1,61 @@ +use std::net::SocketAddr; + +use crate::atuin_server::{Settings, launch, launch_metrics_server}; +use crate::atuin_server_database::DbType; +use crate::atuin_server_postgres::Postgres; +use crate::atuin_server_sqlite::Sqlite; + +use clap::Subcommand; +use eyre::{Context, Result, eyre}; + +#[derive(Subcommand, Clone, Debug)] +#[command(infer_subcommands = true)] +pub 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, +} + +impl Cmd { + #[expect(clippy::too_many_lines)] + pub async fn run(self) -> Result<()> { + match self { + 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 => { + // TODO(@bpeetz): Add this back <2026-06-11> + println!("TODO"); + Ok(()) + } + } + } +} diff --git a/crates/atuin/src/command/client/setup.rs b/crates/turtle/src/command/client/setup.rs index 8de73d62..b32ceb97 100644 --- a/crates/atuin/src/command/client/setup.rs +++ b/crates/turtle/src/command/client/setup.rs @@ -1,4 +1,4 @@ -use atuin_client::settings::Settings; +use crate::atuin_client::settings::Settings; use colored::Colorize; use eyre::Result; diff --git a/crates/atuin/src/command/client/stats.rs b/crates/turtle/src/command/client/stats.rs index a7fc00ac..fc10e949 100644 --- a/crates/atuin/src/command/client/stats.rs +++ b/crates/turtle/src/command/client/stats.rs @@ -3,13 +3,13 @@ use eyre::Result; use interim::parse_date_string; use time::{Duration, OffsetDateTime, Time}; -use atuin_client::{ +use crate::atuin_client::{ database::{Database, current_context}, settings::Settings, theme::Theme, }; -use atuin_history::stats::{compute, pretty_print}; +use crate::atuin_history::stats::{compute, pretty_print}; fn parse_ngram_size(s: &str) -> Result<usize, String> { let value = s diff --git a/crates/atuin/src/command/client/store.rs b/crates/turtle/src/command/client/store.rs index 513c404a..dfa3b66c 100644 --- a/crates/atuin/src/command/client/store.rs +++ b/crates/turtle/src/command/client/store.rs @@ -1,7 +1,7 @@ use clap::Subcommand; use eyre::Result; -use atuin_client::{ +use crate::atuin_client::{ database::Database, record::{sqlite_store::SqliteStore, store::Store}, settings::Settings, diff --git a/crates/atuin/src/command/client/store/pull.rs b/crates/turtle/src/command/client/store/pull.rs index 25b925c7..c9c9c379 100644 --- a/crates/atuin/src/command/client/store/pull.rs +++ b/crates/turtle/src/command/client/store/pull.rs @@ -1,7 +1,7 @@ use clap::Args; use eyre::Result; -use atuin_client::{ +use crate::atuin_client::{ database::Database, encryption::load_key, record::store::Store, diff --git a/crates/atuin/src/command/client/store/purge.rs b/crates/turtle/src/command/client/store/purge.rs index ad2369ce..f7996c4b 100644 --- a/crates/atuin/src/command/client/store/purge.rs +++ b/crates/turtle/src/command/client/store/purge.rs @@ -1,7 +1,7 @@ use clap::Args; use eyre::Result; -use atuin_client::{ +use crate::atuin_client::{ encryption::load_key, record::{sqlite_store::SqliteStore, store::Store}, settings::Settings, diff --git a/crates/atuin/src/command/client/store/push.rs b/crates/turtle/src/command/client/store/push.rs index d8569e1e..724dfbef 100644 --- a/crates/atuin/src/command/client/store/push.rs +++ b/crates/turtle/src/command/client/store/push.rs @@ -1,9 +1,9 @@ -use atuin_common::record::HostId; +use crate::atuin_common::record::HostId; use clap::Args; use eyre::Result; use uuid::Uuid; -use atuin_client::{ +use crate::atuin_client::{ api_client::Client, encryption::load_key, record::sync::Operation, diff --git a/crates/atuin/src/command/client/store/rebuild.rs b/crates/turtle/src/command/client/store/rebuild.rs index b9f2837b..80e201c2 100644 --- a/crates/atuin/src/command/client/store/rebuild.rs +++ b/crates/turtle/src/command/client/store/rebuild.rs @@ -4,7 +4,7 @@ use eyre::{Result, bail}; #[cfg(feature = "daemon")] use crate::command::client::daemon as daemon_cmd; -use atuin_client::{ +use crate::atuin_client::{ database::Database, encryption, history::store::HistoryStore, record::sqlite_store::SqliteStore, settings::Settings, }; @@ -51,7 +51,7 @@ impl Rebuild { history_store.build(database).await?; #[cfg(feature = "daemon")] - daemon_cmd::emit_event(settings, atuin_daemon::DaemonEvent::HistoryRebuilt).await; + daemon_cmd::emit_event(settings, crate::atuin_daemon::DaemonEvent::HistoryRebuilt).await; Ok(()) } diff --git a/crates/atuin/src/command/client/store/rekey.rs b/crates/turtle/src/command/client/store/rekey.rs index c92d2555..e63be447 100644 --- a/crates/atuin/src/command/client/store/rekey.rs +++ b/crates/turtle/src/command/client/store/rekey.rs @@ -2,7 +2,7 @@ use clap::Args; use eyre::Result; use tokio::{fs::File, io::AsyncWriteExt}; -use atuin_client::{ +use crate::atuin_client::{ encryption::{decode_key, generate_encoded_key, load_key}, record::sqlite_store::SqliteStore, record::store::Store, diff --git a/crates/atuin/src/command/client/store/verify.rs b/crates/turtle/src/command/client/store/verify.rs index 84bec96a..5aa1dc70 100644 --- a/crates/atuin/src/command/client/store/verify.rs +++ b/crates/turtle/src/command/client/store/verify.rs @@ -1,7 +1,7 @@ use clap::Args; use eyre::Result; -use atuin_client::{ +use crate::atuin_client::{ encryption::load_key, record::{sqlite_store::SqliteStore, store::Store}, settings::Settings, diff --git a/crates/atuin/src/command/client/sync.rs b/crates/turtle/src/command/client/sync.rs index 5b8c2cb7..a4839b5f 100644 --- a/crates/atuin/src/command/client/sync.rs +++ b/crates/turtle/src/command/client/sync.rs @@ -1,7 +1,7 @@ use clap::Subcommand; use eyre::{Result, WrapErr}; -use atuin_client::{ +use crate::atuin_client::{ database::Database, encryption, history::store::HistoryStore, @@ -53,7 +53,7 @@ impl Cmd { Self::Register(r) => r.run(&settings).await, Self::Status => status::run(&settings).await, Self::Key {} => { - use atuin_client::encryption::{encode_key, load_key}; + use crate::atuin_client::encryption::{encode_key, load_key}; let key = load_key(&settings).wrap_err("could not load encryption key")?; let encode = encode_key(&key).wrap_err("could not encode encryption key")?; diff --git a/crates/atuin/src/command/client/sync/status.rs b/crates/turtle/src/command/client/sync/status.rs index c992eb3e..00088b59 100644 --- a/crates/atuin/src/command/client/sync/status.rs +++ b/crates/turtle/src/command/client/sync/status.rs @@ -1,5 +1,5 @@ use crate::{SHA, VERSION}; -use atuin_client::{api_client, settings::Settings}; +use crate::atuin_client::{api_client, settings::Settings}; use colored::Colorize; use eyre::{Result, bail}; diff --git a/crates/atuin/src/command/client/wrapped.rs b/crates/turtle/src/command/client/wrapped.rs index 0e0c9f14..694157c2 100644 --- a/crates/atuin/src/command/client/wrapped.rs +++ b/crates/turtle/src/command/client/wrapped.rs @@ -3,9 +3,9 @@ use eyre::Result; use std::collections::{HashMap, HashSet}; use time::{Date, Duration, Month, OffsetDateTime, Time}; -use atuin_client::{database::Database, settings::Settings, theme::Theme}; +use crate::atuin_client::{database::Database, settings::Settings, theme::Theme}; -use atuin_history::stats::{Stats, compute}; +use crate::atuin_history::stats::{Stats, compute}; #[derive(Debug)] struct WrappedStats { @@ -20,7 +20,11 @@ struct WrappedStats { impl WrappedStats { #[expect(clippy::too_many_lines, clippy::cast_precision_loss)] - fn new(settings: &Settings, stats: &Stats, history: &[atuin_client::history::History]) -> Self { + fn new( + settings: &Settings, + stats: &Stats, + history: &[crate::atuin_client::history::History], + ) -> Self { let nav_commands = stats .top .iter() @@ -313,7 +317,7 @@ pub async fn run( ); println!("Your Top Commands:"); - atuin_history::stats::pretty_print(stats.clone(), 1, theme); + crate::atuin_history::stats::pretty_print(stats.clone(), 1, theme); println!(); print_fun_facts(&wrapped_stats, &stats, year); diff --git a/crates/atuin/src/command/contributors.rs b/crates/turtle/src/command/contributors.rs index 452fd335..452fd335 100644 --- a/crates/atuin/src/command/contributors.rs +++ b/crates/turtle/src/command/contributors.rs diff --git a/crates/atuin/src/command/external.rs b/crates/turtle/src/command/external.rs index 5d875e9d..e1f0cddd 100644 --- a/crates/atuin/src/command/external.rs +++ b/crates/turtle/src/command/external.rs @@ -3,7 +3,7 @@ use std::process::Command; use std::{io, process}; #[cfg(feature = "client")] -use atuin_client::plugin::{OfficialPluginRegistry, PluginContext}; +use crate::atuin_client::plugin::{OfficialPluginRegistry, PluginContext}; use clap::CommandFactory; use clap::builder::{StyledStr, Styles}; use eyre::Result; diff --git a/crates/atuin/src/command/gen_completions.rs b/crates/turtle/src/command/gen_completions.rs index 10d4f689..10d4f689 100644 --- a/crates/atuin/src/command/gen_completions.rs +++ b/crates/turtle/src/command/gen_completions.rs diff --git a/crates/atuin/src/command/mod.rs b/crates/turtle/src/command/mod.rs index 8aac4062..e58bfe72 100644 --- a/crates/atuin/src/command/mod.rs +++ b/crates/turtle/src/command/mod.rs @@ -24,7 +24,7 @@ pub enum AtuinCmd { /// PTY proxy for atuin #[cfg(feature = "pty-proxy")] #[command(alias = "hex")] - PtyProxy(atuin_pty_proxy::PtyProxy), + PtyProxy(crate::atuin_pty_proxy::PtyProxy), /// Generate a UUID Uuid, @@ -63,7 +63,7 @@ impl AtuinCmd { Ok(()) } Self::Uuid => { - println!("{}", atuin_common::utils::uuid_v7().as_simple()); + println!("{}", crate::atuin_common::utils::uuid_v7().as_simple()); Ok(()) } Self::GenCompletions(gen_completions) => gen_completions.run(), @@ -73,7 +73,7 @@ impl AtuinCmd { } #[cfg(all(feature = "pty-proxy", unix))] -fn run_pty_proxy(proxy: atuin_pty_proxy::PtyProxy) { +fn run_pty_proxy(proxy: crate::atuin_pty_proxy::PtyProxy) { #[cfg(feature = "daemon")] proxy.run(semantic_command_capture_sink()); @@ -81,14 +81,8 @@ fn run_pty_proxy(proxy: atuin_pty_proxy::PtyProxy) { proxy.run(None); } -#[cfg(all(feature = "pty-proxy", not(unix)))] -fn run_pty_proxy(_proxy: atuin_pty_proxy::PtyProxy) { - eprintln!("atuin pty-proxy currently supports unix platforms"); - std::process::exit(1); -} - #[cfg(all(feature = "daemon", feature = "pty-proxy", unix))] -fn semantic_command_capture_sink() -> Option<atuin_pty_proxy::CommandCaptureSink> { +fn semantic_command_capture_sink() -> Option<crate::atuin_pty_proxy::CommandCaptureSink> { use std::sync::mpsc; use std::time::Duration; @@ -96,8 +90,8 @@ fn semantic_command_capture_sink() -> Option<atuin_pty_proxy::CommandCaptureSink return None; } - let settings = atuin_client::settings::Settings::new().ok()?; - let (tx, rx) = mpsc::sync_channel::<atuin_pty_proxy::CommandCapture>(128); + let settings = crate::atuin_client::settings::Settings::new().ok()?; + let (tx, rx) = mpsc::sync_channel::<crate::atuin_pty_proxy::CommandCapture>(128); std::thread::spawn(move || { let Ok(runtime) = tokio::runtime::Builder::new_current_thread() @@ -139,12 +133,12 @@ fn is_truthy_env(name: &str) -> bool { #[cfg(all(feature = "daemon", feature = "pty-proxy", unix))] async fn send_semantic_command_captures( - settings: &atuin_client::settings::Settings, - batch: Vec<atuin_pty_proxy::CommandCapture>, + settings: &crate::atuin_client::settings::Settings, + batch: Vec<crate::atuin_pty_proxy::CommandCapture>, ) { let captures = batch .into_iter() - .map(|capture| atuin_daemon::semantic::CommandCapture { + .map(|capture| crate::atuin_daemon::semantic::CommandCapture { prompt: capture.prompt, command: capture.command, output: capture.output, @@ -156,7 +150,7 @@ async fn send_semantic_command_captures( }) .collect(); - if let Ok(mut client) = atuin_daemon::SemanticClient::from_settings(settings).await { + if let Ok(mut client) = crate::atuin_daemon::SemanticClient::from_settings(settings).await { let _ = client.record_commands(captures).await; } } |
