57 lines
1.7 KiB
Bash
57 lines
1.7 KiB
Bash
#!/usr/bin/env bash
|
|
# script_engine module build - four steps:
|
|
# 1) install xls2ddl
|
|
# 2) models/*.json -> mysql.ddl.sql (json2ddl)
|
|
# 3) json/*.json -> generated CRUD UI (xls2ui)
|
|
# 4) symlink module wwwroot into host app wwwroot
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
PYTHON="${PYTHON:-python3}"
|
|
|
|
echo "[1/4] install xls2ddl..."
|
|
pip install xls2ddl
|
|
|
|
echo "[2/4] generate DDL from models/*.json..."
|
|
if [ -d models ]; then
|
|
$PYTHON -m xls2ddl.json2ddl mysql . > mysql.ddl.sql
|
|
fi
|
|
|
|
echo "[3/4] generate CRUD UI from json/*.json..."
|
|
if [ -d json ]; then
|
|
$PYTHON -m xls2ddl.xls2ui -m models -o wwwroot script_engine json/*.json
|
|
fi
|
|
|
|
echo "[4/4] symlink module wwwroot into host app wwwroot..."
|
|
# locate host app wwwroot: prefer sibling app dir under the same workspace
|
|
HOST_WWWROOT=""
|
|
for candidate in \
|
|
"$SCRIPT_DIR/../../apps/yuanjing/wwwroot" \
|
|
"$SCRIPT_DIR/../../yuanjing/wwwroot" \
|
|
"$SCRIPT_DIR/../yuanjing/wwwroot" \
|
|
"$HOME/repos/yuanjing/wwwroot"; do
|
|
if [ -d "$candidate" ]; then
|
|
HOST_WWWROOT="$(cd "$candidate" && pwd)"
|
|
break
|
|
fi
|
|
done
|
|
if [ -n "$HOST_WWWROOT" ]; then
|
|
mkdir -p "$HOST_WWWROOT/script_engine"
|
|
ln -sfn "$SCRIPT_DIR/wwwroot" "$HOST_WWWROOT/script_engine"
|
|
# link generated CRUD subdirs (script_engine_list) individually
|
|
for sub in "$SCRIPT_DIR/wwwroot"/*/; do
|
|
name="$(basename "$sub")"
|
|
case "$name" in
|
|
api|styles|scripts) continue ;;
|
|
esac
|
|
ln -sfn "$sub" "$HOST_WWWROOT/script_engine/$name"
|
|
done
|
|
echo "wwwroot linked to $HOST_WWWROOT/script_engine"
|
|
else
|
|
echo "WARN: host app wwwroot not found - skip symlink (deploy step will link)"
|
|
fi
|
|
|
|
echo "script_engine build done"
|