]> Sergey Matveev's repositories - nnn.git/blob - plugins/upload
Clear less'es screen
[nnn.git] / plugins / upload
1 #!/usr/bin/env sh
2
3 # Description: Selections are uploaded using Firefox Send
4 #              For single files:
5 #              Upload to Firefox Send if ffsend is found, else
6 #              Paste contents of a text a file http://ix.io
7 #              Upload a binary file to file.io
8 #
9 # Dependencies: ffsend (https://github.com/timvisee/ffsend), curl, jq, tr
10 #
11 # Note: Binary file set to expire after a week
12 #
13 # Shell: POSIX compliant
14 # Author: Arun Prakash Jana
15
16 selection=${NNN_SEL:-${XDG_CONFIG_HOME:-$HOME/.config}/nnn/.selection}
17 if [ -s "$selection" ]; then
18     if type ffsend >/dev/null 2>&1; then
19       # File name will be randomized foo.tar
20       xargs -0 < "$selection" ffsend u
21     else
22       printf "ffsend is required to upload selection."
23     fi
24
25     # Clear selection
26     printf "-" > "$NNN_PIPE"
27 else
28     if [ -n "$1" ] && [ -s "$1" ]; then
29         if type ffsend >/dev/null 2>&1; then
30             ffsend -fiq u "$1"
31         elif [ "$(mimetype --output-format %m "$1" | awk -F '/' '{print $1}')" = "text" ]; then
32             curl -F "f:1=@$1" ix.io
33         else
34             # Upload the file, show the download link and wait till user presses any key
35             curl -s -F "file=@$1" https://file.io/?expires=1w | jq '.link' | tr -d '"'
36
37             # To write download link to "$1".loc and exit
38             # curl -s -F "file=@$1" https://file.io/?expires=1w -o `basename "$1"`.loc
39         fi
40     else
41         printf "empty file!"
42     fi
43 fi
44
45 read -r _