53 lines
1.6 KiB
Bash
Executable File
53 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
MANIFEST_PATH="$ROOT_DIR/secrets/tsrun.manifest.json"
|
|
EXAMPLE_MANIFEST_PATH="$ROOT_DIR/secrets/tsrun.manifest.json.example"
|
|
LINUX_OUTPUT="$ROOT_DIR/tsrun-linux"
|
|
LINUX_UPX_OUTPUT="$ROOT_DIR/tsrun-linux-upx"
|
|
INSIDE_NIX_FLAG="${1:-}"
|
|
|
|
if [[ "$INSIDE_NIX_FLAG" != "--inside-nix" ]]; then
|
|
exec nix develop -c bash "$0" --inside-nix
|
|
fi
|
|
|
|
ensure_manifest() {
|
|
if [[ ! -f "$MANIFEST_PATH" ]]; then
|
|
cp "$EXAMPLE_MANIFEST_PATH" "$MANIFEST_PATH"
|
|
printf 'Created %s from the example manifest.\n' "$MANIFEST_PATH"
|
|
printf 'Fill in your OAuth credentials and user passwords, then rerun ./build-linux.sh\n'
|
|
exit 1
|
|
fi
|
|
|
|
if grep -q 'tskey-client-xxxxxxxx\|replace-me' "$MANIFEST_PATH"; then
|
|
printf 'Edit %s with your real OAuth credentials and user passwords, then rerun ./build-linux.sh\n' "$MANIFEST_PATH"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
build() {
|
|
printf 'Generating embedded credential blob...\n'
|
|
go run ./cmd/buildblob -in "$MANIFEST_PATH" -out internal/embedded/blob_gen.go
|
|
|
|
printf 'Building tsrun-linux...\n'
|
|
env GOOS=linux GOARCH=amd64 go build -trimpath -ldflags='-s -w -buildid=' -o "$LINUX_OUTPUT" ./cmd/tsrun
|
|
|
|
if command -v upx >/dev/null 2>&1; then
|
|
printf 'Building tsrun-linux-upx...\n'
|
|
cp "$LINUX_OUTPUT" "$LINUX_UPX_OUTPUT"
|
|
upx --best --lzma "$LINUX_UPX_OUTPUT"
|
|
else
|
|
printf 'Skipping UPX build because upx is not available.\n'
|
|
fi
|
|
|
|
printf 'Build complete:\n'
|
|
printf ' %s\n' "$LINUX_OUTPUT"
|
|
if [[ -f "$LINUX_UPX_OUTPUT" ]]; then
|
|
printf ' %s\n' "$LINUX_UPX_OUTPUT"
|
|
fi
|
|
}
|
|
|
|
ensure_manifest
|
|
build
|