fzy
terminal fuzzy finder picker
git clone https://9o.is/git/fzy.git
fzy-dvtm
(1067B)
1 #!/bin/sh
2
3 _echo() {
4 printf %s\\n "$*"
5 }
6
7 fatal() {
8 _echo "$*" >&2
9 exit 1
10 }
11
12 main() {
13 if [ -z "${DVTM_CMD_FIFO}" ]; then
14 fatal "No DVTM_CMD_FIFO variable detected in the environment"
15 fi
16
17 readonly PATH_DIR_TMP=$(mktemp -d)
18 readonly PATH_FIFO_IN="${PATH_DIR_TMP}/in"
19 readonly PATH_FIFO_OUT="${PATH_DIR_TMP}/out"
20 readonly PATH_FIFO_RET="${PATH_DIR_TMP}/ret"
21
22 if [ -z "${PATH_DIR_TMP}" ]; then
23 fatal "Unable to create a temporary directory"
24 fi
25
26 args=""
27 for i in "$@"; do
28 if [ -z "${args}" ]; then
29 args="\\'${i}\\'"
30 else
31 args="${args} \\'${i}\\'"
32 fi
33 done
34
35 mkfifo "${PATH_FIFO_IN}" "${PATH_FIFO_OUT}"
36
37 _echo \
38 "create 'fzy ${args} < \\'${PATH_FIFO_IN}\\' > \\'${PATH_FIFO_OUT}\\' 2>&1; echo $? > \\'${PATH_FIFO_RET}\\''" \
39 > "${DVTM_CMD_FIFO}"
40 cat <&0 > "${PATH_FIFO_IN}" &
41 cat < "${PATH_FIFO_OUT}"
42
43 readonly CODE_RET=$(head -n 1 "${PATH_FIFO_RET}")
44
45 rm -rf "${PATH_DIR_TMP}"
46
47 exit "${CODE_RET}"
48 }
49
50 main "$@"