59 lines
2.2 KiB
Bash
59 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
||
# script_engine 模块构建脚本 —— 四步安装(由宿主应用 build.sh 集成调用)
|
||
# ① 安装生成工具 ② 生成 DDL ③ 生成 CRUD UI ④ 链接 wwwroot
|
||
set -e
|
||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
MODULE="script_engine"
|
||
|
||
echo "[$MODULE] ==== Step 1/4: 安装生成工具 xls2ddl ===="
|
||
if ! command -v json2ddl >/dev/null 2>&1 || ! command -v xls2ui >/dev/null 2>&1; then
|
||
pip install xls2ddl >/dev/null 2>&1 || echo "[$MODULE] 警告: xls2ddl 安装失败(宿主已装则忽略)"
|
||
fi
|
||
|
||
echo "[$MODULE] ==== Step 2/4: 生成 DDL ===="
|
||
if [ -d "$SCRIPT_DIR/models" ]; then
|
||
if command -v json2ddl >/dev/null 2>&1; then
|
||
json2ddl mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/models/mysql.ddl.sql"
|
||
echo "[$MODULE] DDL 已生成: models/mysql.ddl.sql"
|
||
else
|
||
echo "[$MODULE] 警告: json2ddl 不可用,跳过 DDL 生成"
|
||
fi
|
||
fi
|
||
|
||
echo "[$MODULE] ==== Step 3/4: 生成 CRUD UI ===="
|
||
if [ -d "$SCRIPT_DIR/json" ]; then
|
||
if command -v xls2ui >/dev/null 2>&1; then
|
||
(cd "$SCRIPT_DIR" && xls2ui -m models -o wwwroot "$MODULE" json/*.json)
|
||
echo "[$MODULE] CRUD UI 已生成: wwwroot/$MODULE/"
|
||
else
|
||
echo "[$MODULE] 警告: xls2ui 不可用,跳过 CRUD UI 生成"
|
||
fi
|
||
fi
|
||
|
||
echo "[$MODULE] ==== Step 4/4: 链接 wwwroot 到宿主 ===="
|
||
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 [ -n "$SAGE_ROOT" ]; then
|
||
mkdir -p "$SAGE_ROOT/wwwroot/$MODULE/api"
|
||
ln -sfn "$SCRIPT_DIR/wwwroot/index.ui" "$SAGE_ROOT/wwwroot/$MODULE/index.ui"
|
||
for f in "$SCRIPT_DIR"/wwwroot/api/*.dspy; do
|
||
[ -f "$f" ] && ln -sfn "$f" "$SAGE_ROOT/wwwroot/$MODULE/api/$(basename "$f")"
|
||
done
|
||
for d in "$SCRIPT_DIR"/wwwroot/*/; do
|
||
[ -d "$d" ] || continue
|
||
name="$(basename "$d")"
|
||
case "$name" in api|styles|scripts) continue ;; esac
|
||
ln -sfn "$d" "$SAGE_ROOT/wwwroot/$MODULE/$name"
|
||
done
|
||
echo "[$MODULE] wwwroot 已链接到 $SAGE_ROOT/wwwroot/$MODULE"
|
||
else
|
||
echo "[$MODULE] 未找到宿主 wwwroot,跳过链接"
|
||
fi
|
||
|
||
echo "[$MODULE] ==== build.sh 四步安装完成 ===="
|