pants-gen

Crates.iopants-gen
lib.rspants-gen
version0.3.0
sourcesrc
created_at2024-05-31 04:17:06.755549
updated_at2024-07-15 05:22:41.786205
descriptionA password generator.
homepage
repositoryhttps://github.com/BenPski/pants-gen
max_upload_size
id1257633
size29,026
Ben (BenPski)

documentation

README

pants-gen

Password generator, used for pants.

Documentation

Usage

A password generator that can be used as a library or at the command line

When using from the command line can either provide a spec string, or override the default (or current spec string) with other arguments.

CLI examples

Using the default spec

$ pants-gen
PHk};IUX{59!H88252x4wjD(Fg|5cva|

Overriding the default spec to be:

  • 3 or more uppercase letters
  • 1 to 2 lowercase letters
  • 3 or fewer numbers
  • 1 symbol
  • password of length 16
$ pants-gen --spec '16//3+|:upper://1-2|:lower://3-|:number://1|:symbol:'
8Z6TWWCARwJxC)8C

Overriding parts of the default spec

  • setting the length to be 12
$ pants-gen -l 12
bS),2VMV2G+T

Setting custom charater groups

  • disabling the symbols
  • setting an equivalent set of symbols to be !@#$%^&*|_+-=
$ pants-gen -s 0 -c '!@#$%^&*|_+-=|1+'
=LsI8=%@%GP5hMlIm%#dj9&66V9-#7h@

Library examples

To generate a password build up the spec and then call generate to produce the password. This function returns an Option since the constraints on the provided choices can't always meet the length requirement given.

use pants_gen::password::{PasswordSpec, CharStyle};
use pants_gen::interval::Interval;
let spec = PasswordSpec::new()
    .length(16)
    .upper_at_least(1)
    .lower(Interval::new(1,10).unwrap())
    .include(CharStyle::Number.exactly(3))
    .custom(vec!['&', '^'], Interval::exactly(1));
if let Some(p) = spec.generate() {
    println!("{}", p);
} else {
    println!("Couldn't meet constraints of spec");
}
Commit count: 25

cargo fmt