#!/usr/bin/env bash # foms_app 纯伞构建脚本 —— 只组装,无业务逻辑 # 业务全部在独立模块仓库:foms / dbbackup / filesync / hostwatch set -e cdir=$(pwd) echo "=== FOMS_APP Build(纯伞)===" # 1. Create venv [ ! -d py3 ] && python3 -m venv py3 source py3/bin/activate # 2. Install foundation packages mkdir -p pkgs for m in apppublic sqlor ahserver bricks-for-python xls2ddl; do cd $cdir/pkgs [ ! -d "$m" ] && git clone https://git.opencomputing.cn/yumoqing/$m cd $m && $cdir/py3/bin/pip install -e . done # 3. Build bricks frontend cd $cdir/pkgs [ ! -d "bricks" ] && git clone https://git.opencomputing.cn/yumoqing/bricks cd bricks/bricks && ./build.sh ln -sf $cdir/pkgs/bricks/dist $cdir/bricks # 4. Install auth modules for m in appbase rbac; do cd $cdir/pkgs [ ! -d "$m" ] && git clone https://git.opencomputing.cn/yumoqing/$m cd $m && $cdir/py3/bin/pip install -e . done # 5. Install 全部业务模块(各自独立仓库,含核心 foms) for m in foms dbbackup filesync hostwatch; do cd $cdir/pkgs [ ! -d "$m" ] && git clone https://git.opencomputing.cn/yumoqing/$m cd $m && $cdir/py3/bin/pip install -e . # 生成模块 DDL if [ -d models ]; then json2ddl mysql models/ > models/mysql.ddl.sql 2>/dev/null || echo " skip ddl($m)" fi done # 6. Generate CRUD UI(xls2ui 从各模块 json/ 生成到各模块 wwwroot/) for m in foms dbbackup filesync hostwatch; do md=$cdir/pkgs/$m if [ -d "$md/json" ]; then cd "$md/json" for f in *.json; do echo " xls2ui $m $f" xls2ui -m ../models -o ../wwwroot "$m" "$f" 2>/dev/null || echo " skipped" done fi done # 7. Create runtime dirs # (模块 wwwroot 通过 conf/config.json 的 website.paths 直接挂载, # foms 核心在根路径,三模块在 /dbbackup /filesync /hostwatch 前缀下) cd $cdir mkdir -p logs files echo "=== FOMS_APP Build Complete ==="