#!/bin/bash
set -e

source $(dirname $0)/version

OS_ARCH_ARG_LINUX="amd64 arm arm64"
OS_ARCH_ARG_DARWIN="amd64 arm64"
OS_ARCH_ARG_WINDOWS="amd64"

LD_INJECT_VALUES="-X github.com/rancher/steve/pkg/version.Version=$VERSION
                  -X github.com/rancher/steve/pkg/version.GitCommit=$COMMIT"

[ "$(uname)" != "Darwin" ] && LINKFLAGS="-extldflags -static -s"

pushd $GIT_SOURCE

case "$CROSS" in 
    "push")
        for ARCH in ${OS_ARCH_ARG_LINUX}; do
            OUTPUT_BIN="bin/kube-explorer-linux-$ARCH"
            echo "Building binary for linux/$ARCH..."
            GOARCH=$ARCH GOOS=linux CGO_ENABLED=0 go build -tags embed \
                    -ldflags \
                    "$LD_INJECT_VALUES $LINKFLAGS" \
                    -o ${OUTPUT_BIN}
        done
        ;;
    "tag")
        for ARCH in ${OS_ARCH_ARG_LINUX}; do
            OUTPUT_BIN="bin/kube-explorer-linux-$ARCH"
            echo "Building binary for linux/$ARCH..."
            GOARCH=$ARCH GOOS=linux CGO_ENABLED=0 go build -tags embed \
                    -ldflags \
                    "$LD_INJECT_VALUES $LINKFLAGS" \
                    -o ${OUTPUT_BIN}
        done

        for ARCH in ${OS_ARCH_ARG_DARWIN}; do
            OUTPUT_BIN="bin/kube-explorer-darwin-$ARCH"
            echo "Building binary for darwin/$ARCH..."
            GOARCH=$ARCH GOOS=darwin CGO_ENABLED=0 go build -tags embed \
                    -ldflags \
                    "$LD_INJECT_VALUES" \
                    -o ${OUTPUT_BIN}
        done

        for ARCH in ${OS_ARCH_ARG_WINDOWS}; do
            OUTPUT_BIN="bin/kube-explorer-windows-$ARCH.exe"
            echo "Building binary for windows/$ARCH..."
            GOARCH=$ARCH GOOS=windows CGO_ENABLED=0 go build -tags embed \
                    -ldflags \
                    "$LD_INJECT_VALUES" \
                    -o ${OUTPUT_BIN}
        done
        ;;
    *)
        # only build one for current platform
        CGO_ENABLED=0 go build -tags embed \
            -ldflags \
            "$LD_INJECT_VALUES $LINKFLAGS" \
            -o "bin/kube-explorer-$(uname | tr '[:upper:]' '[:lower:]')-${ARCH}"
        ;;
esac

mkdir -p $DAPPER_SOURCE/bin

for f in $(ls ./bin/); do
    if [[ $f != *darwin* ]]; then
        upx -o $DAPPER_SOURCE/bin/$f bin/$f || true
    fi
    if [ -f $DAPPER_SOURCE/bin/$f ]; then
        echo "UPX done!"
    else
        echo "Copy origin file as UPX failed!!!"
        cp bin/$f $DAPPER_SOURCE/bin/$f
    fi
done

popd
