#!/usr/bin/env bash # world 模块构建脚本:生成 DDL、生成 CRUD UI、链接 wwwroot 到宿主应用 set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" MOD=world # 定位宿主 Sage 根目录 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: sage root not found" >&2 exit 1 fi PY="$SAGE_ROOT/py3/bin" echo "==> 1/4 生成 DDL" if [ -d "$SCRIPT_DIR/models" ]; then "$PY/python3" "$PY/json2ddl" mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/models/mysql.ddl.sql" 2>/dev/null \ || "$PY/json2ddl" mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/models/mysql.ddl.sql" fi echo "==> 2/4 生成 CRUD UI(xls2ui)" if [ -d "$SCRIPT_DIR/json" ]; then (cd "$SCRIPT_DIR" && "$PY/python3" "$PY/xls2ui" -m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" "$MOD" json/*.json) \ || (cd "$SCRIPT_DIR" && "$PY/xls2ui" -m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" "$MOD" json/*.json) fi echo "==> 3/4 链接 wwwroot 到宿主应用" mkdir -p "$SAGE_ROOT/wwwroot/$MOD" ln -sfn "$SCRIPT_DIR/wwwroot" "$SAGE_ROOT/wwwroot/$MOD" echo "==> 4/4 完成:world 模块构建成功"