34 lines
775 B
Text
34 lines
775 B
Text
lowercase: to :block 'a'..'z'
|
|
uppercase: to :block 'A'..'Z'
|
|
digits: to :block '0'..'9'
|
|
other: split "!\"#$%&'()*+,-./:;<=>?@[]^_{|}~"
|
|
any: lowercase ++ uppercase ++ digits ++ other
|
|
|
|
generate: function [length][
|
|
if length < 4 [
|
|
print (color #red "ERROR: ") ++ "password length too short"
|
|
exit
|
|
]
|
|
|
|
chars: @[sample lowercase sample uppercase sample digits sample other]
|
|
while [length > size chars][
|
|
'chars ++ sample any
|
|
]
|
|
|
|
join shuffle chars
|
|
]
|
|
|
|
if zero? arg [
|
|
print {
|
|
---------------------------------
|
|
Arturo password generator
|
|
(c) 2021 drkameleon
|
|
---------------------------------
|
|
usage: passgen.art <length>
|
|
}
|
|
exit
|
|
]
|
|
|
|
loop 1..10 'x [
|
|
print generate to :integer first arg
|
|
]
|