#!/bin/zsh # find the right binary under mingw, cygwin for x ({/mnt,}/c/Program\ Files{,\ \(x86\)}/Yubico/YubiKey\ Manager/ykman.exe ykman) { if [[ -x $x ]] { yk=$x } elif [[ -v commands[$x] ]] { yk=$commands[$x] } } read -s 'p?Password:'$'\n' typeset -a oath if [[ -f ./oath.txt ]] { # attempt to pull from local file first cat ./oath.txt | while {read -r x} { echo $x [[ -n $x && ! $x =~ '^\s*#' ]] && oath+=($x) } } else { # read from stdin otherwise, empty line to stop echo OATH URIs: while {read -r x} { [[ -z $x ]] && break [[ ! $x =~ '^\s*#' ]] && oath+=($x) } } for x ($($yk list --serials)) { # NOTE: `%$'\r'` to strip carriage return from Windows binary output x=${x/%$'\r'} # WARN: delete existing codes, remove this if you don't need it $yk -d $x oath accounts list -Hp $p | while {read -r y} { $yk -d $x oath accounts delete -fp $p ${y/%$'\r'} } for y ("$oath[@]") { $yk -d $x oath accounts uri -fp $p $y echo Added $y } }