commit 80316c2b8cf9a33c625bd50ecce0c9db0c350377
parent 0f2a932434390e15f654cf4fc5d6ae4d673d18ee
Author: Brandon Smith <brandonsmith@utexas.edu>
Date: Tue, 3 Dec 2024 14:33:58 -0600
Merge branch 'jarun:master' into master
Diffstat:
3 files changed, 72 insertions(+), 0 deletions(-)
diff --git a/plugins/README.md b/plugins/README.md
@@ -33,6 +33,8 @@ Plugins extend the capabilities of `nnn`. They are _executable_ scripts (or bina
| [getplugs](getplugs) | Update plugins to installed `nnn` version | sh | curl |
| [gitroot](gitroot) | Cd to the root of current git repo | sh | git |
| [gpge](gpge) | Encrypt/decrypt files using GPG [✓] | sh | gpg |
+| [gpgs](gpgs) | Digitally sign files using GPG [✓] | sh | gpg |
+| [gpgv](gpgv) | Verify signature files using GPG [✓] | sh | gpg |
| [gutenread](gutenread) | Browse, download, read from Project Gutenberg | sh | curl, unzip, w3m<br>[epr](https://github.com/wustho/epr) (optional) |
| [gsconnect](gsconnect) | GNOME's implementation of kdeconnect [✓] | sh | gsconnect |
| [imgresize](imgresize) | Batch resize images in dir to screen resolution | sh | [imgp](https://github.com/jarun/imgp) |
diff --git a/plugins/gpgs b/plugins/gpgs
@@ -0,0 +1,42 @@
+#!/usr/bin/env sh
+
+# Description: signs selected files using gpg.
+# includes options for clearsigning and
+# detached signing documents as well
+#
+# signed and detach signed files are stored with extension .sig
+# whereas clearsigned one are stored as .asc [by default by gpg]
+#
+# Note: The chosen method of signing is applied to all selected files [if selection is chosen]
+#
+# Shell: POSIX compliant
+# Author: wassup05
+
+file=$1
+selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
+
+printf "(s)election/(c)urrent? [default=c] "
+read -r file_resp
+printf "(s)ign/(c)learsign/(d)etach-sig? [default=s] "
+read -r sig_resp
+
+getfiles(){
+ if [ "$file_resp" = "s" ]; then
+ cat "$selection"
+ else
+ printf "%s\0" "$file"
+ fi
+}
+
+if [ "$sig_resp" = "c" ]; then
+ getfiles | xargs -0 -I{} gpg --clearsign {}
+elif [ "$sig_resp" = "d" ]; then
+ getfiles | xargs -0 -I{} gpg --detach-sig --output "{}.sig"
+else
+ getfiles | xargs -0 -I{} gpg --sign --output "{}.sig" {}
+fi
+
+# Clear selection
+if [ "$file_resp" = "s" ] && [ -p "$NNN_PIPE" ]; then
+ printf "-" > "$NNN_PIPE"
+fi
diff --git a/plugins/gpgv b/plugins/gpgv
@@ -0,0 +1,28 @@
+#!/usr/bin/env sh
+
+# Description: verifies signed files using gpg.
+# includes options for detached signing
+# (in which case it asks for a document to verify)
+# as well as normal signing
+#
+# Note: Uses the current file only [selections not supported]
+#
+# Shell: POSIX compliant
+# Author: wassup05
+
+file=$1
+
+printf "(s)ign/(d)etach-sig [default=s] "
+read -r sig_resp
+
+if [ "$sig_resp" = "d" ]; then
+ printf "Enter document name: "
+ read -r doc_name
+ command gpg --verify "$file" "$doc_name"
+else
+ command gpg --verify "$file"
+fi
+
+printf "\n"
+# shellcheck disable=SC2034
+read -r resp # Waiting for input to go back to nnn