Files
cline/scripts/build-cli-all-platforms.sh
T

67 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
set -eu
npm run protos
npm run protos-go
mkdir -p dist-standalone/extension
cp package.json dist-standalone/extension
# Extract version information for ldflags
CORE_VERSION=$(node -p "require('./package.json').version")
CLI_VERSION=$(node -p "require('./cli/package.json').version")
COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
DATE=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
BUILT_BY="${USER:-unknown}"
# Build ldflags to inject version info
LDFLAGS="-X 'github.com/cline/cli/pkg/cli/global.Version=${CORE_VERSION}' \
-X 'github.com/cline/cli/pkg/cli/global.CliVersion=${CLI_VERSION}' \
-X 'github.com/cline/cli/pkg/cli/global.Commit=${COMMIT}' \
-X 'github.com/cline/cli/pkg/cli/global.Date=${DATE}' \
-X 'github.com/cline/cli/pkg/cli/global.BuiltBy=${BUILT_BY}'"
cd cli
# Define target platforms for cross-compilation
PLATFORMS=(
"darwin/arm64"
"darwin/amd64"
"linux/amd64"
"linux/arm64"
)
# Build binaries for all platforms
for platform in "${PLATFORMS[@]}"; do
GOOS=${platform%/*}
GOARCH=${platform#*/}
echo "Building for $GOOS/$GOARCH..."
# Build cline binary
OUTPUT_NAME="bin/cline-${GOOS}-${GOARCH}"
if [ "$GOOS" = "windows" ]; then
OUTPUT_NAME="${OUTPUT_NAME}.exe"
fi
GO111MODULE=on GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "$LDFLAGS" -o "$OUTPUT_NAME" ./cmd/cline
echo " ✓ $OUTPUT_NAME built"
# Build cline-host binary
OUTPUT_NAME="bin/cline-host-${GOOS}-${GOARCH}"
if [ "$GOOS" = "windows" ]; then
OUTPUT_NAME="${OUTPUT_NAME}.exe"
fi
GO111MODULE=on GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "$LDFLAGS" -o "$OUTPUT_NAME" ./cmd/cline-host
echo " ✓ $OUTPUT_NAME built"
done
echo ""
echo "All platform binaries built successfully!"
# Copy binaries to dist-standalone/bin
cd ..
mkdir -p dist-standalone/bin
cp cli/bin/cline-* dist-standalone/bin/
echo 'Copied all platform binaries to dist-standalone/bin/'