#!/bin/bash
set -e

source "$(dirname $0)/version"
cd "$(dirname $0)/.."

rm -rf ./bin/* ./dist/*

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

LD_INJECT_VALUES="-X github.com/cnrancher/kube-explorer/internal/version.Version=$VERSION
                  -X github.com/cnrancher/kube-explorer/internal/version.GitCommit=$COMMIT"

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

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 "./bin"
mkdir -p "./dist"

for f in ./bin/*; do
    filename=$(basename "$f")
    if [[ $filename != *darwin* && -z "$SKIP_COMPRESS" ]]; then
        if upx -o "./dist/$filename" "$f"; then
            echo "UPX done for $filename!"
        else
            echo "UPX failed for $filename, copying original file."
            cp "$f" "./dist/$filename"
        fi
    else
        cp "$f" "./dist/$filename"
    fi
done
