#!/bin/bash
set -ex

cd $(dirname $0)/..
source ./scripts/version
export REPO_VERSION=$VERSION
export COMPRESS="xz --format=lzma -9 --memlimit-compress=80% -e"

./scripts/ci

# from scripts/ci
echo PREPARE
./scripts/prepare
echo PACKAGE
./scripts/package

if [[ "$INTEGRATION_TESTS" != "" ]]; then
    if [[ "$ARCH" == "" || "$ARCH" == "amd64" ]]; then
        export INTEGRATION_TESTS=1
    else
        export INTEGRATION_TESTS=0
    fi
fi
if [[ "$INTEGRATION_TESTS" != "1" ]]; then
    echo INTEGRATION-TEST
    ./scripts/integration-test
else
    echo "Skipping integration tests"
fi

#if [[ "$ARCH" == "" || "$ARCH" == "amd64" ]]; then
## make generated changelog
#lastrelease=$(hub release | grep -v rc | head -n1 | tr -d ' \r\n')
#git log --format="%s: %b" ${lastrelease}..${VERSION}  | grep "Merge pull" | sed 's/.*\(#.*\) from .*:\(.*\)/* \1: \2/g' > dist/artifacts/changelog.txt
#fi

CHECKSUM="dist/checksums.txt"
rm -f $CHECKSUM

cat scripts/hosting/rancheros.ipxe | sed "s/latest/${VERSION}/g" > dist/artifacts/rancheros.ipxe

echo "github-release release --user rancher --repo os --tag ${VERSION} --pre-release --draft" > dist/publish.sh
chmod 755 dist/publish.sh

touch dist/publish_gss_${VERSION}.sh dist/publish_gss_latest.sh
chmod 755 dist/publish_gss_${VERSION}.sh dist/publish_gss_latest.sh

for file in $(ls dist/artifacts/); do
    case $file in
        *"installer.tar" | "Dockerfile"*)
            ;;
        "initrd-"*)
            echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file ./dist/artifacts/${file} --name initrd" >> dist/publish.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/latest/initrd" >> ./dist/publish_gss_latest.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/${VERSION}/initrd" >> ./dist/publish_gss_${VERSION}.sh
            ;;
        "vmlinuz-"*)
            echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file ./dist/artifacts/${file} --name vmlinuz" >> dist/publish.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/latest/vmlinuz" >> ./dist/publish_gss_latest.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/${VERSION}/vmlinuz" >> ./dist/publish_gss_${VERSION}.sh
            ;;
        *)
            echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file ./dist/artifacts/${file} --name ${file}" >> dist/publish.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/latest/${file}" >> ./dist/publish_gss_latest.sh
            echo "gsutil cp dist/artifacts/${file} gs://releases.rancher.com/os/${VERSION}/${file}" >> ./dist/publish_gss_${VERSION}.sh
            ;;
    esac

    #checksums
    pushd .
    cd dist/artifacts
    for algo in sha256 md5; do
        echo "$algo: $(${algo}sum $file)" >> ../../$CHECKSUM
    done
    popd
done
echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file dist/release.log --name release.log" >> dist/publish.sh

for extra_file in rancheros-openstack.img rancheros-digitalocean.img; do
    echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file ./dist/artifacts/${extra_file} --name ${extra_file}" >> dist/publish.sh
    echo "gsutil cp dist/artifacts/${extra_file} gs://releases.rancher.com/os/latest/${extra_file}" >> ./dist/publish_gss_latest.sh
    echo "gsutil cp dist/artifacts/${extra_file} gs://releases.rancher.com/os/${VERSION}/${extra_file}" >> ./dist/publish_gss_${VERSION}.sh
done

# openstack image is made later atm
#pushd .
#cd dist
#for algo in sha256 md5; do
#    echo "$algo: $(${algo}sum rancheros-openstack.img)" >> ../../$CHECKSUM
#done
#popd

echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file ${CHECKSUM} --name checksums.txt" >> dist/publish.sh
#echo "github-release upload  --user rancher --repo os --tag ${VERSION} --file dist/artifacts/changelog.txt --name changelog.txt" >> dist/publish.sh

echo >> dist/publish.sh

cat dist/images | sed 's/^/docker push /' >> dist/publish.sh

echo "--- Run dist/publish.sh"
cat dist/publish.sh

echo "--- Run dist/publish_gss.sh"
cat dist/publish_gss_latest.sh
cat dist/publish_gss_${VERSION}.sh
