X-Git-Url: https://git.madduck.net/etc/zsh.git/blobdiff_plain/5365f4cffcb93705d61c9f8df48ed710c93b6049..34a97107375f3df8bb0562c40b6cd71618be483c:/.zsh/func/old-getpw diff --git a/.zsh/func/old-getpw b/.zsh/func/old-getpw new file mode 100755 index 0000000..4bdb401 --- /dev/null +++ b/.zsh/func/old-getpw @@ -0,0 +1,82 @@ +#!/bin/sh +# +# func/getpw +# +# obtain a password from ~/pw.gpg +# +# Copyright © 2011 martin f. krafft +# Released under the terms of the Artistic Licence 2.0 +# +# Source repository: http://git.madduck.net/v/etc/zsh.git +# + +local PWENCFILE=${HOME}/pw.gpg +local incother=0 +local dest clip=1 +[ -x $(command -v xclip) ] || clip=0 + +OPTIND=0 +while getopts :po opt; do + case "$opt" in + \?) echo >&2 "E: unrecognised option: -$OPTARG"; return 1;; + p) clip=0;; + o) incother=1;; + esac +done +(( OPTIND > 1 )) && shift $(( OPTIND - 1 )) + +if [[ $clip = 1 ]]; then + dest='tr -d \\n | xclip -in' +else + dest="column -ts' '" +fi + +if (( $# == 1 )); then + case "$1" in + *@*) local identity="${1%@*}" + local resource="${1##*@}" + ;; + *) local resource="$1";; + esac +else + local resource="$1" + local identity="$2" +fi + +local IFSOLD="$IFS"; IFS=" " +local output +gpg --decrypt --quiet "$PWENCFILE" | \ + { + output=$(while read r i p o; do + case "$r:l/$i:l" in + (*${resource:l}*/${identity:+*${identity:l}}*) + echo "'$r' '$i' '$p' '$o'";; + esac + done) + } +[ -z "$output" ] && return 1 + +typeset -al results +results=(${(f)output}) + +typeset -al result +if (( ${#results} == 1 )); then + result=(${(z)${results[1]}}) + output="${result[3]}" + [[ $incother = 1 ]] && output="$output ${result[4]}" + eval echo "$output" | eval $dest + [[ $clip = 1 ]] && eval echo >&2 "match for ${result[1]}, ID ${result[2]} put onto X clipboard." +else + if [[ $clip = 1 ]]; then + echo >&2 "E: multiple matches, hence not putting onto clipboard; use -p option." + return 1 + fi + for r in $results; do + result=(${(z)r}) + output="${result[2]}@${result[1]} ${result[3]}" + [[ $incother = 1 ]] && output="$output ${result[4]}" + echo "$output" + done | eval $dest +fi + +IFS="$IFSOLD"