feat: add type hints, new CLI features, and improve project structure
chore: add uv.lock to gitignore Major changes: - Add type hints and docstrings to all functions (PEP 484) - Add __main__.py for module execution (python -m genpass) - Expose public API in __init__.py - Add config file support (~/.genpass/config.json) - Add entropy calculation (--entropy) - Add clipboard support (--clipboard/-c) - Add ambiguous characters exclusion (--no-ambiguous) - Add output formats: plain, json, delimited (--format) - Add sensible defaults (all character types enabled by default) - Add input validation for length and count - Update shell completions for all new options - Add pre-commit config with ruff, mypy, black - Update pyproject.toml with dev dependencies and tool configs - Add requirements.txt and requirements-dev.txt - Update README.md with comprehensive examples BREAKING CHANGE: Default behavior now includes all character types
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
_genpass() {
|
||||
local cur opts
|
||||
cur="${COMP_WORDS[COMP_CWORD]}"
|
||||
opts="--help -l --length -n --count --lower --upper --digits --symbols --symbol-set --no-ensure"
|
||||
opts="-h --help -l --length -n --count --lower --upper --digits --symbols --symbol-set --no-ensure --no-ambiguous --entropy -c --clipboard --format --config --save-config"
|
||||
COMPREPLY=( $(compgen -W "$opts" -- "$cur") )
|
||||
}
|
||||
complete -F _genpass genpass
|
||||
|
||||
@@ -1,8 +1,15 @@
|
||||
complete -c genpass -l length -s l -d "Password length"
|
||||
complete -c genpass -l count -s n -d "Number of passwords"
|
||||
complete -c genpass -l lower -d "Lowercase letters"
|
||||
complete -c genpass -l upper -d "Uppercase letters"
|
||||
complete -c genpass -l digits -d "Digits"
|
||||
complete -c genpass -l symbols -d "Symbols"
|
||||
complete -c genpass -l symbol-set -d "Custom symbol set"
|
||||
complete -c genpass -l no-ensure -d "Disable character guarantees"
|
||||
complete -c genpass -s h -l help -d "Show help message"
|
||||
complete -c genpass -s l -l length -d "Password length" -r
|
||||
complete -c genpass -s n -l count -d "Number of passwords" -r
|
||||
complete -c genpass -l lower -d "Include lowercase letters"
|
||||
complete -c genpass -l upper -d "Include uppercase letters"
|
||||
complete -c genpass -l digits -d "Include digits"
|
||||
complete -c genpass -l symbols -d "Include symbols"
|
||||
complete -c genpass -l symbol-set -d "Custom symbol set" -r
|
||||
complete -c genpass -l no-ensure -d "Disable ensure-each-type rule"
|
||||
complete -c genpass -l no-ambiguous -d "Exclude ambiguous characters"
|
||||
complete -c genpass -l entropy -d "Show password entropy"
|
||||
complete -c genpass -s c -l clipboard -d "Copy to clipboard"
|
||||
complete -c genpass -l format -d "Output format" -r -f -a "plain json delimited"
|
||||
complete -c genpass -l config -d "Show current configuration"
|
||||
complete -c genpass -l save-config -d "Save options as defaults"
|
||||
|
||||
@@ -1,10 +1,21 @@
|
||||
#compdef genpass
|
||||
_arguments \
|
||||
'--length[-l]:password length:' \
|
||||
'--count[-n]:number of passwords:' \
|
||||
'--lower[use lowercase letters]' \
|
||||
'--upper[use uppercase letters]' \
|
||||
'--digits[use digits]' \
|
||||
'--symbols[use symbols]' \
|
||||
'--symbol-set[custom symbol set]' \
|
||||
'--no-ensure[do not enforce each type]'
|
||||
'-h[show help]' \
|
||||
'--help[show help]' \
|
||||
'-l[password length]:length:' \
|
||||
'--length[password length]:length:' \
|
||||
'-n[number of passwords]:count:' \
|
||||
'--count[number of passwords]:count:' \
|
||||
'--lower[include lowercase letters]' \
|
||||
'--upper[include uppercase letters]' \
|
||||
'--digits[include digits]' \
|
||||
'--symbols[include symbols]' \
|
||||
'--symbol-set[custom symbol set]:symbols:' \
|
||||
'--no-ensure[disable ensure-each-type rule]' \
|
||||
'--no-ambiguous[exclude ambiguous characters (l, 1, I, O, 0)]' \
|
||||
'--entropy[show password entropy]' \
|
||||
'-c[copy to clipboard]' \
|
||||
'--clipboard[copy to clipboard]' \
|
||||
'--format[output format]:format:(plain json delimited)' \
|
||||
'--config[show current configuration]' \
|
||||
'--save-config[save options as defaults]'
|
||||
|
||||
Reference in New Issue
Block a user