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
31
32
33
34
35
#!/usr/bin/env bash
set -euo pipefail
if [[ "${TRACE-0}" == "1" ]]; then
set -o xtrace
fi
cleanup() {
if [[ -n "${tmp:-}" ]]; then
rm -f "$tmp"
fi
}
trap cleanup EXIT
main() {
tmp=$(mktemp -t vipe.XXXXXX)
if [[ -t 0 ]]; then
pbpaste > "$tmp"
else
cat > "$tmp"
fi
local editor=${VISUAL:-${EDITOR:-vi}}
# shellcheck disable=SC2086
$editor "$tmp" </dev/tty >/dev/tty
if [[ -t 1 ]]; then
pbcopy < "$tmp"
else
cat "$tmp"
fi
}
main "$@"