#!/bin/bash # CMS项目构建脚本 # 构建 entcms + dingdingflow 模块并集成到Sage系统 set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" echo "=== CMS项目构建 ===" echo "Script dir: $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: 找不到Sage根目录" exit 1 fi echo "Sage root: $SAGE_ROOT" PY="$SAGE_ROOT/py3/bin/python" PIP="$SAGE_ROOT/py3/bin/pip" # 安装模块 for mod in entcms dingdingflow; do echo "" echo "=== 安装 $mod ===" cd "$SCRIPT_DIR/$mod" $PIP install -e . # 生成DDL if [ -d "models" ] && [ "$(ls models/*.json 2>/dev/null)" ]; then echo "生成DDL..." cd models $PY -c "from sqlor.ddl_template_mysql import DDLTemplate; print(DDLTemplate().generate('.'))" > ../mysql.ddl.sql 2>/dev/null || json2ddl mysql . > ../mysql.ddl.sql 2>/dev/null || echo "DDL generation skipped (json2ddl not available)" cd .. fi # 生成CRUD UI if [ -d "json" ] && [ "$(ls json/*.json 2>/dev/null)" ]; then echo "生成CRUD UI..." cd json xls2ui -m ../models -o ../wwwroot $mod *.json 2>/dev/null || echo "CRUD UI generation skipped (xls2ui not available)" cd .. fi # 链接wwwroot到Sage MODULE_WWWROOT="$SAGE_ROOT/wwwroot/$mod" mkdir -p "$MODULE_WWWROOT/api" # 链接UI/CSS/JS文件 for f in "$SCRIPT_DIR/$mod/wwwroot"/*.ui "$SCRIPT_DIR/$mod/wwwroot"/*.css "$SCRIPT_DIR/$mod/wwwroot"/*.js; do [ -f "$f" ] || continue fname=$(basename "$f") ln -sf "$f" "$MODULE_WWWROOT/$fname" done # 链接api目录下的.dspy文件 for f in "$SCRIPT_DIR/$mod/wwwroot/api"/*.dspy; do [ -f "$f" ] || continue fname=$(basename "$f") ln -sf "$f" "$MODULE_WWWROOT/api/$fname" done # 链接生成的CRUD目录 for d in "$SCRIPT_DIR/$mod/wwwroot"/*/; do [ -d "$d" ] || continue dname=$(basename "$d") case "$dname" in api|styles|scripts) continue ;; esac ln -sf "$d" "$MODULE_WWWROOT/$dname" done echo "$mod 安装完成" done echo "" echo "=== 构建完成 ===" echo "请执行以下步骤完成集成:" echo "1. 编辑 $SAGE_ROOT/app/sage.py 添加模块导入" echo "2. 编辑 $SAGE_ROOT/build.sh 添加模块到安装循环" echo "3. 执行 RBAC 权限配置" echo "4. 重启Sage服务"