8 releases (4 breaking)
0.5.0 | Mar 2, 2025 |
---|---|
0.4.1 | Mar 27, 2024 |
0.3.0 | Mar 25, 2024 |
0.2.0 | Mar 25, 2024 |
0.1.2 | Mar 25, 2024 |
#298 in Authentication
227 downloads per month
Used in syno-photos-util
16KB
262 lines
YAPP
Yet Another Password Prompt
yapp
is a small library create for Rust based on the
console to provide simple,
testable password prompt for CLI apps.
Features
- Reads user passwords from the input, optionally with a prompt and
echoing replacement symbols (
*
, or another of your choice). - Reads passwords interactively:
cargo run --example simple
- Reads passwords non-interactively:
echo "P@55w0rd\n" | cargo run --example simple
- Using the
PasswordReader
(optionallyPasswordReader + IsInteractive
) trait in your code allows for mocking the entire library in tests (see an example1 and example2) - Thanks to using the
console
library underneath, it handles unicode correctly (tested on Windows and Linux).
Usage Example
use yapp::PasswordReader;
fn my_func<P: PasswordReader>(yapp: &mut P) {
let password = yapp.read_password_with_prompt("Type your password: ").unwrap();
println!("You typed: {password}");
}
fn main() {
let mut yapp = yapp::new().with_echo_symbol('*');
my_func(&mut yapp);
}
use yapp::PasswordReader;
fn my_func(yapp: &mut dyn PasswordReader) {
let password = yapp.read_password_with_prompt("Type your password: ").unwrap();
println!("You typed: {password}");
}
fn main() {
let mut yapp = yapp::new().with_echo_symbol('*');
my_func(&mut yapp);
}
See examples for more.
Dependencies
~1.6–8MB
~57K SLoC