#![forbid(unsafe_code)] #![warn(clippy::pedantic, clippy::nursery, clippy::allow_attributes)] #![expect( clippy::missing_const_for_fn, // not 100% reliable clippy::redundant_pub_crate, )] use clap::Parser; use clap::builder::Styles; use clap::builder::styling::{AnsiColor, Effects}; use eyre::Result; use command::AtuinCmd; use tracing_subscriber::util::SubscriberInitExt; mod command; pub(crate) mod atuin_client; pub(crate) mod atuin_history; const VERSION: &str = env!("CARGO_PKG_VERSION"); const SHA: &str = env!("GIT_HASH"); const LONG_VERSION: &str = concat!(env!("CARGO_PKG_VERSION"), " (", env!("GIT_HASH"), ")"); static HELP_TEMPLATE: &str = "\ {before-help}{name} {version} {author} {about} {usage-heading} {usage} {all-args}{after-help}"; const STYLES: Styles = Styles::styled() .header(AnsiColor::Yellow.on_default().effects(Effects::BOLD)) .usage(AnsiColor::Green.on_default().effects(Effects::BOLD)) .literal(AnsiColor::Green.on_default().effects(Effects::BOLD)) .placeholder(AnsiColor::Green.on_default()); /// Magical shell history #[derive(Parser)] #[command( author = "Ellie Huxtable ", version = VERSION, long_version = LONG_VERSION, help_template(HELP_TEMPLATE), styles = STYLES, )] struct Atuin { #[command(subcommand)] atuin: AtuinCmd, } impl Atuin { fn run(self) -> Result<()> { self.atuin.run() } } fn main() -> Result<()> { if let Err(e) = tracing_subscriber::registry().try_init() { eprintln!("failed to initialize logging: {e}"); } Atuin::parse().run() }