]> git.treefish.org Git - fex.git/blob - bin/ezz
Original release 20160328
[fex.git] / bin / ezz
1 #!/bin/sh
2
3 ZZ=${ZZ:-$HOME/.zz}
4
5 usage() {
6   exec cat<<EOD
7 ezz is the edit helper program for the generic zz clip board program.
8 The clip board is \$ZZ (default: \$HOME/.zz). Options and modes are:
9
10 "ezz"                  edit \$ZZ
11 "... | ezz"            write STDIN from pipe to \$ZZ and call editor
12 "... | ezz +"          add STDIN from pipe to \$ZZ and call editor
13 "ezz 'perl-script'"    run perl-script on \$ZZ
14 "ezz - 'perl-script'"  run perl-script on \$ZZ and write result to STDOUT
15 "ezz filter [args]"    run filter [with args] on \$ZZ
16 "ezz - filter [args]"  run filter [with args] on \$ZZ and write result to STDOUT
17 "ezz -r"               restore \$ZZ from last ezz operation (\$ZZ~)
18
19 Examples:
20
21   ls -l | ezz
22   ezz "s/ /_/g"
23   ezz head -3
24   ezz - head -3
25
26 Limitation: zz does not work across different accounts!
27 EOD
28 }
29
30 JEDINIT="SAVE_STATE=0"; export JEDINIT
31
32 if [ ! -t 0 ]; then
33   if [ x"$1"x = x+x ]; then
34     shift
35     cat >>$ZZ
36   else
37     cat >$ZZ
38   fi
39 fi
40
41 test -z "$1" && exec ${EDITOR:-vi} $ZZ
42
43 case "X$*" in
44   X-h) usage;;
45   X-r) exec mv $ZZ~ $ZZ;;
46 esac
47
48 OUT="$1"
49 test "X$OUT" = X- && shift
50 test -z "$1" && exec cat $ZZ
51 mv $ZZ $ZZ~
52 case `type "$1" 2>&1` in
53   *not\ found) perl -pe "$@" <$ZZ~>$ZZ || mv $ZZ~ $ZZ;;
54             *) "$@"          <$ZZ~>$ZZ || mv $ZZ~ $ZZ;;
55 esac
56 test "X$OUT" = X- && exec cat $ZZ