Add command line tool to submit and delete files and links. #39
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…
Reference in New Issue
Block a user