use passg::prelude::*;
use structopt::StructOpt;
#[derive(Debug, StructOpt)]
struct Args {
#[structopt(short, long, default_value = "20")]
length: usize,
#[structopt(short, long, default_value = "dist")]
alpha: Alpha,
#[structopt(short, long, default_value = "dist")]
digit: Digit,
#[structopt(short, long, default_value = "basic")]
special: Special,
}
impl From<Args> for Generator {
fn from(args: Args) -> Generator {
GeneratorBuilder::default()
.length(args.length)
.alpha(args.alpha)
.digit(args.digit)
.special(args.special)
.build()
.expect("Could not build a password generator") }
}
fn main() {
let generator = Generator::from(Args::from_args());
println!("{}", generator.generate());
}