script_engine/build.sh

51 lines
1.7 KiB
Bash

#!/bin/bash
# script_engine module build -- four steps:
# 1. install xls2ddl
# 2. models/ (json) -> mysql.ddl.sql
# 3. json/ -> CRUD ui/dspy via xls2ui
# 4. symlink module wwwroot into main app wwwroot
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MOD=script_engine
# locate sage root
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
echo "== [1/4] install xls2ddl =="
pip install xls2ddl >/dev/null 2>&1 || pip3 install xls2ddl >/dev/null 2>&1 || true
echo "== [2/4] models -> DDL =="
cd "$SCRIPT_DIR/models"
json2ddl mysql . > mysql.ddl.sql 2>/dev/null || \
"$SAGE_ROOT/py3/bin/python3" "$SAGE_ROOT/py3/bin/json2ddl" mysql . > mysql.ddl.sql
echo "== [3/4] json CRUD -> wwwroot =="
cd "$SCRIPT_DIR"
if [ -d json ] && ls json/*.json >/dev/null 2>&1; then
PYTHONPATH="$SAGE_ROOT/py3/bin" python3 -m xls2ddl.xls2crud -m models -o wwwroot "$MOD" json/*.json || \
"$SAGE_ROOT/py3/bin/xls2ui" -m models -o wwwroot "$MOD" json/*.json || true
fi
echo "== [4/4] symlink module wwwroot -> sage wwwroot =="
if [ -n "$SAGE_ROOT" ]; then
ln -sfn "$SCRIPT_DIR/wwwroot" "$SAGE_ROOT/wwwroot/$MOD"
for d in "$SCRIPT_DIR"/wwwroot/*/; do
[ -d "$d" ] || continue
base="$(basename "$d")"
case "$base" in api|styles|scripts) continue ;; esac
ln -sfn "$d" "$SAGE_ROOT/wwwroot/$base"
done
echo "symlinked $MOD wwwroot into $SAGE_ROOT/wwwroot"
else
echo "WARN: sage root not found, skip symlink (run from a full sage checkout)"
fi
echo "== script_engine build done =="