#!/bin/sh
# upload - upload file to upload.mephory.com
# You need to set the UPLOAD_KEY environment variable.
#
# Usage: upload [OPTION]... [FILE]
#
# Options:
#   -l, --list          list uploaded file
#   -c, --copy=NUM      copy url for uploaded file
#   -n, --name=NAME     use NAME as filename
#   -p, --private       upload a private file
#   -h, --help          display this help


while [ "$#" -gt 0 ]; do
    case "$1" in
        -l) ARG_LIST=true; shift 1;;
        --list) ARG_LIST=true; shift 1;;

        -c) ARG_COPY="$2"; shift 2;;
        -c*) ARG_COPY="${1:2}"; shift 1;;
        --copy=*) ARG_COPY="${1#*=}"; shift 1;;

        -n) ARG_NAME="$2"; shift 2;;
        -n*) ARG_NAME="${1:2}"; shift 1;;
        --name=*) ARG_NAME="${1#*=}"; shift 1;;

        -p) ARG_PRIVATE=true; shift 1;;
        --private) ARG_PRIVATE=true; shift 1;;

        -h) ARG_HELP=true; shift 1;;
        --help) ARG_HELP=true; shift 1;;

        -*) echo "unkown option $1"; exit 1;;
        *) ARG_FILE="$1"; shift 1;;
    esac
done

function print_usage() {
    echo "Usage: upload [OPTION]... [FILE]

Options:
  -l, --list          list uploaded files
  -c, --copy=NUM      copy url for uploaded file
  -n, --name=NAME     use NAME as filename
  -p, --private       upload a private file
  -h, --help          display this help

You need to set the UPLOAD_KEY environment variable."
}

if [ "$ARG_HELP" = true ]; then
    print_usage;
    exit 0;
fi

if [ "$ARG_LIST" = true ]; then
    cat $HOME/.uploads | nl -w2 -s'| '
    exit 0;
fi

if [ -n "$ARG_COPY" ]; then
    URL="$(head -$ARG_COPY $HOME/.uploads | tail -1 | awk '{ print $3 }')"
    echo $URL | xsel -pi
    echo $URL | xsel -bi
    exit 0;
fi

if [ -z "$ARG_FILE" ]; then
    print_usage;
    exit 1;
fi;

if [ -n "$ARG_PRIVATE" ]; then
    PRIVATE_FLAG='-F is_private=ok';
fi;

echo "uploading to upload.mephory.com..."
if [ -n "$ARG_NAME" ]; then
    URL="$(curl \
        --fail -# \
        $PRIVATE_FLAG \
        -F "key=$UPLOAD_KEY" \
        -F "file=@\"$ARG_FILE\";filename=\"$ARG_NAME\"" \
        "http://upload.mephory.com/")" || exit
else
    URL="$(curl \
        --fail -# \
        $PRIVATE_FLAG \
        -F "key=$UPLOAD_KEY" \
        -F "file=@\"$ARG_FILE\"" \
        "http://upload.mephory.com/")" || exit
fi

echo "$ARG_FILE    ->    $URL" >> $HOME/.uploads
echo $URL
echo $URL | xsel -pi
echo $URL | xsel -bi
exit 0;
