aboutsummaryrefslogtreecommitdiff
path: root/tests/tmux-util/fake-fzf
blob: 476bf7fbc0052fb80286e9f8ff3397bb31bd59f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
# Fake fzf for testing tmux-util.
#
# Control via env vars:
#   FAKE_FZF_CHOICE_LINE  — 1-based line index into stdin; that line is
#                           printed as the selection and exit 0.
#   FAKE_FZF_CHOICE       — print this literal string as the selection and
#                           exit 0 (ignored if FAKE_FZF_CHOICE_LINE is set).
#   (neither set)         — exit 130 (user cancelled).
#
# Every invocation is logged to $FAKE_TMUX_DIR/calls.log as one line.

: "${FAKE_TMUX_DIR:?FAKE_TMUX_DIR must be set}"
printf 'fzf %s\n' "$*" >> "$FAKE_TMUX_DIR/calls.log"

if [ -n "${FAKE_FZF_CHOICE_LINE:-}" ]; then
    awk -v n="$FAKE_FZF_CHOICE_LINE" 'NR == n { print; exit }'
    exit 0
fi

if [ -n "${FAKE_FZF_CHOICE:-}" ]; then
    # Drain stdin so the pipe upstream doesn't SIGPIPE
    cat >/dev/null
    printf '%s\n' "$FAKE_FZF_CHOICE"
    exit 0
fi

# Cancelled
cat >/dev/null
exit 130