#!/bin/sh set -ex BASEDIR="$(dirname "$0")" TARGET_VERSION="0.1.2" cd "$BASEDIR/.." git clean -fdx mkdir -p vendor cd vendor get_tgz () { TARGET_PLATFORM="$1" TARGET="node-v$TARGET_VERSION-$TARGET_PLATFORM-x64" ARCHIVE="$TARGET.tar.gz" URL="https://nodejs.org/dist/v$TARGET_VERSION/$ARCHIVE" TARGET_NODE="$TARGET/bin/node" wget "$URL" tar -xvf "$ARCHIVE" "$TARGET_NODE" rm -f "$ARCHIVE" } get_zip () { TARGET_PLATFORM="$1" TARGET="node-v$TARGET_VERSION-$TARGET_PLATFORM-x64" ARCHIVE="$TARGET.zip" URL="https://nodejs.org/dist/v$TARGET_VERSION/$ARCHIVE" TARGET_NODE="$TARGET/node.exe" wget "$URL" unzip "$ARCHIVE" "$TARGET_NODE" rm -f "$ARCHIVE" } get_tgz darwin get_tgz linux get_zip win cd .. # Avoid building anything from source. npm ci --only=prod --ignore-scripts --no-audit --no-fund # More trouble than it's worth :) rm -rf ./node_modules/sharp export GOARCH="amd64" # Darwin (shell script) export GOOS="darwin" OUTFILE="oasis-$GOOS-$GOARCH" go build -ldflags "-X main.node=vendor/node-v$TARGET_VERSION-darwin-x64/bin/node" -o "$OUTFILE" scripts/oasis.go chmod +x "$OUTFILE" # Linux (ELF executable) export GOOS="linux" OUTFILE="oasis-$GOOS-$GOARCH" go build -ldflags "-X main.node=vendor/node-v$TARGET_VERSION-linux-x64/bin/node" -o "$OUTFILE" scripts/oasis.go chmod +x "$OUTFILE" # Windows (batch file) export GOOS="windows" OUTFILE="oasis-$GOOS-$GOARCH.exe" go build -ldflags "-X main.node=vendor\\node-v$TARGET_VERSION-win-x64\\bin\\node" -o "$OUTFILE" scripts/oasis.go chmod +x "$OUTFILE" # I think if the zip already exists it's adding files to the existing archive? ZIP_PATH="/tmp/oasis-x64.zip" rm -f "$ZIP_PATH" zip -r "$ZIP_PATH" . -x ".git/**" git clean -fdx