build-cli-all-platforms.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #!/bin/bash
  2. set -eu
  3. npm run protos
  4. npm run protos-go
  5. mkdir -p dist-standalone/extension
  6. cp package.json dist-standalone/extension
  7. # Extract version information for ldflags
  8. CORE_VERSION=$(node -p "require('./package.json').version")
  9. CLI_VERSION=$(node -p "require('./cli/package.json').version")
  10. COMMIT=$(git rev-parse --short HEAD 2>/dev/null || echo "unknown")
  11. DATE=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
  12. BUILT_BY="${USER:-unknown}"
  13. # Build ldflags to inject version info
  14. LDFLAGS="-X 'github.com/cline/cli/pkg/cli/global.Version=${CORE_VERSION}' \
  15. -X 'github.com/cline/cli/pkg/cli/global.CliVersion=${CLI_VERSION}' \
  16. -X 'github.com/cline/cli/pkg/cli/global.Commit=${COMMIT}' \
  17. -X 'github.com/cline/cli/pkg/cli/global.Date=${DATE}' \
  18. -X 'github.com/cline/cli/pkg/cli/global.BuiltBy=${BUILT_BY}'"
  19. cd cli
  20. # Define target platforms for cross-compilation
  21. PLATFORMS=(
  22. "darwin/arm64"
  23. "darwin/amd64"
  24. "linux/amd64"
  25. "linux/arm64"
  26. )
  27. # Build binaries for all platforms
  28. for platform in "${PLATFORMS[@]}"; do
  29. GOOS=${platform%/*}
  30. GOARCH=${platform#*/}
  31. echo "Building for $GOOS/$GOARCH..."
  32. # Build cline binary
  33. OUTPUT_NAME="bin/cline-${GOOS}-${GOARCH}"
  34. if [ "$GOOS" = "windows" ]; then
  35. OUTPUT_NAME="${OUTPUT_NAME}.exe"
  36. fi
  37. GO111MODULE=on GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "$LDFLAGS" -o "$OUTPUT_NAME" ./cmd/cline
  38. echo " ✓ $OUTPUT_NAME built"
  39. # Build cline-host binary
  40. OUTPUT_NAME="bin/cline-host-${GOOS}-${GOARCH}"
  41. if [ "$GOOS" = "windows" ]; then
  42. OUTPUT_NAME="${OUTPUT_NAME}.exe"
  43. fi
  44. GO111MODULE=on GOOS=$GOOS GOARCH=$GOARCH go build -ldflags "$LDFLAGS" -o "$OUTPUT_NAME" ./cmd/cline-host
  45. echo " ✓ $OUTPUT_NAME built"
  46. done
  47. echo ""
  48. echo "All platform binaries built successfully!"
  49. # Copy binaries to dist-standalone/bin
  50. cd ..
  51. mkdir -p dist-standalone/bin
  52. cp cli/bin/cline-* dist-standalone/bin/
  53. echo 'Copied all platform binaries to dist-standalone/bin/'