#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" MODULE_NAME="dashboard_for_sage" # Try to find Sage root for candidate in "$SCRIPT_DIR/../.." "$SCRIPT_DIR/../../../sage" "$HOME/repos/sage"; do if [ -d "$candidate/wwwroot" ] && [ -d "$candidate/py3/bin" ]; then SAGE_ROOT="$(cd "$candidate" && pwd)" break fi done if [ -z "$SAGE_ROOT" ]; then echo "ERROR: Cannot find Sage root. Run this script from within a Sage environment." exit 1 fi VENV_PIP="$SAGE_ROOT/py3/bin/pip" WWWROOT="$SAGE_ROOT/wwwroot" echo "=== Building $MODULE_NAME ===" echo "Sage root: $SAGE_ROOT" # Install the module cd "$SCRIPT_DIR" $VENV_PIP install -e . # Link wwwroot files to Sage wwwroot MODULE_WWWROOT="$SCRIPT_DIR/wwwroot" SAGE_MODULE_WWWROOT="$WWWROOT/$MODULE_NAME" echo "Linking wwwroot..." mkdir -p "$SAGE_MODULE_WWWROOT/api" # Link all .ui, .js, and .css files (must be at wwwroot root per bricks convention) for f in "$MODULE_WWWROOT"/*.ui "$MODULE_WWWROOT"/*.js "$MODULE_WWWROOT"/*.css; do [ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/" done # Link api/ directory for f in "$MODULE_WWWROOT/api"/*.dspy; do [ -f "$f" ] && ln -sf "$f" "$SAGE_MODULE_WWWROOT/api/" done echo "=== $MODULE_NAME build complete ===" echo "" echo "Next steps:" echo "1. Add permissions to load_path.py (already done in Sage repo)" echo "2. Run: cd \$SAGE_ROOT && ./py3/bin/python load_path.py" echo "3. Restart Sage: ./stop.sh && ./start.sh"