picoclaw/scripts/build-without-make.sh
2026-05-06 15:07:28 +03:00

52 lines
1.4 KiB
Bash

#!/usr/bin/env bash
# Build PicoClaw core and web launcher without using make.
# Usage: ./scripts/build-without-make.sh
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." >/dev/null 2>&1 && pwd)"
cd "${REPO_ROOT}"
GO_TAGS="goolm,stdjson"
EXE_EXT=""
UNAME_S="$(uname -s 2>/dev/null || echo unknown)"
case "${UNAME_S}" in
*MINGW*|*MSYS*|*CYGWIN*|*Windows_NT*)
EXE_EXT=".exe"
;;
esac
command -v go >/dev/null 2>&1 || {
echo "ERROR: go is not installed or not on PATH."
exit 1
}
command -v pnpm >/dev/null 2>&1 || {
echo "ERROR: pnpm is not installed or not on PATH."
exit 1
}
mkdir -p "${REPO_ROOT}/build"
echo "=== Generating Go code ==="
go generate ./...
echo ""
echo "=== Building PicoClaw core binary ==="
go build -tags "${GO_TAGS}" -o "${REPO_ROOT}/build/picoclaw${EXE_EXT}" ./cmd/picoclaw
echo ""
echo "=== Building PicoClaw web frontend assets ==="
cd "${REPO_ROOT}/web/frontend"
pnpm install --frozen-lockfile
pnpm build:backend
echo ""
echo "=== Building PicoClaw web launcher ==="
cd "${REPO_ROOT}"
go build -tags "${GO_TAGS}" -o "${REPO_ROOT}/build/picoclaw-launcher${EXE_EXT}" ./web/backend
echo ""
echo "=== Build complete ==="
echo "Core binary: ${REPO_ROOT}/build/picoclaw${EXE_EXT}"
echo "Web launcher: ${REPO_ROOT}/build/picoclaw-launcher${EXE_EXT}"