#!/bin/bash # script_engine module build -- four steps: # 1. install xls2ddl # 2. models/ (json) -> mysql.ddl.sql # 3. json/ -> CRUD ui/dspy via xls2ui # 4. symlink module wwwroot into main app wwwroot set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MOD=script_engine # locate 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 echo "== [1/4] install xls2ddl ==" pip install xls2ddl >/dev/null 2>&1 || pip3 install xls2ddl >/dev/null 2>&1 || true echo "== [2/4] models -> DDL ==" cd "$SCRIPT_DIR/models" json2ddl mysql . > mysql.ddl.sql 2>/dev/null || \ "$SAGE_ROOT/py3/bin/python3" "$SAGE_ROOT/py3/bin/json2ddl" mysql . > mysql.ddl.sql echo "== [3/4] json CRUD -> wwwroot ==" cd "$SCRIPT_DIR" if [ -d json ] && ls json/*.json >/dev/null 2>&1; then PYTHONPATH="$SAGE_ROOT/py3/bin" python3 -m xls2ddl.xls2crud -m models -o wwwroot "$MOD" json/*.json || \ "$SAGE_ROOT/py3/bin/xls2ui" -m models -o wwwroot "$MOD" json/*.json || true fi echo "== [4/4] symlink module wwwroot -> sage wwwroot ==" if [ -n "$SAGE_ROOT" ]; then ln -sfn "$SCRIPT_DIR/wwwroot" "$SAGE_ROOT/wwwroot/$MOD" for d in "$SCRIPT_DIR"/wwwroot/*/; do [ -d "$d" ] || continue base="$(basename "$d")" case "$base" in api|styles|scripts) continue ;; esac ln -sfn "$d" "$SAGE_ROOT/wwwroot/$base" done echo "symlinked $MOD wwwroot into $SAGE_ROOT/wwwroot" else echo "WARN: sage root not found, skip symlink (run from a full sage checkout)" fi echo "== script_engine build done =="