From 6b2ff5de7a85ac0dd21c4e6a3c6871099182d8ee Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Sun, 13 Apr 2025 20:03:35 +0200 Subject: cle --- bin/cle | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100755 bin/cle (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle new file mode 100755 index 0000000..63a7153 --- /dev/null +++ b/bin/cle @@ -0,0 +1,42 @@ +#!/bin/sh -C + +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 'ctrl-del: delete, ctrl-e: edit, ctrl-n: new' \ + --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-v:toggle-preview' \ + --query "$1" --select-1 | + xargs cle clip +} + +case $1 in + (clip|del|edit|gen|list|print) + cmd=$1; shift; $cmd "$@" ;; + (*) + tui "$@" ;; +esac -- cgit v1.2.3 From 5ec6897410333a16f3ecc3f572b6d7dc490168d9 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Mon, 14 Apr 2025 10:29:17 +0200 Subject: update --- bin/cle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle index 63a7153..b0dccbc 100755 --- a/bin/cle +++ b/bin/cle @@ -1,4 +1,4 @@ -#!/bin/sh -C +#!/bin/sh -Ce clip() { print "$1" | tee /dev/tty | head -n 1 | pbcopy; } @@ -25,11 +25,11 @@ print() { [ -f ~/.cle/"$1" ] && crypt -d < ~/.cle/"$1"; } tui() { list | fzf --preview 'cle print {}' \ --preview-window hidden \ - --header 'ctrl-del: delete, ctrl-e: edit, ctrl-n: new' \ + --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-v:toggle-preview' \ + --bind 'ctrl-p:toggle-preview' \ --query "$1" --select-1 | xargs cle clip } -- cgit v1.2.3 From 197f065a22a712d20d91862cbfb6ef4615774b4d Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Tue, 15 Apr 2025 16:09:54 +0200 Subject: update --- bin/cle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle index b0dccbc..af18e89 100755 --- a/bin/cle +++ b/bin/cle @@ -18,7 +18,7 @@ edit() { gen() { LC_ALL=C tr -dc 'A-Za-z0-9!?%=' < /dev/urandom | head -c 10; } -list() { cd ~/.cle && find -- * -type f; } +list() { cd ~/.cle && find -- * -name .git -prune -o -type f -print; } print() { [ -f ~/.cle/"$1" ] && crypt -d < ~/.cle/"$1"; } -- cgit v1.2.3 From 932179c84fd566d821e05da91c4924d7cb0e591f Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Wed, 16 Apr 2025 19:25:29 +0200 Subject: update --- bin/cle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle index af18e89..1ff9dd0 100755 --- a/bin/cle +++ b/bin/cle @@ -13,7 +13,7 @@ edit() { print "$1" >| "$tmp" || mkdir -p "${f%/*}" [ -s "$tmp" ] || gen >| "$tmp" "${EDITOR:-vim}" "$tmp" - crypt "$tmp" >| "$f" + crypt < "$tmp" >| "$f" } gen() { LC_ALL=C tr -dc 'A-Za-z0-9!?%=' < /dev/urandom | head -c 10; } -- cgit v1.2.3 From ba6dd3256c9508ed0c71c7f3346d910803d54a46 Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Thu, 17 Apr 2025 21:19:07 +0200 Subject: update --- bin/cle | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle index 1ff9dd0..b26d8b7 100755 --- a/bin/cle +++ b/bin/cle @@ -2,7 +2,14 @@ clip() { print "$1" | tee /dev/tty | head -n 1 | pbcopy; } -del() { rm -i ~/.cle/"$1"; } +checkpath() { set -- $(realpath "$1"); [ "${1#~/.cle/}" != "$1" ]; } + +del() { + set -- ~/.cle/"$1" + checkpath "$1" || die "invalid path $1" + rm -i "$1" + rmdir -p "${1%/*}" 2>/dev/null || true +} die() { echo "$@" >&2; exit 1; } -- cgit v1.2.3 From 733d2209b0c78adaf55baf26b4aa67ef08f057ab Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Fri, 25 Apr 2025 16:49:35 +0200 Subject: update --- bin/cle | 50 +------------------------------------------------- 1 file changed, 1 insertion(+), 49 deletions(-) mode change 100755 => 120000 bin/cle (limited to 'bin/cle') diff --git a/bin/cle b/bin/cle deleted file mode 100755 index b26d8b7..0000000 --- a/bin/cle +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/sh -Ce - -clip() { print "$1" | tee /dev/tty | head -n 1 | pbcopy; } - -checkpath() { set -- $(realpath "$1"); [ "${1#~/.cle/}" != "$1" ]; } - -del() { - set -- ~/.cle/"$1" - checkpath "$1" || die "invalid path $1" - rm -i "$1" - rmdir -p "${1%/*}" 2>/dev/null || true -} - -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 -- * -name .git -prune -o -type f -print; } - -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 diff --git a/bin/cle b/bin/cle new file mode 120000 index 0000000..a0092cf --- /dev/null +++ b/bin/cle @@ -0,0 +1 @@ +../.cle/cle \ No newline at end of file -- cgit v1.2.3