#!/bin/bash # scense 模块构建脚本:由宿主应用 build.sh 调用或独立执行 set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 定位 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: Cannot find Sage root" exit 1 fi # 1) 安装模块包 if [ -d "$SAGE_ROOT/py3/bin/pip" ]; then "$SAGE_ROOT/py3/bin/pip" install -e . || true fi # 2) 生成 DDL(models/*.json -> mysql.ddl.sql) if [ -d models ]; then (cd "$SAGE_ROOT" && ./py3/bin/python -m xls2ddl.json2ddl mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/mysql.ddl.sql" 2>/dev/null) || true fi # 3) 生成 CRUD UI(json/*.json -> wwwroot/{alias}/) if [ -d json ]; then (cd "$SAGE_ROOT" && ./py3/bin/python -m xls2ui -m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" scense "$SCRIPT_DIR"/json/*.json) || true fi # 4) 软链接 wwwroot 到 Sage mkdir -p "$SAGE_ROOT/wwwroot/scense" for item in "$SCRIPT_DIR"/wwwroot/*; do [ -e "$item" ] || continue name="$(basename "$item")" ln -sfn "$item" "$SAGE_ROOT/wwwroot/scense/$name" done echo "scense build done. SAGE_ROOT=$SAGE_ROOT"