a3b046c68f
Major changes: - Migrate Python/shell scripts to Rust modules: - analytics/extract.py → src/analytics/extract.rs (ReportExtractor) - analytics/analyze.py → src/analytics/analyze.rs (DealAnalyzer) - scripts/mqlcompile.sh → src/compile/mql_compiler.rs (MqlCompiler) - scripts/backtest_pipeline.sh → src/pipeline/backtest.rs (BacktestPipeline) - New modular structure: - src/models/ - Config, Deal, Metrics, Report structs - src/analytics/ - Report parsing and deal analysis - src/compile/ - MQL5 compilation via Wine - src/pipeline/ - 5-stage backtest orchestration - src/tools/ - 27 MCP tool definitions and handlers - Remove PyInstaller setup (now pure Rust) - Remove migrated shell scripts (backtest_pipeline.sh, mqlcompile.sh) - Add GitHub Actions CI/CD for macOS & Linux releases - Update all documentation for Rust architecture Binary size: 4.3MB (no Python dependencies) Tools: 27 MCP tools fully functional
71 lines
1.7 KiB
Bash
Executable File
71 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# Build release binaries for distribution
|
|
# Creates: dist/mt5-quant-{platform}.tar.gz
|
|
|
|
set -e
|
|
|
|
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/')
|
|
echo "=== Building MT5-Quant v${VERSION} ==="
|
|
echo ""
|
|
|
|
# Clean previous builds
|
|
rm -rf "$PROJECT_ROOT/dist"
|
|
mkdir -p "$PROJECT_ROOT/dist"
|
|
|
|
# Build current platform
|
|
echo "Building for current platform..."
|
|
cargo build --release
|
|
|
|
# Detect platform
|
|
UNAME=$(uname -s)
|
|
ARCH=$(uname -m)
|
|
|
|
if [[ "$UNAME" == "Darwin" ]]; then
|
|
PLATFORM="macos-${ARCH}"
|
|
elif [[ "$UNAME" == "Linux" ]]; then
|
|
PLATFORM="linux-${ARCH}"
|
|
else
|
|
PLATFORM="unknown"
|
|
fi
|
|
|
|
PACKAGE_NAME="mt5-quant-${PLATFORM}"
|
|
PACKAGE_DIR="$PROJECT_ROOT/dist/${PACKAGE_NAME}"
|
|
|
|
echo "Packaging for ${PLATFORM}..."
|
|
mkdir -p "$PACKAGE_DIR"
|
|
|
|
# Copy binary
|
|
cp "$PROJECT_ROOT/target/release/mt5-quant" "$PACKAGE_DIR/"
|
|
|
|
# Copy config template
|
|
mkdir -p "$PACKAGE_DIR/config"
|
|
cp "$PROJECT_ROOT/config/mt5-quant.example.yaml" "$PACKAGE_DIR/config/"
|
|
|
|
# Copy docs
|
|
cp "$PROJECT_ROOT/README.md" "$PACKAGE_DIR/"
|
|
cp "$PROJECT_ROOT/WINDSURF_SETUP.md" "$PACKAGE_DIR/"
|
|
cp "$PROJECT_ROOT/CLAUDE.md" "$PACKAGE_DIR/"
|
|
|
|
# Create tarball
|
|
cd "$PROJECT_ROOT/dist"
|
|
tar -czf "${PACKAGE_NAME}.tar.gz" "$PACKAGE_NAME"
|
|
|
|
echo ""
|
|
echo "=== Build Complete ==="
|
|
echo ""
|
|
echo "Package: dist/${PACKAGE_NAME}.tar.gz"
|
|
echo "Size: $(du -h "${PACKAGE_NAME}.tar.gz" | cut -f1)"
|
|
echo ""
|
|
echo "Contents:"
|
|
tar -tzf "${PACKAGE_NAME}.tar.gz" | head -10
|
|
echo ""
|
|
echo "To install:"
|
|
echo " tar -xzf ${PACKAGE_NAME}.tar.gz"
|
|
echo " cd ${PACKAGE_NAME}"
|
|
echo " ./mt5-quant --help"
|