2026-04-22 07:23:49 +07:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
# Build release binary and package it for distribution
|
|
|
|
|
# Creates: dist/mcp-mt5-quant-{platform}.tar.gz
|
|
|
|
|
#
|
|
|
|
|
# Usage:
|
|
|
|
|
# bash scripts/build-release.sh
|
2026-04-18 15:07:08 +07:00
|
|
|
|
2026-04-22 07:23:49 +07:00
|
|
|
set -euo pipefail
|
2026-04-18 15:07:08 +07:00
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
|
PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
|
|
|
|
|
|
|
|
|
cd "$PROJECT_ROOT"
|
|
|
|
|
|
|
|
|
|
VERSION=$(grep -E '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
|
2026-04-22 07:23:49 +07:00
|
|
|
echo "=== Building mt5-quant v${VERSION} ==="
|
2026-04-18 15:07:08 +07:00
|
|
|
echo ""
|
|
|
|
|
|
|
|
|
|
# Clean previous builds
|
|
|
|
|
rm -rf "$PROJECT_ROOT/dist"
|
|
|
|
|
mkdir -p "$PROJECT_ROOT/dist"
|
|
|
|
|
|
2026-04-22 07:23:49 +07:00
|
|
|
# Build release binary
|
|
|
|
|
echo "Building release binary..."
|
2026-04-19 06:11:43 +07:00
|
|
|
RUSTFLAGS="-D warnings" cargo build --release
|
2026-04-22 07:23:49 +07:00
|
|
|
echo ""
|
2026-04-18 15:07:08 +07:00
|
|
|
|
|
|
|
|
# Detect platform
|
|
|
|
|
UNAME=$(uname -s)
|
|
|
|
|
ARCH=$(uname -m)
|
|
|
|
|
|
|
|
|
|
if [[ "$UNAME" == "Darwin" ]]; then
|
|
|
|
|
PLATFORM="macos-${ARCH}"
|
|
|
|
|
elif [[ "$UNAME" == "Linux" ]]; then
|
|
|
|
|
PLATFORM="linux-${ARCH}"
|
|
|
|
|
else
|
2026-04-22 07:23:49 +07:00
|
|
|
PLATFORM="unknown-${ARCH}"
|
2026-04-18 15:07:08 +07:00
|
|
|
fi
|
|
|
|
|
|
2026-04-19 06:11:43 +07:00
|
|
|
PACKAGE_NAME="mcp-mt5-quant-${PLATFORM}"
|
2026-04-18 15:07:08 +07:00
|
|
|
PACKAGE_DIR="$PROJECT_ROOT/dist/${PACKAGE_NAME}"
|
|
|
|
|
|
|
|
|
|
echo "Packaging for ${PLATFORM}..."
|
2026-04-22 07:23:49 +07:00
|
|
|
mkdir -p "$PACKAGE_DIR/docs"
|
2026-04-18 15:07:08 +07:00
|
|
|
|
2026-04-22 07:23:49 +07:00
|
|
|
# Binary
|
2026-04-18 15:07:08 +07:00
|
|
|
cp "$PROJECT_ROOT/target/release/mt5-quant" "$PACKAGE_DIR/"
|
2026-04-22 07:23:49 +07:00
|
|
|
chmod +x "$PACKAGE_DIR/mt5-quant"
|
2026-04-18 15:07:08 +07:00
|
|
|
|
2026-04-22 07:23:49 +07:00
|
|
|
# Config template
|
2026-04-18 15:07:08 +07:00
|
|
|
mkdir -p "$PACKAGE_DIR/config"
|
|
|
|
|
cp "$PROJECT_ROOT/config/mt5-quant.example.yaml" "$PACKAGE_DIR/config/"
|
|
|
|
|
|
2026-04-22 07:23:49 +07:00
|
|
|
# Documentation
|
|
|
|
|
cp "$PROJECT_ROOT/README.md" "$PACKAGE_DIR/"
|
|
|
|
|
cp "$PROJECT_ROOT/docs/QUICKSTART.md" "$PACKAGE_DIR/docs/"
|
|
|
|
|
cp "$PROJECT_ROOT/docs/CLAUDE.md" "$PACKAGE_DIR/docs/"
|
|
|
|
|
cp "$PROJECT_ROOT/docs/CURSOR.md" "$PACKAGE_DIR/docs/"
|
|
|
|
|
cp "$PROJECT_ROOT/docs/VSCODE.md" "$PACKAGE_DIR/docs/"
|
|
|
|
|
cp "$PROJECT_ROOT/docs/WINDSURF.md" "$PACKAGE_DIR/docs/"
|
2026-04-18 15:07:08 +07:00
|
|
|
|
|
|
|
|
# Create tarball
|
|
|
|
|
cd "$PROJECT_ROOT/dist"
|
|
|
|
|
tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_NAME"
|
2026-04-22 07:23:49 +07:00
|
|
|
rm -rf "$PACKAGE_NAME"
|
2026-04-18 15:07:08 +07:00
|
|
|
|
|
|
|
|
echo ""
|
2026-04-22 07:23:49 +07:00
|
|
|
echo "=== Build complete ==="
|
2026-04-18 15:07:08 +07:00
|
|
|
echo ""
|
2026-04-22 07:23:49 +07:00
|
|
|
echo "Package : dist/${PACKAGE_NAME}.tar.gz"
|
|
|
|
|
echo "Size : $(du -h "${PACKAGE_NAME}.tar.gz" | cut -f1)"
|
2026-04-18 15:07:08 +07:00
|
|
|
echo ""
|
|
|
|
|
echo "Contents:"
|
2026-04-22 07:23:49 +07:00
|
|
|
tar -tzf "${PACKAGE_NAME}.tar.gz"
|
2026-04-18 15:07:08 +07:00
|
|
|
echo ""
|
2026-04-22 07:23:49 +07:00
|
|
|
echo "Install:"
|
2026-04-18 15:07:08 +07:00
|
|
|
echo " tar -xzf ${PACKAGE_NAME}.tar.gz"
|
2026-04-22 07:23:49 +07:00
|
|
|
echo " sudo cp ${PACKAGE_NAME}/mt5-quant /usr/local/bin/"
|
2026-04-19 06:11:43 +07:00
|
|
|
echo " mt5-quant --help"
|