diff options
| author | Marc Vertes <mvertes@free.fr> | 2025-04-13 20:03:35 +0200 |
|---|---|---|
| committer | Marc Vertes <mvertes@free.fr> | 2025-04-13 20:03:35 +0200 |
| commit | 6b2ff5de7a85ac0dd21c4e6a3c6871099182d8ee (patch) | |
| tree | 11bbe9b8aab723098756c5977fb3ef5c0cebe409 /bin | |
| parent | b7927432c7574abb47425fd1af5e7d8ab8fc936c (diff) | |
cle
Diffstat (limited to 'bin')
| -rwxr-xr-x | bin/cle | 42 | ||||
| -rwxr-xr-x | bin/crypt | 8 |
2 files changed, 45 insertions, 5 deletions
@@ -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 @@ -1,13 +1,12 @@ #!/bin/sh -usage='Usage: crypt [-de] [-o output] [input] +usage='Usage: crypt [-d] [-o output] [input] Encrypt or decrypt input (default: stdin) to ouput (default: stdout), using ssh rsa key. Options: -d action is decrypt (default: encrypt) - -e action is encrypt -o output set ouput (default: stdout)' key="$(mktemp)" @@ -40,14 +39,13 @@ decrypt() { } cmd=encrypt -while getopts :deo: opt; do +while getopts :do: opt; do case $opt in d) cmd=decrypt ;; - e) cmd=encrypt ;; o) exec 1>"$OPTARG" ;; *) echo "$usage" >&2; exit 1 ;; esac done shift $((OPTIND - 1)) -[ "$1" ] && [ "$1" != "-" ] && exec 0<"$1" +[ "$1" ] && exec 0<"$1" "$cmd" |
