blob: b0dccbc9d3fa7e019e9b39363f66100b9a19c0b9 (
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
31
32
33
34
35
36
37
38
39
40
41
42
|
#!/bin/sh -Ce
clip() { print "$1" | tee /dev/tty | head -n 1 | pbcopy; }
del() { rm -i ~/.cle/"$1"; }
die() { echo "$@" >&2; exit 1; }
edit() {
[ "$1" ] || die 'missing argument'
tmp=$(mktemp) f=~/.cle/"$1"
trap 'rm -f "$tmp"' EXIT
print "$1" >| "$tmp" || mkdir -p "${f%/*}"
[ -s "$tmp" ] || gen >| "$tmp"
"${EDITOR:-vim}" "$tmp"
crypt "$tmp" >| "$f"
}
gen() { LC_ALL=C tr -dc 'A-Za-z0-9!?%=' < /dev/urandom | head -c 10; }
list() { cd ~/.cle && find -- * -type f; }
print() { [ -f ~/.cle/"$1" ] && crypt -d < ~/.cle/"$1"; }
tui() {
list | fzf --preview 'cle print {}' \
--preview-window hidden \
--header 'Ret Select, Esc Cancel, ^E Edit, ^N New, ^P Preview, ^Del Delete' \
--bind 'ctrl-delete:execute(cle del {})+reload(cle list)' \
--bind 'ctrl-e:execute(cle edit {})' \
--bind 'ctrl-n:execute(cle edit {q})+reload(cle list)' \
--bind 'ctrl-p:toggle-preview' \
--query "$1" --select-1 |
xargs cle clip
}
case $1 in
(clip|del|edit|gen|list|print)
cmd=$1; shift; $cmd "$@" ;;
(*)
tui "$@" ;;
esac
|