fzfmenu: DRY and don't create temporary file
This commit is contained in:
parent
ac9d611884
commit
59aa9811f3
@ -29,55 +29,53 @@ in
|
||||
|
||||
pkgs.writeDashBin "fzfmenu" ''
|
||||
set -efu
|
||||
PROMPT=">"
|
||||
for i in "$@"
|
||||
do
|
||||
case $i in
|
||||
-p)
|
||||
PROMPT="$2"
|
||||
shift
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-l)
|
||||
# no reason to filter number of lines
|
||||
LINES="$2"
|
||||
shift
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-i)
|
||||
# we do this anyway
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1" >&2
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
INPUT=$(${pkgs.coreutils}/bin/cat)
|
||||
OUTPUT="$(${pkgs.coreutils}/bin/mktemp)"
|
||||
if [ -z ''${TERM+x} ]; then #check if we can print fzf in the shell
|
||||
${pkgs.rxvt_unicode}/bin/urxvt \
|
||||
-name ${cfg.appName} \
|
||||
-title ${shell.escape cfg.windowTitle} \
|
||||
-e ${pkgs.dash}/bin/dash -c \
|
||||
"echo \"$INPUT\" | ${pkgs.fzf}/bin/fzf \
|
||||
--history=/dev/null \
|
||||
--print-query \
|
||||
--prompt=\"$PROMPT\" \
|
||||
--reverse \
|
||||
> \"$OUTPUT\"" 2>/dev/null
|
||||
|
||||
# Spawn terminal if called without one, like e.g. from a window manager.
|
||||
if [ -z ''${TERM+x} ]; then
|
||||
exec 3<&0
|
||||
exec 4>&1
|
||||
export FZFMENU_INPUT_FD=3
|
||||
export FZFMENU_OUTPUT_FD=4
|
||||
exec ${pkgs.rxvt_unicode}/bin/urxvt \
|
||||
-name ${cfg.appName} \
|
||||
-title ${shell.escape cfg.windowTitle} \
|
||||
-e "$0" "$@"
|
||||
else
|
||||
echo "$INPUT" | ${pkgs.fzf}/bin/fzf \
|
||||
exec 0<&''${FZFMENU_INPUT_FD-0}
|
||||
exec 1>&''${FZFMENU_OUTPUT_FD-1}
|
||||
fi
|
||||
|
||||
PROMPT=">"
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-p)
|
||||
PROMPT=$2
|
||||
shift 2
|
||||
break
|
||||
;;
|
||||
-l)
|
||||
# no reason to filter number of lines
|
||||
LINES=$2
|
||||
shift 2
|
||||
break
|
||||
;;
|
||||
-i)
|
||||
# we do this anyway
|
||||
shift
|
||||
break
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option $1" >&2
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
${pkgs.fzf}/bin/fzf \
|
||||
--history=/dev/null \
|
||||
--print-query \
|
||||
--prompt="$PROMPT" \
|
||||
--reverse \
|
||||
> "$OUTPUT"
|
||||
fi
|
||||
${pkgs.coreutils}/bin/tail -1 "$OUTPUT"
|
||||
${pkgs.coreutils}/bin/rm "$OUTPUT"
|
||||
|
|
||||
${pkgs.coreutils}/bin/tail -1
|
||||
''
|
||||
|
Loading…
Reference in New Issue
Block a user