#!/bin/bash

set -e

pushd /tmp/src

if [[ `go list -f {{.Incomplete}}` == "true" || ! -z "$IMPORT_URL" ]]; then

    INSTALL_URL=${INSTALL_URL:-$IMPORT_URL}

    if [[ ! -z "$IMPORT_URL" ]]; then

        popd

        echo "Assembling GOPATH"

        export GOPATH=`realpath $HOME/go`

        mkdir -p $GOPATH/src/$IMPORT_URL

        mv /tmp/src/* $GOPATH/src/$IMPORT_URL

        if [[ -d /tmp/artifacts/pkg || -d /tmp/artifacts/go-build ]]; then

            echo "Restoring previous build artifacts"

            mv /tmp/artifacts/pkg $GOPATH
            GOCACHE=`go env GOCACHE`
            mkdir -p $GOCACHE
            mv /tmp/artifacts/go-build $GOCACHE

        fi

        # Resolve dependencies, ignore if vendor present

        if [[ ! -d $GOPATH/src/$INSTALL_URL/vendor && `go list -f {{.Incomplete}} $INSTALL_URL` == "true" ]]; then

            echo "Resolving dependencies"

            pushd $GOPATH/src/$INSTALL_URL

            go get

            popd

        fi

        # lets build

        pushd $GOPATH/src/$INSTALL_URL

        echo "Building"

        go install $INSTALL_URL

        mv $GOPATH/bin/* /opt/app-root/gobinary

        popd

        exit

    fi

    exec /$STI_SCRIPTS_PATH/usage

else

    go build -o /opt/app-root/gobinary

    popd

fi
