mirror of
https://tildegit.org/tomasino/pb.git
synced 2024-12-23 11:35:09 +01:00
added ability to shorten urls with -u option
This commit is contained in:
parent
b3c3b16be6
commit
740261edfa
82
pb
82
pb
@ -1,19 +1,23 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
version="v.2018.08.16"
|
# init variables
|
||||||
|
version="v.2018.10.09"
|
||||||
ENDPOINT="https://ttm.sh"
|
ENDPOINT="https://ttm.sh"
|
||||||
flag_options="hvcfs::x"
|
flag_options="hvcufs::x"
|
||||||
flag_version=0
|
flag_version=0
|
||||||
flag_help=0
|
flag_help=0
|
||||||
flag_file=0
|
flag_file=0
|
||||||
|
flag_url=0
|
||||||
flag_shortlist=0
|
flag_shortlist=0
|
||||||
flag_colors=0
|
flag_colors=0
|
||||||
data=""
|
data=""
|
||||||
|
|
||||||
|
# Colors
|
||||||
SUCCESS=$(tput setaf 190)
|
SUCCESS=$(tput setaf 190)
|
||||||
ERROR=$(tput setaf 196)
|
ERROR=$(tput setaf 196)
|
||||||
RESET=$(tput sgr0)
|
RESET=$(tput sgr0)
|
||||||
|
|
||||||
|
# help message available via func
|
||||||
show_help() {
|
show_help() {
|
||||||
cat > /dev/stdout << END
|
cat > /dev/stdout << END
|
||||||
pb [options] filename
|
pb [options] filename
|
||||||
@ -27,10 +31,12 @@ OPTIONAL FLAGS:
|
|||||||
-v Show current version number
|
-v Show current version number
|
||||||
-f Explicitly interpret stdin as filename
|
-f Explicitly interpret stdin as filename
|
||||||
-c Pretty color output
|
-c Pretty color output
|
||||||
|
-u Shorten URL
|
||||||
-s server_address Use alternative pastebin server address
|
-s server_address Use alternative pastebin server address
|
||||||
END
|
END
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# helper for program exit, supports error codes and messages
|
||||||
die () {
|
die () {
|
||||||
msg="$1"
|
msg="$1"
|
||||||
code="$2"
|
code="$2"
|
||||||
@ -60,9 +66,12 @@ else
|
|||||||
data="$(cat < /dev/stdin )"
|
data="$(cat < /dev/stdin )"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# attempt to parse options or die
|
||||||
if ! parsed=$(getopt ${flag_options} "$@"); then
|
if ! parsed=$(getopt ${flag_options} "$@"); then
|
||||||
die "Invalid input" 2
|
die "Invalid input" 2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# handle options
|
||||||
eval set -- "${parsed}"
|
eval set -- "${parsed}"
|
||||||
while true; do
|
while true; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
@ -82,6 +91,9 @@ while true; do
|
|||||||
shift
|
shift
|
||||||
ENDPOINT="$1"
|
ENDPOINT="$1"
|
||||||
;;
|
;;
|
||||||
|
-u)
|
||||||
|
flag_url=1
|
||||||
|
;;
|
||||||
-x)
|
-x)
|
||||||
flag_shortlist=1
|
flag_shortlist=1
|
||||||
;;
|
;;
|
||||||
@ -96,55 +108,99 @@ while true; do
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# if data variable is empty (not a pipe) use params as fallback
|
||||||
if [ -z "$data" ]; then
|
if [ -z "$data" ]; then
|
||||||
data="$*"
|
data="$*"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# display current version
|
||||||
if [ ${flag_version} -gt 0 ]; then
|
if [ ${flag_version} -gt 0 ]; then
|
||||||
printf "%s\\n" "${version}"
|
printf "%s\\n" "${version}"
|
||||||
die "" 0
|
die "" 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# display help
|
||||||
if [ ${flag_help} -gt 0 ]; then
|
if [ ${flag_help} -gt 0 ]; then
|
||||||
show_help
|
show_help
|
||||||
die "" 0
|
die "" 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# shortlist used for bash command completion
|
||||||
if [ ${flag_shortlist} -gt 0 ]; then
|
if [ ${flag_shortlist} -gt 0 ]; then
|
||||||
out="-f -v -h -s -c"
|
out="-f -v -h -s -c -u"
|
||||||
lsresults="$(ls)"
|
lsresults="$(ls)"
|
||||||
die "${out} ${lsresults}" 0
|
die "${out} ${lsresults}" 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${flag_file} -gt 0 ]; then
|
# URL shortening reference
|
||||||
|
|
||||||
|
# If URL mode detected, process URL shortener and end processing without
|
||||||
|
# checking for a file to upload to the pastebin
|
||||||
|
if [ ${flag_url} -gt 0 ]; then
|
||||||
|
|
||||||
if [ -z "${data}" ]; then
|
if [ -z "${data}" ]; then
|
||||||
|
# if no data
|
||||||
|
|
||||||
|
# print error message
|
||||||
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
|
printf "%sProvide URL to shorten%s\\n" "$ERROR" "$RESET"
|
||||||
|
else
|
||||||
|
printf "Provide URL to shorten\\n"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
|
||||||
|
# shorten URL and print results
|
||||||
|
curl -F"shorten=${data}" "${ENDPOINT}"
|
||||||
|
fi
|
||||||
|
die "" 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${flag_file} -gt 0 ]; then
|
||||||
|
# file mode
|
||||||
|
|
||||||
|
if [ -z "${data}" ]; then
|
||||||
|
# if no data
|
||||||
|
|
||||||
|
# print error message
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%sProvide data to upload%s\\n" "$ERROR" "$RESET"
|
printf "%sProvide data to upload%s\\n" "$ERROR" "$RESET"
|
||||||
else
|
else
|
||||||
printf "Provide data to upload\\n"
|
printf "Provide data to upload\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
elif [ ! -f "${data}" ]; then
|
elif [ ! -f "${data}" ]; then
|
||||||
|
# file not found with name provided
|
||||||
|
|
||||||
|
# print error messagse
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%s%s%s\\tFile not found.%s\\n" "$RESET" "${data}" "$ERROR" "$RESET"
|
printf "%s%s%s\\tFile not found.%s\\n" "$RESET" "${data}" "$ERROR" "$RESET"
|
||||||
else
|
else
|
||||||
printf "%s\\tFile not found.\\n" "${data}"
|
printf "%s\\tFile not found.\\n" "${data}"
|
||||||
fi
|
fi
|
||||||
# attempt to split data and upload each string as file
|
|
||||||
for f in ${data}
|
# attempt to split data string (multi-line?) and upload each string as file
|
||||||
do
|
for f in ${data}; do
|
||||||
# if there's nothing to parse, skip this loop
|
# if there's nothing to parse, skip this loop
|
||||||
if [ "$f" = "$data" ]; then
|
if [ "$f" = "$data" ]; then
|
||||||
break;
|
break;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# print name of file parsed, but not yet status of success or failure
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%s%s\\t%s" "$RESET" "${f}" "$SUCCESS"
|
printf "%s%s\\t%s" "$RESET" "${f}" "$SUCCESS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# check if file exists
|
||||||
if [ -f "${f}" ]; then
|
if [ -f "${f}" ]; then
|
||||||
|
# send file to endpoint
|
||||||
curl -F"file=@${f}" "${ENDPOINT}"
|
curl -F"file=@${f}" "${ENDPOINT}"
|
||||||
|
|
||||||
|
# print result short url
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%s" "$RESET"
|
printf "%s" "$RESET"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# print error message
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%sFile not found.%s\\n" "$ERROR" "$RESET"
|
printf "%sFile not found.%s\\n" "$ERROR" "$RESET"
|
||||||
else
|
else
|
||||||
@ -153,6 +209,9 @@ if [ ${flag_file} -gt 0 ]; then
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
|
# data available in file
|
||||||
|
|
||||||
|
# send file to endpoint
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%s${data}\\t%s" "$RESET" "$SUCCESS"
|
printf "%s${data}\\t%s" "$RESET" "$SUCCESS"
|
||||||
curl -F"file=@${data}" "${ENDPOINT}"
|
curl -F"file=@${data}" "${ENDPOINT}"
|
||||||
@ -162,13 +221,22 @@ if [ ${flag_file} -gt 0 ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
# non-file mode
|
||||||
|
|
||||||
if [ -z "${data}" ]; then
|
if [ -z "${data}" ]; then
|
||||||
|
# if no data
|
||||||
|
|
||||||
|
# print error message
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%sNo data found for upload. Please try again.%s\\n" "$ERROR" "$RESET"
|
printf "%sNo data found for upload. Please try again.%s\\n" "$ERROR" "$RESET"
|
||||||
else
|
else
|
||||||
printf "No data found for upload. Please try again.\\n"
|
printf "No data found for upload. Please try again.\\n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
else
|
else
|
||||||
|
# data available
|
||||||
|
|
||||||
|
# send data to endpoint, print short url
|
||||||
if [ ${flag_colors} -gt 0 ]; then
|
if [ ${flag_colors} -gt 0 ]; then
|
||||||
printf "%s" "$SUCCESS"
|
printf "%s" "$SUCCESS"
|
||||||
printf "%s" "${data}" | curl -F"file=@-;filename=null.txt" "${ENDPOINT}"
|
printf "%s" "${data}" | curl -F"file=@-;filename=null.txt" "${ENDPOINT}"
|
||||||
|
Loading…
Reference in New Issue
Block a user