otp-insert: require only one of `--issuer` or `--account`

closes #68
This commit is contained in:
Benjamin Denhartog 2018-03-15 14:03:50 -07:00 committed by Tad Fisher
parent 778400313d
commit 02bdc4a06f
1 changed files with 11 additions and 5 deletions

View File

@ -105,9 +105,10 @@ otp_read_uri() {
}
otp_read_secret() {
local uri prompt="$1" echo="$2" issuer accountname
issuer="$(urlencode "$3")"
accountname="$(urlencode "$4")"
local uri prompt="$1" echo="$2" issuer accountname separator
[ ! "$3" = false ] && issuer="$(urlencode "$3")"
[ ! "$4" = false ] && accountname="$(urlencode "$4")"
[ -n "$issuer" ] && [ -n "$accountname" ] && separator=":"
if [[ -t 0 ]]; then
if [[ $echo -eq 0 ]]; then
@ -123,7 +124,8 @@ otp_read_secret() {
read -r secret
fi
uri="otpauth://totp/$issuer:$accountname?secret=$secret&issuer=$issuer"
uri="otpauth://totp/${issuer}${separator}${accountname}?secret=${secret}"
[ -n "$issuer" ] && uri="${uri}&issuer=${issuer}"
otp_parse_uri "$uri"
}
@ -216,7 +218,11 @@ cmd_otp_insert() {
fi
if [[ $from_secret -eq 1 ]]; then
([[ -z "$issuer" ]] || [[ -z "$account" ]]) && die "Missing issuer or account"
[ -z "$issuer" ] && issuer=false
[ -z "$account" ] && account=false
[ "$issuer" = false ] && [ "$account" = false ] && die "Missing one of either '--issuer' or '--account'"
otp_read_secret "$prompt" $echo "$issuer" "$account"
else
otp_read_uri "$prompt" $echo