Merge pull request 'Add command line tool to submit and delete files and links.' (#39) from mara/rushlink:master into master
This commit is contained in:
		
						commit
						ad1ce67495
					
				
							
								
								
									
										85
									
								
								contrib/rushlink
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										85
									
								
								contrib/rushlink
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,85 @@
 | 
			
		||||
#!/usr/bin/env sh
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
LINK=https://hashru.link/
 | 
			
		||||
DELFILE="${XDG_DATA_HOME:-$HOME/.local/share}/rushlink/delete"
 | 
			
		||||
 | 
			
		||||
link() {
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        https://*|http://*)
 | 
			
		||||
            printf '%s' "$1" | curl -sS -F'shorten=<-' "$LINK"
 | 
			
		||||
            ;;
 | 
			
		||||
        *)
 | 
			
		||||
            curl -sS -Ffile=@- "$LINK" < "$1"
 | 
			
		||||
            ;;
 | 
			
		||||
    esac | sed -n '1p;/deleteToken/{s@.*\(https://\)@\1@;p;q}' | (
 | 
			
		||||
        IFS= read -r link
 | 
			
		||||
        IFS= read -r deletelink
 | 
			
		||||
        echo "$link"
 | 
			
		||||
        mkdir -p "$(dirname "$DELFILE")"
 | 
			
		||||
        echo "$deletelink" >> "$DELFILE"
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
del() {
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        https://*|http://*)
 | 
			
		||||
            URL="$1"
 | 
			
		||||
            ;;
 | 
			
		||||
        *)
 | 
			
		||||
            URL="$LINK$1"
 | 
			
		||||
            ;;
 | 
			
		||||
    esac
 | 
			
		||||
    if DELURL=$(grep -s -m1 "$URL?deleteToken=" "$DELFILE"); then
 | 
			
		||||
        echo "Deleting $URL..." >&2
 | 
			
		||||
        curl -sS -X DELETE "$DELURL" | grep deleted
 | 
			
		||||
    else
 | 
			
		||||
        echo "Delete token for $URL is not known." >&2
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if [ $# -gt 0 ]; then
 | 
			
		||||
    case "$1" in
 | 
			
		||||
        --help|-h)
 | 
			
		||||
            CMD=$(basename "$0")
 | 
			
		||||
            echo "$CMD - Command line tool for $LINK"
 | 
			
		||||
            echo
 | 
			
		||||
            echo "Usage:"
 | 
			
		||||
            echo "    $CMD https://example.com/"
 | 
			
		||||
            echo "        Shorten link."
 | 
			
		||||
            echo "    $CMD file.txt"
 | 
			
		||||
            echo "    $CMD < file.txt"
 | 
			
		||||
            echo "        Upload file."
 | 
			
		||||
            echo "    $CMD"
 | 
			
		||||
            echo "    echo hi | $CMD"
 | 
			
		||||
            echo "        Upload file from standard input."
 | 
			
		||||
            echo "    $CMD (--delete|-d) ${LINK}xd42"
 | 
			
		||||
            echo "    $CMD (--delete|-d) xd42"
 | 
			
		||||
            echo "        Delete file or shortened link."
 | 
			
		||||
            echo
 | 
			
		||||
            echo "Delete tokens are stored in $DELFILE"
 | 
			
		||||
            exit 0
 | 
			
		||||
            ;;
 | 
			
		||||
        --delete|-d)
 | 
			
		||||
            shift
 | 
			
		||||
            for url in "$@"; do
 | 
			
		||||
                del "$url"
 | 
			
		||||
            done
 | 
			
		||||
            exit 0
 | 
			
		||||
            ;;
 | 
			
		||||
        *)
 | 
			
		||||
            for url in "$@"; do
 | 
			
		||||
                link "$url"
 | 
			
		||||
            done
 | 
			
		||||
            exit 0
 | 
			
		||||
    esac
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [ -t 0 ]; then
 | 
			
		||||
    echo "Sending standard input to $LINK" >&2
 | 
			
		||||
    echo "^C to cancel, ^D to send." >&2
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
link /dev/stdin
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user