File: upload

package info (click to toggle)
nnn 5.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,184 kB
  • sloc: ansic: 11,902; sh: 3,585; makefile: 512; cpp: 80; python: 31; csh: 2
file content (38 lines) | stat: -rwxr-xr-x 1,296 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env sh

# Description: Selections are archived into a tar file (uncompressed) and uploaded to file.io
#              For single files:
#              Paste contents of a text file to http://ix.io
#              Upload a binary file to file.io
#
# Dependencies: curl, jq, tar, file with `--mime-type` support
#
# 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
    xargs -0 tar -c < "$selection" | \
        curl -s -F "file=@/dev/stdin;filename=selection.tar" 'https://file.io/?expires=1w' | \
        jq '.link' | tr -d '"'

    # Clear selection
    printf "-" > "$NNN_PIPE"
else
    if [ -n "$1" ] && [ -s "$1" ]; then
        if file --mime-type "$1" | grep -q -F "text/"; then
            curl -F "file=@$1" https://0x0.st
        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 _