commit 8b660ae090179248544c9dc713a5ae2d896aad37
parent 9323c57f498815e088448bf82414d411700d636e
Author: Daniel GarcĂa <dani-garcia@users.noreply.github.com>
Date: Sun, 7 Feb 2021 20:10:40 +0100
Swap structopt for a simpler alternative
Diffstat:
M | Cargo.lock | | | 122 | +++++-------------------------------------------------------------------------- |
M | Cargo.toml | | | 2 | +- |
M | src/main.rs | | | 37 | ++++++++++++++++++++----------------- |
3 files changed, 28 insertions(+), 133 deletions(-)
diff --git a/Cargo.lock b/Cargo.lock
@@ -25,15 +25,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -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",
@@ -308,21 +299,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -829,15 +805,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1805,6 +1772,12 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1884,30 +1857,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2772,36 +2721,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -2873,15 +2792,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3140,18 +3050,6 @@ dependencies = [
]
[[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"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3214,12 +3112,6 @@ 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"
source = "registry+https://github.com/rust-lang/crates.io-index"
diff --git 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
@@ -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);
}
}