]> git.sev.monster Git - dotfiles.git/blobdiff - bin/ykman-oath-reload
ykman-oath-reload: new + restored features
[dotfiles.git] / bin / ykman-oath-reload
index d33914aa05a3d6826bf52254d9f64f1186a4821f..d39e113ab7f4175a72868eabb63c61edba6b2f4a 100755 (executable)
@@ -1,16 +1,37 @@
 #!/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
-echo OATH URIs:
-while read -r x; do
-    [[ -z $x ]] && break
-    oath+=($x)
-done
-for x in $(ykman list --serials); do
-    ykman -d $x oath accounts list -Hp $p | while read -r y; do
-        ykman -d $x oath accounts delete -fp $p ${y/%$'\r'}
-    done
-    for y in "$oath[@]"; do
-        ykman -d $x oath accounts uri -fp $p $y
-    done
-done
+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
+    }
+}
This page took 0.035425 seconds and 4 git commands to generate.