]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/zsh | |
2 | # find the right binary under mingw, cygwin | |
3 | for x ({/mnt,}/c/Program\ Files{,\ \(x86\)}/Yubico/YubiKey\ Manager/ykman.exe ykman) { | |
4 | if [[ -x $x ]] { | |
5 | yk=$x | |
6 | } elif [[ -v commands[$x] ]] { | |
7 | yk=$commands[$x] | |
8 | } | |
9 | } | |
10 | read -s 'p?Password:'$'\n' | |
11 | typeset -a oath | |
12 | if [[ -f ./oath.txt ]] { | |
13 | # attempt to pull from local file first | |
14 | cat ./oath.txt | while {read -r x} { | |
15 | echo $x | |
16 | [[ -n $x && ! $x =~ '^\s*#' ]] && oath+=($x) | |
17 | } | |
18 | } else { | |
19 | # read from stdin otherwise, empty line to stop | |
20 | echo OATH URIs: | |
21 | while {read -r x} { | |
22 | [[ -z $x ]] && break | |
23 | [[ ! $x =~ '^\s*#' ]] && oath+=($x) | |
24 | } | |
25 | } | |
26 | for x ($($yk list --serials)) { | |
27 | # NOTE: `%$'\r'` to strip carriage return from Windows binary output | |
28 | x=${x/%$'\r'} | |
29 | # WARN: delete existing codes, remove this if you don't need it | |
30 | $yk -d $x oath accounts list -Hp $p | while {read -r y} { | |
31 | $yk -d $x oath accounts delete -fp $p ${y/%$'\r'} | |
32 | } | |
33 | for y ("$oath[@]") { | |
34 | $yk -d $x oath accounts uri -fp $p $y | |
35 | echo Added $y | |
36 | } | |
37 | } |