aboutsummaryrefslogtreecommitdiff
path: root/files/.config/nnn/plugins/upload
diff options
context:
space:
mode:
Diffstat (limited to 'files/.config/nnn/plugins/upload')
-rwxr-xr-xfiles/.config/nnn/plugins/upload45
1 files changed, 45 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/upload b/files/.config/nnn/plugins/upload
new file mode 100755
index 0000000..4948587
--- /dev/null
+++ b/files/.config/nnn/plugins/upload
@@ -0,0 +1,45 @@
+#!/usr/bin/env sh
+
+# Description: Selections are uploaded using Firefox Send
+# For single files:
+# Upload to Firefox Send if ffsend is found, else
+# Paste contents of a text a file http://ix.io
+# Upload a binary file to file.io
+#
+# Dependencies: ffsend (https://github.com/timvisee/ffsend), curl, jq, tr
+#
+# Note: Binary file set to expire after a week
+#
+# Shell: POSIX compliant
+# Author: Arun Prakash Jana
+
+selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
+if [ -s "$selection" ]; then
+ if type ffsend >/dev/null 2>&1; then
+ # File name will be randomized foo.tar
+ xargs -0 < "$selection" ffsend u
+ else
+ printf "ffsend is required to upload selection."
+ fi
+
+ # Clear selection
+ printf "-" > "$NNN_PIPE"
+else
+ if [ -n "$1" ] && [ -s "$1" ]; then
+ if type ffsend >/dev/null 2>&1; then
+ ffsend -fiq u "$1"
+ elif [ "$(mimetype --output-format %m "$1" | awk -F '/' '{print $1}')" = "text" ]; then
+ curl -F "f:1=@$1" ix.io
+ else
+ # Upload the file, show the download link and wait till user presses any key
+ curl -s -F "file=@$1" https://file.io/?expires=1w | jq '.link' | tr -d '"'
+
+ # To write download link to "$1".loc and exit
+ # curl -s -F "file=@$1" https://file.io/?expires=1w -o `basename "$1"`.loc
+ fi
+ else
+ printf "empty file!"
+ fi
+fi
+
+read -r _