main.go
func main() {
	n := flag.Int("n", 8, "number of passwords to generate")
	min := flag.Int("min", 12, "minimum password length")
	max := flag.Int("max", 0, "maximum password length")
	digits := flag.Int("digits", 3, "number of digits")
	punctuation := flag.Int("punctuation", 1, "number of punctuation symbols")
	uppercase := flag.Int("uppercase", 1, "number of uppercase characters")
	flag.Parse()
	reqs := garbler.PasswordStrengthRequirements{
		MinimumTotalLength: *min,
		MaximumTotalLength: *max,
		Uppercase:          *uppercase,
		Digits:             *digits,
		Punctuation:        *punctuation,
	}
	for i := 0; i < *n; i++ {
		pass, err := garbler.NewPassword(&reqs)
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Println(pass)
	}
}
func main() {
	n := flag.Int("n", 8, "number of passwords to generate")
	min := flag.Int("min", 12, "minimum password length")
	max := flag.Int("max", 0, "maximum password length")
	digits := flag.Int("digits", 3, "number of digits")
	punctuation := flag.Int("punctuation", 1, "number of punctuation symbols")
	uppercase := flag.Int("uppercase", 1, "number of uppercase characters")
	flag.Parse()
	reqs := garbler.PasswordStrengthRequirements{
		MinimumTotalLength: *min,
		MaximumTotalLength: *max,
		Uppercase:          *uppercase,
		Digits:             *digits,
		Punctuation:        *punctuation,
	}
	for i := 0; i < *n; i++ {
		pass, err := garbler.NewPassword(&reqs)
		if err != nil {
			fmt.Println(err)
			return
		}
		fmt.Println(pass)
	}
}
//simple CLI interface. Sample usage:
//goner -n=8 -min=8 -max=10 -digits=3 -punctuation=3 -uppercase=4
//Flags:
//  -n: number of passwords to generate
//  -min: minimum length
//  -max: maximum length
//  -digits: digits (0-9) characters
//  -punctuation: punctuation characters
//  -uppercase: uppercase characters