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