Skip to content
Snippets Groups Projects
build-binary-for-linux-64.sh 1.42 KiB
#!/bin/bash
#
# for windows and Mac check the README
#
BIN_NAME=acme-downloader
PATH=$PATH:$(go env GOPATH)/bin
GOPATH=$(go env GOPATH)
PROG_VERSION="1.0"
BUILDTIME=$(date -u '+%Y-%m-%d_%H:%M:%S')
export BIN_NAME PATH GOPATH PROG_VERSION BUILDTIME

REPO_DIR=$(dirname $0)
if [ "$REPO_DIR" = '.' ]; then
    REPO_DIR=$(pwd)
fi
ln -sf "$REPO_DIR" "${GOPATH}/src/"
REPO_NAME=$(basename "$REPO_DIR")
cd "${GOPATH}/src/$REPO_NAME"

#LATEST_TAG=$(git describe --tags $(git rev-list --tags --max-count=1))
#PROG_VERSION=$(echo $LATEST_TAG | sed -e 's/^v//')

run_upx() {
    if ! which upx &>/dev/null; then
        echo "please download upx here https://github.com/upx/upx/releases"
        echo "and store the executable within your \$PATH"
        exit
    fi
    upx --brute ${GOPATH}/bin/${BIN_NAME}
}

go get -ldflags "-s -w -X main.appVersion=${PROG_VERSION} -X main.buildTime=${BUILDTIME}" .
if [ $? -gt 0 ]; then
    echo -e "\nthere was an error while compiling the code\n"
    exit
fi
echo ""

while true; do
    echo -e "\nUPX degrades performances but in the case of acme-downloader it is not noticeable\n"
    read -p "Do you wish to run upx against ${BIN_NAME}? (y/n) " yn
    case $yn in
    [Yy]*)
        echo ""
        run_upx
        break
        ;;
    [Nn]*) break ;;
    *)
        echo "Please answer Y|y or N|n."
        ;;
    esac
done

echo -e "\nthe binary was compiled and it is avilable as:\n - ${GOPATH}/bin/${BIN_NAME}\n"