diff --git a/Cargo.lock b/Cargo.lock index ae7f4a95..68994d43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,15 +24,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi 0.3.9", -] - [[package]] name = "atty" version = "0.2.14" @@ -158,6 +149,7 @@ dependencies = [ "parity-ws", "paste", "percent-encoding 2.1.0", + "pico-args", "rand 0.8.3", "regex", "reqwest", @@ -168,7 +160,6 @@ dependencies = [ "serde", "serde_json", "soup", - "structopt", "syslog", "time 0.2.25", "u2f", @@ -307,21 +298,6 @@ dependencies = [ "parse-zoneinfo", ] -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - [[package]] name = "cloudabi" version = "0.0.3" @@ -828,15 +804,6 @@ version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" -[[package]] -name = "heck" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" -dependencies = [ - "unicode-segmentation", -] - [[package]] name = "hermit-abi" version = "0.1.18" @@ -1804,6 +1771,12 @@ dependencies = [ "siphasher", ] +[[package]] +name = "pico-args" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d70072c20945e1ab871c472a285fc772aefd4f5407723c206242f2c6f94595d6" + [[package]] name = "pin-project" version = "0.4.27" @@ -1883,30 +1856,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2 1.0.24", - "quote 1.0.8", - "syn 1.0.60", - "version_check 0.9.2", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2 1.0.24", - "quote 1.0.8", - "version_check 0.9.2", -] - [[package]] name = "proc-macro-hack" version = "0.5.19" @@ -2771,36 +2720,6 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "structopt" -version = "0.3.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5277acd7ee46e63e5168a80734c9f6ee81b1367a7d8772a2d765df2a3705d28c" -dependencies = [ - "clap", - "lazy_static", - "structopt-derive", -] - -[[package]] -name = "structopt-derive" -version = "0.4.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ba9cdfda491b814720b6b06e0cac513d922fc407582032e8706e9f137976f90" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2 1.0.24", - "quote 1.0.8", - "syn 1.0.60", -] - [[package]] name = "subtle" version = "2.4.0" @@ -2872,15 +2791,6 @@ dependencies = [ "utf-8", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "thread_local" version = "1.1.3" @@ -3139,18 +3049,6 @@ dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" - -[[package]] -name = "unicode-width" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" - [[package]] name = "unicode-xid" version = "0.1.0" @@ -3213,12 +3111,6 @@ version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b00bca6106a5e23f3eee943593759b7fcddb00554332e856d990c893966879fb" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.1.5" diff --git a/Cargo.toml b/Cargo.toml index c943bbef..fcd2d76d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -119,7 +119,7 @@ percent-encoding = "2.1.0" idna = "0.2.1" # CLI argument parsing -structopt = "0.3.21" +pico-args = "0.4.0" # Logging panics to logfile instead stderr only backtrace = "0.3.56" diff --git a/src/main.rs b/src/main.rs index c466cc2c..6263cca0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -25,8 +25,6 @@ use std::{ thread, }; -use structopt::StructOpt; - #[macro_use] mod error; mod api; @@ -41,14 +39,6 @@ mod util; pub use config::CONFIG; pub use error::{Error, MapResult}; -#[derive(Debug, StructOpt)] -#[structopt(name = "bitwarden_rs", about = "A Bitwarden API server written in Rust")] -struct Opt { - /// Prints the app version - #[structopt(short, long)] - version: bool, -} - fn main() { parse_args(); launch_info(); @@ -70,14 +60,27 @@ fn main() { launch_rocket(extra_debug); } +const HELP: &str = "\ + A Bitwarden API server written in Rust + + USAGE: + bitwarden_rs + + FLAGS: + -h, --help Prints help information + -v, --version Prints the app version +"; + fn parse_args() { - let opt = Opt::from_args(); - if opt.version { - if let Some(version) = option_env!("BWRS_VERSION") { - println!("bitwarden_rs {}", version); - } else { - println!("bitwarden_rs (Version info from Git not present)"); - } + const NO_VERSION: &str = "(Version info from Git not present)"; + let mut pargs = pico_args::Arguments::from_env(); + + if pargs.contains(["-h", "--help"]) { + println!("bitwarden_rs {}", option_env!("BWRS_VERSION").unwrap_or(NO_VERSION)); + print!("{}", HELP); + exit(0); + } else if pargs.contains(["-v", "--version"]) { + println!("bitwarden_rs {}", option_env!("BWRS_VERSION").unwrap_or(NO_VERSION)); exit(0); } }