#!/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