49 lines
1.3 KiB
Bash
Executable File
49 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
PYTHON_BIN="$ROOT_DIR/.venv/bin/python"
|
|
APP_NAME="ManeshTrader"
|
|
|
|
if [[ ! -x "$PYTHON_BIN" ]]; then
|
|
echo "Missing virtual environment. Run ./run.sh --setup-only first." >&2
|
|
exit 1
|
|
fi
|
|
|
|
"$PYTHON_BIN" -m pip install -q pyinstaller
|
|
|
|
TS="$(date +%Y%m%d-%H%M%S)"
|
|
OUT_ROOT="$ROOT_DIR/dist-standalone/$TS"
|
|
DIST_PATH="$OUT_ROOT/dist"
|
|
WORK_PATH="$OUT_ROOT/build"
|
|
SPEC_PATH="$OUT_ROOT/spec"
|
|
|
|
mkdir -p "$DIST_PATH" "$WORK_PATH" "$SPEC_PATH"
|
|
|
|
"$PYTHON_BIN" -m PyInstaller \
|
|
--noconfirm \
|
|
--windowed \
|
|
--name "$APP_NAME" \
|
|
--distpath "$DIST_PATH" \
|
|
--workpath "$WORK_PATH" \
|
|
--specpath "$SPEC_PATH" \
|
|
--add-data "$ROOT_DIR/app.py:." \
|
|
--add-data "$ROOT_DIR/manesh_trader:manesh_trader" \
|
|
--add-data "$ROOT_DIR/ONBOARDING.md:." \
|
|
--collect-all streamlit \
|
|
--collect-all streamlit_autorefresh \
|
|
--hidden-import yfinance \
|
|
--hidden-import pandas \
|
|
--collect-all plotly \
|
|
"$ROOT_DIR/desktop_launcher.py"
|
|
|
|
APP_BUNDLE="$DIST_PATH/${APP_NAME}.app"
|
|
if [[ ! -d "$APP_BUNDLE" ]]; then
|
|
echo "Build failed: ${APP_BUNDLE} not found" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Standalone app created: $APP_BUNDLE"
|
|
echo "To build DMG from this app:"
|
|
echo "APP_BUNDLE_PATH=\"$APP_BUNDLE\" ./scripts/create_installer_dmg.sh"
|