tv fzmenu: init

This commit is contained in:
tv 2018-11-28 09:20:25 +01:00
parent 88ac2f4081
commit 09556c7538
3 changed files with 116 additions and 0 deletions

View File

@ -0,0 +1,41 @@
#! /bin/sh
set -efu
#PATH=
case ${FZMENU_PHASE-0} in
0)
export FZMENU_PHASE=1
exec setsid -f urxvt -name fzmenu-urxvt -e dash "$0"
;;
1)
if result=$(
FZF_DEFAULT_OPTS=${FZMENU_FZF_DEFAULT_OPTS-}
if test -n "$FZF_DEFAULT_OPTS"; then
export FZF_DEFAULT_OPTS
fi
pass git ls-files '*/otp.gpg' | \
sed '
s/\/otp\.gpg$//
' |
exec fzf \
--history=/dev/null \
--no-sort \
--prompt='OTP: ' \
)
then
export FZMENU_PHASE=2
export FZMENU_RESULT="$result"
setsid -f "$0"
fi
;;
2)
pass=$(pass otp code "$FZMENU_RESULT/otp")
printf %s "$pass" |
xdotool type -f -
;;
*)
echo "$0: error: bad phase: $FZMENU_PHASE" >&2
exit -1
esac

View File

@ -0,0 +1,41 @@
#! /bin/sh
set -efu
#PATH=
case ${FZMENU_PHASE-0} in
0)
export FZMENU_PHASE=1
exec setsid -f urxvt -name fzmenu-urxvt -e dash "$0"
;;
1)
if result=$(
FZF_DEFAULT_OPTS=${FZMENU_FZF_DEFAULT_OPTS-}
if test -n "$FZF_DEFAULT_OPTS"; then
export FZF_DEFAULT_OPTS
fi
pass git ls-files '*/*.gpg' | \
sed '
/\/otp\.gpg$:/d
s/\.gpg$//
' |
exec fzf \
--history=/dev/null \
--no-sort \
--prompt='pass: ' \
)
then
export FZMENU_PHASE=2
export FZMENU_RESULT="$result"
setsid -f "$0"
fi
;;
2)
pass=$(pass show "$FZMENU_RESULT")
printf %s "$pass" |
xdotool type -f -
;;
*)
echo "$0: error: bad phase: $FZMENU_PHASE" >&2
exit -1
esac

View File

@ -0,0 +1,34 @@
{ coreutils, dash, gnused, fzf, pass, runCommand, rxvt_unicode, stdenv, utillinux, xdotool }:
runCommand "fzmenu" {
} /* sh */ ''
mkdir $out
cp -r ${./bin} $out/bin
substituteInPlace $out/bin/otpmenu \
--replace '#! /bin/sh' '#! ${dash}/bin/dash' \
--replace '#PATH=' PATH=${stdenv.lib.makeBinPath [
coreutils
dash
fzf
gnused
pass
rxvt_unicode
utillinux
xdotool
]}
substituteInPlace $out/bin/passmenu \
--replace '#! /bin/sh' '#! ${dash}/bin/dash' \
--replace '#PATH=' PATH=${stdenv.lib.makeBinPath [
coreutils
dash
fzf
gnused
pass
rxvt_unicode
utillinux
xdotool
]}
''