diff --git a/Cargo.lock b/Cargo.lock index b5ed1a6..acb7ac2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,6 +23,38 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "argh" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34ff18325c8a36b82f992e533ece1ec9f9a9db446bd1c14d4f936bac88fcd240" +dependencies = [ + "argh_derive", + "argh_shared", + "rust-fuzzy-search", +] + +[[package]] +name = "argh_derive" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b2b83a50d329d5d8ccc620f5c7064028828538bdf5646acd60dc1f767803" +dependencies = [ + "argh_shared", + "proc-macro2", + "quote", + "syn 2.0.114", +] + +[[package]] +name = "argh_shared" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a464143cc82dedcdc3928737445362466b7674b5db4e2eb8e869846d6d84f4f6" +dependencies = [ + "serde", +] + [[package]] name = "atomic" version = "0.6.1" @@ -118,6 +150,7 @@ name = "chkr" version = "0.1.0" dependencies = [ "anyhow", + "argh", "crossterm", "insta", "ratatui", @@ -990,6 +1023,12 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +[[package]] +name = "rust-fuzzy-search" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a157657054ffe556d8858504af8a672a054a6e0bd9e8ee531059100c0fa11bb2" + [[package]] name = "rustc_version" version = "0.4.1" diff --git a/Cargo.toml b/Cargo.toml index d48c76d..5702dd7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ edition = "2024" crossterm = "0.29" ratatui = { version = "0.30", features = ["crossterm"] } anyhow = "1.0" +argh = "0.1.13" [dev-dependencies] insta = "1.33" diff --git a/src/main.rs b/src/main.rs index 32db5cc..5aaeac4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,8 +16,24 @@ use ratatui::backend::CrosstermBackend; use std::io::{self, Read as _}; use terminal_guard::TerminalModeGuard; use todo_list::TodoList; +use argh::FromArgs; + +#[derive(FromArgs)] +/// chkr - terminal checklist +struct Args { + /// print version and exit + #[argh(switch, short = 'V', long = "version")] + version: bool, +} fn main() -> Result<()> { + let args: Args = argh::from_env(); + + if args.version { + println!("v{}", env!("CARGO_PKG_VERSION")); + return Ok(()); + } + let mut input = String::new(); io::stdin() .read_to_string(&mut input)