Add command line tool to submit and delete files and links. #39

Merged
electricdusk merged 1 commits from mara/rushlink:master into master 2020-03-23 17:00:47 +01:00

85
contrib/rushlink Executable file
View 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