#!/bin/bash set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" # Find Sage root SAGE_ROOT="" for candidate in "$SCRIPT_DIR/../.." "$HOME/repos/sage" "$HOME/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 directory" exit 1 fi echo "Sage root: $SAGE_ROOT" MODULE_NAME="reallife_asset" MODULE_WWWROOT="$SAGE_ROOT/wwwroot/$MODULE_NAME" # Install module cd "$SCRIPT_DIR" "$SAGE_ROOT/py3/bin/pip" install . # Create wwwroot directory if not exists mkdir -p "$MODULE_WWWROOT/api" # Link UI files for f in "$SCRIPT_DIR/wwwroot"/*.ui; do [ -f "$f" ] || continue ln -sf "$f" "$MODULE_WWWROOT/" done # Link API dspy files for f in "$SCRIPT_DIR/wwwroot/api"/*.dspy; do [ -f "$f" ] || continue ln -sf "$f" "$MODULE_WWWROOT/api/" done # Generate DDL if [ -d "$SCRIPT_DIR/models" ]; then cd "$SCRIPT_DIR/models" "$SAGE_ROOT/py3/bin/json2ddl" mysql . > "$SCRIPT_DIR/mysql.ddl.sql" 2>/dev/null || true echo "DDL generated: $SCRIPT_DIR/mysql.ddl.sql" fi # Generate CRUD UI (if json/ has files) if [ -d "$SCRIPT_DIR/json" ] && ls "$SCRIPT_DIR/json"/*.json >/dev/null 2>&1; then cd "$SCRIPT_DIR/json" "$SAGE_ROOT/py3/bin/xls2ui" -m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" "$MODULE_NAME" *.json 2>/dev/null || true # Link generated CRUD directories for d in "$SCRIPT_DIR/wwwroot"/*/; do [ -d "$d" ] || continue dname=$(basename "$d") case "$dname" in api|styles|scripts) continue ;; esac ln -sf "$d" "$MODULE_WWWROOT/$dname" done fi echo "Build complete: $MODULE_NAME"