#!/bin/bash

set -e
set -o pipefail

: "${PRODUCT:=}"

fatal() {
    echo "$@" >&2
    exit 1
}

if [ ! -d .git ]; then
    fatal "Current directory is not a git clone"
fi

if [ -z "${PRODUCT}" ]; then
    fatal "Must specify PRODUCT"
fi

if ! BRANCH=$(git symbolic-ref --short HEAD) || [ -z "$BRANCH" ]; then
    fatal "Could not determine branch"
fi

case "$BRANCH" in
    issues/*)
        VERSION="${BRANCH#issues/}"
        TAGS="$VERSION"
        ;;
    *)
        if echo "$BRANCH" | grep -qE '^[0-9]+\.[0-9]+'; then
            DESCRIBE=$(git describe --match 'v*')
            if ! VERSION=$(echo "$DESCRIBE" | grep -oP '(?<=^v)[0-9]+\.[0-9]+\.[0-9]+'); then
                fatal "Could not infer latest $BRANCH version from $DESCRIBE"
            fi
            TAGS="$VERSION latest"
        else
            VERSION="$BRANCH"
            TAGS="$VERSION"
        fi
        ;;
esac

for TAG in $TAGS; do
    echo ">>> Publishing $PRODUCT $VERSION to $1/docs/$PRODUCT/$TAG"
    wordepress \
        --url "$1" --user "$2" --password "$3" \
        --product "$PRODUCT" --version "$VERSION" --tag "$TAG" \
        publish site
done
