bin/fds-passsuite: convert to Nu script

This commit is contained in:
Gabriel Arazas 2025-01-29 11:50:43 +08:00
parent 774fa3b7b1
commit 5bff5dfdab

View File

@ -1,28 +1,34 @@
#!/usr/bin/env ysh #!/usr/bin/env nu
proc main(...args) { # Generate a passphrase.
var subcommand = args[0] def "main passphrase" --wrapped [
shift 1 ...rest: string # Additional arguments to be added to the passphrase generation command.
case (subcommand) { ] {
passphrase { gopass pwgen --xkcd --lang en --one-per-line --xkcdnumbers --xkcdcapitalize ...$rest | head -n1
gopass pwgen --xkcd --lang en --one-per-line --xkcdnumbers --xkcdcapitalize @[args] | head -n1
} }
password {
gopass pwgen --symbols --one-per-line @[args] | head -n1 # Generate a password.
def "main password" --wrapped [
...rest # Additional arguments to be added to the password generation command.
] {
gopass pwgen --symbols --one-per-line ...$rest | head -n1
} }
secret {
# Generate a randomly-generated base64-encoded string.
def "main secret" [] {
dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64 dd if=/dev/urandom bs=32 count=1 2>/dev/null | base64
} }
encode-argon2 {
write -- $[args[1]] | argon2 $(openssl rand -base64 32) -e -id -k 65540 -t 3 -p 4 # Encode the given string to argon2.
} def "main encode-argon2" [
(else) { string # The string to be encoded.
echo "Invalid subcommand: '$[arg1]'." 1>&2 ] {
exit 1 $string | argon2 (openssl rand -base64 32) -e -id -k 65540 -t 3 -p 4
}
}
} }
if is-main { # A toolbelt for anything secret-related. It can be used to generate a
main @ARGV # passphrase, password, and encode into several variants.
def "main" [] {
help main | print -e
exit 0
} }