68 lines
1.3 KiB
Bash
68 lines
1.3 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
# Sends file(s) or stdin to http://sprunge.us
|
||
|
|
||
|
set -e
|
||
|
|
||
|
usage() {
|
||
|
more <<EOL
|
||
|
Usage: $0 [-l LANG] [FILE]
|
||
|
|
||
|
Uploads text files/input to sprunge.us, and image/binaries to transfer.sh.
|
||
|
|
||
|
Options:
|
||
|
-l LANG Specify file extension for syntax highlight. Only for text.
|
||
|
-h This information.
|
||
|
|
||
|
Examples:
|
||
|
$0 script.py
|
||
|
$0 -l py sometext
|
||
|
echo "Hello world" | bin
|
||
|
echo "puts 'Hi'" | bin -l rb
|
||
|
EOL
|
||
|
}
|
||
|
|
||
|
sprunge() {
|
||
|
while read in; do
|
||
|
echo "$in"
|
||
|
done < ${1:-/dev/stdin} \
|
||
|
| curl --progress-bar -F 'sprunge=<-' http://sprunge.us \
|
||
|
| head -n 1 \
|
||
|
| tr -d '\r\n '
|
||
|
}
|
||
|
|
||
|
#
|
||
|
while getopts hl: opt; do
|
||
|
case $opt in
|
||
|
l) lang="?$OPTARG"
|
||
|
;;
|
||
|
[h?])
|
||
|
usage
|
||
|
exit
|
||
|
;;
|
||
|
:) >&2 echo "$OPTARG requires an argument"
|
||
|
usage
|
||
|
exit 1
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
shift $((OPTIND-1))
|
||
|
|
||
|
if (($# == 0)) && [[ -t 0 ]]; then
|
||
|
>&2 echo "Nothing in stdin and no files specified!"
|
||
|
>&2 usage
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Naive lang detection from file extension
|
||
|
[[ "$1" = *.* && -z "$lang" ]] && lang="?${1##*.}"
|
||
|
|
||
|
# Read from stdin or read file(s)
|
||
|
url=$(sprunge $1)
|
||
|
|
||
|
# Assemble URL+langstr and send to clipboard
|
||
|
printf "%s%s" "$url" "$lang" | pbcopy
|
||
|
|
||
|
# Show URL to interactive users
|
||
|
[[ -t 0 ]] && pbpaste
|