51 lines
1.7 KiB
Bash
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 =="
|