diff --git a/Cargo.lock b/Cargo.lock index b8adbb4..43d111d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,35 +1,24 @@ -[[package]] -name = "ansi_term" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "atty" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.37 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "bitflags" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "clap" -version = "2.30.0" +version = "2.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", - "atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", - "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", + "textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cloudabi" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -42,7 +31,7 @@ name = "fuchsia-zircon" version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -53,69 +42,51 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "libc" -version = "0.2.37" +version = "0.2.43" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "pwgenr" -version = "0.2.0" +version = "0.3.0" dependencies = [ - "clap 2.30.0 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)", "find_folder 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", "unichars 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rand" -version = "0.4.2" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.37 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)", + "rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "redox_syscall" -version = "0.1.37" +name = "rand_core" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "redox_termios" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "strsim" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "termion" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.37 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", - "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "textwrap" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -125,17 +96,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "unicode-width" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "version_check" version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -[[package]] -name = "vec_map" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" - [[package]] name = "winapi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -153,24 +124,20 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum ansi_term 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6b3568b48b7cefa6b8ce125f9bb4989e52fbcc29ebea88df04cc7c5f12f70455" -"checksum atty 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8352656fd42c30a0c3c89d26dea01e3b77c0ab2af18230835c15e2e13cd51859" -"checksum bitflags 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3c30d3802dfb7281680d6285f2ccdaa8c2d8fee41f93805dba5c4cf50dc23cf" -"checksum clap 2.30.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1c07b9257a00f3fc93b7f3c417fc15607ec7a56823bc2c37ec744e266387de5b" +"checksum bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "228047a76f468627ca71776ecdebd732a3423081fcf5125585bcd7c49886ce12" +"checksum clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b957d88f4b6a63b9d70d5f454ac8011819c6efa7727858f458ab71c756ce2d3e" +"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" "checksum find_folder 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9f6d018fb95a0b59f854aed68ecd96ce2b80af7911b92b1fed3c4b1fa516b91b" "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" -"checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" -"checksum libc 0.2.37 (registry+https://github.com/rust-lang/crates.io-index)" = "56aebce561378d99a0bb578f8cb15b6114d2a1814a6c7949bbe646d968bb4fa9" -"checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" -"checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" -"checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" -"checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" -"checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" -"checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" +"checksum lazy_static 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca488b89a5657b0a2ecd45b95609b3e848cf1755da332a0da46e2b2b1cb371a7" +"checksum libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)" = "76e3a3ef172f1a0b9a9ff0dd1491ae5e6c948b94479a3021819ba7d860c8645d" +"checksum rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e464cd887e869cddcae8792a4ee31d23c7edd516700695608f5b98c67ee0131c" +"checksum rand_core 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "edecf0f94da5551fc9b492093e30b041a891657db7940ee221f9d2f66e82eef2" +"checksum textwrap 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "307686869c93e71f94da64286f9a9524c0f308a9e1c87a583de8e9c9039ad3f6" "checksum unichars 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7b0eccb6815251914e96be582034145d89326e73d394d91330b693c3f1edfbd2" -"checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" -"checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" -"checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" +"checksum unicode-width 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526" +"checksum version_check 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "7716c242968ee87e5542f8021178248f267f295a5c4803beae8b8b7fd9bc6051" +"checksum winapi 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "773ef9dcc5f24b7d850d0ff101e542ff24c3b090a9768e03ff889fdef41f00fd" "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index 03f63e5..3716dda 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,5 @@ [package] -authors = ["FliegendeWurst <2012gdwu@web.de>"] -build = "build.rs" +authors = ["Arne Keller "] categories = ["command-line-utilities"] description = "A untypable password generator" keywords = [ @@ -12,19 +11,14 @@ license = "GPL-3.0" name = "pwgenr" readme = "README.md" repository = "https://gitlab.com/Sakuhl/pwgenr/" -version = "0.2.1" - -[build-dependencies] -clap = "^2.20" -lazy_static = "1.0" -unichars = "^0.0" +version = "0.3.0" [dependencies] -clap = "2.20" -lazy_static = "1.0" -rand = "0.4" +clap = { version = "2.32", default-features = false } +lazy_static = "1.1" +rand = "0.5.5" unichars = "^0.0" [dev-dependencies] -find_folder = "^0.3" -lazy_static = "1.0" +find_folder = "0.3" +lazy_static = "1.1" diff --git a/build.rs b/build.rs deleted file mode 100644 index 6bebf02..0000000 --- a/build.rs +++ /dev/null @@ -1,26 +0,0 @@ -#[macro_use] extern crate lazy_static; - -extern crate clap; - -use clap::Shell; - -use std::env; - -include!("src/cli.rs"); - -fn main() { - let outdir = match env::var_os("OUT_DIR") { - None => return, - Some(outdir) => outdir, - }; - let mut app = build_cli(); - app.gen_completions("pwgenr", // We need to specify the bin name manually - Shell::Bash, // Then say which shell to build completions for - outdir.clone()); // Then say where write the completions to - app.gen_completions("pwgenr", - Shell::Zsh, - outdir.clone()); - app.gen_completions("pwgenr", - Shell::Fish, - outdir.clone()); -} \ No newline at end of file diff --git a/src/cli.rs b/src/cli.rs index 7ae8fb6..c3c398a 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -25,32 +25,27 @@ fn is_int(s: String) -> Result<(), String> { } pub fn build_cli() -> App<'static, 'static> { - App::new("Password generator") - .version(option_env!("CARGO_PKG_VERSION").unwrap_or("42")) - .author("Sakuhl <2012gdwu@web.de>") + App::new("pwgenr") + .version(env!("CARGO_PKG_VERSION")) + .author("Arne Keller ") .arg(Arg::with_name("categories") .short("c") .takes_value(true) .multiple(true) - .conflicts_with("ascii") .possible_values(&CATEGORIES.keys().cloned().collect::>()) .help("Categories to be used")) .arg(Arg::with_name("clipboard") .short("b") .long("clipboard") .help("Copy first password to clipboard (requires xclip)")) - .arg(Arg::with_name("ascii") - .short("a") - .long("ascii") - .help("Only use ASCII characters")) .arg(Arg::with_name("LENGTH") .takes_value(true) .validator(is_int) .default_value("64") - .help("The length of the generated passwords")) + .help("of the generated passwords")) .arg(Arg::with_name("AMOUNT") .takes_value(true) .validator(is_int) .default_value("12") - .help("How many passwords should be generated")) + .help("of generated passwords")) } \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 255b778..32dae1e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,8 +14,8 @@ mod cli; fn gen_pw(alphabet: &[char], length: usize, rng: &mut OsRng) -> String { let mut buf = String::new(); for _ in 0..length { - let c = rng.choose(alphabet).map(|x| x.to_string()).unwrap_or_else(|| unreachable!()); - buf.push_str(&c); + let c = rng.choose(alphabet).unwrap(); + buf.push(*c); } buf } @@ -23,15 +23,10 @@ fn gen_pw(alphabet: &[char], length: usize, rng: &mut OsRng) -> String { fn main() { let matches = cli::build_cli().get_matches(); - // these unwraps are safe, since the value is required and validated in cli.rs let length = matches.value_of("LENGTH").unwrap().parse::().unwrap(); let amount = matches.value_of("AMOUNT").unwrap().parse::().unwrap(); - let alphabet = if matches.is_present("ascii") { - let mut all = Vec::new(); - all.extend(ASCII); - all - } else if let Some(categories) = matches.values_of("categories") { + let alphabet = if let Some(categories) = matches.values_of("categories") { let mut all = Vec::new(); for category in categories { all.extend_from_slice(cli::CATEGORIES.get(category).unwrap()); diff --git a/tests/all.rs b/tests/all.rs index 5e13d43..40a2f0e 100644 --- a/tests/all.rs +++ b/tests/all.rs @@ -1,4 +1,3 @@ -///! All tests assume only one password is printed per line, since we can't get the 'real' terminal width in a test #[macro_use] extern crate lazy_static; extern crate find_folder; use find_folder::Search;