#!/usr/bin/env bash
set -e

BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ $BRANCH =~ ^[0-9.]*-(branch|release) ]]; then
    PACKAGES=$*
    printf "\nReady to publish on hackage.haskell.org:\n\n"
    for P in $PACKAGES; do
        printf "%s %s\n" "$P" "$(grep ^version: "$P"/"$P".cabal | sed -E 's/version: +//')"
    done
    echo
    read -rp "Ok ? Press enter to confirm, ctrl-c to abort: "
    # last chance check (would cabal upload )
    for P in $PACKAGES; do
        (cd "$P"; cabal check)
    done
    for P in $PACKAGES; do 
        stack upload "$P"
    done
else
    printf "%s: in $BRANCH branch, please upload from the latest release branch.\n" "$(basename "$0")"
    printf "Perhaps: git switch %s\n" $(git branch | grep -E '[0-9.]+-(branch|release)' | tail -1)
fi
