script_engine/build.sh
2026-08-29 12:44:23 +08:00

59 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 四步安装完成 ===="