diff --git a/Cargo.lock b/Cargo.lock index dd57b04..f90ba64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6,6 +6,15 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ansi_term" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +dependencies = [ + "winapi", +] + [[package]] name = "async-compression" version = "0.3.7" @@ -19,6 +28,17 @@ dependencies = [ "tokio", ] +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + [[package]] name = "autocfg" version = "0.1.7" @@ -101,6 +121,21 @@ dependencies = [ "winapi", ] +[[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 = "const_fn" version = "0.4.5" @@ -1206,6 +1241,7 @@ name = "steamguard-cli" version = "0.2.0" dependencies = [ "base64", + "clap", "hmac-sha1", "rand 0.7.3", "reqwest", @@ -1217,6 +1253,12 @@ dependencies = [ "text_io", ] +[[package]] +name = "strsim" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" + [[package]] name = "subtle" version = "2.4.0" @@ -1266,6 +1308,15 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6cb170b4f47dc48835fbc56259c12d8963e542b05a24be2e3a1f5a6c320fd2d4" +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + [[package]] name = "thiserror" version = "1.0.24" @@ -1444,6 +1495,12 @@ dependencies = [ "tinyvec", ] +[[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.2.1" @@ -1468,6 +1525,12 @@ 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.9.3" diff --git a/Cargo.toml b/Cargo.toml index 654ae9c..4bd1ec1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,4 +16,5 @@ serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" rsa = "0.3" rand = "0.7.3" # rsa is not compatible with rand 0.8: https://github.com/RustCrypto/RSA/issues/81 -standback = "0.2.17" # required to fix a compilation error on a transient dependency \ No newline at end of file +standback = "0.2.17" # required to fix a compilation error on a transient dependency +clap = "2.33.3" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 96a7f54..e3bcee3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,11 +4,54 @@ use steamguard_cli::*; use ::std::*; use text_io::read; use std::path::Path; +use clap::{App, Arg, crate_version}; mod steamapi; mod accountmanager; fn main() { + let matches = App::new("steamguard-cli") + .version(crate_version!()) + .bin_name("steamguard") + .author("dyc3 (Carson McManus)") + .about("Generate Steam 2FA codes and confirm Steam trades from the command line.") + .arg( + Arg::with_name("username") + .long("username") + .short("u") + .help("Select the account you want by steam username. By default, the first account in the manifest is selected.") + ) + .arg( + Arg::with_name("all") + .long("all") + .short("a") + .help("Select all accounts in the manifest.") + ) + .arg( + Arg::with_name("mafiles-path") + .long("mafiles-path") + .short("m") + .default_value("~/maFiles") + .help("Specify which folder your maFiles are in.") + ) + .arg( + Arg::with_name("passkey") + .long("passkey") + .short("p") + .help("Specify your encryption passkey.") + ) + .subcommand( + App::new("trade") + .about("Interactive interface for trade confirmations") + .arg( + Arg::with_name("accept-all") + .short("a") + .long("accept-all") + .help("Accept all open trade confirmations. Does not open interactive interface.") + ) + ) + .get_matches(); + println!("Hello, world!"); // let server_time = steamapi::get_server_time();