45 lines
1.8 KiB
Bash
45 lines
1.8 KiB
Bash
#!/usr/bin/env bash
|
|
# world_snapshot module build script (four-step install).
|
|
# 1) install xls2ddl 2) models json -> mysql.ddl.sql 3) json -> wwwroot CRUD ui
|
|
# 4) symlink module wwwroot into the main app wwwroot.
|
|
set -e
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
MOD="world_snapshot"
|
|
|
|
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 "[world_snapshot] step 1/4: install xls2ddl"
|
|
pip install -q xls2ddl 2>/dev/null || echo " xls2ddl install skipped (already present)"
|
|
|
|
echo "[world_snapshot] step 2/4: generate mysql.ddl.sql from models/"
|
|
if [ -d "$SCRIPT_DIR/models" ]; then
|
|
json2ddl mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/models/mysql.ddl.sql" 2>/dev/null \
|
|
|| python3 -m xls2ddl.json2ddl mysql "$SCRIPT_DIR/models" > "$SCRIPT_DIR/models/mysql.ddl.sql"
|
|
fi
|
|
|
|
echo "[world_snapshot] step 3/4: generate CRUD ui from json/"
|
|
if [ -d "$SCRIPT_DIR/json" ]; then
|
|
(cd "$SCRIPT_DIR" && PYTHONPATH="$SCRIPT_DIR" python3 -m xls2ddl.xls2crud \
|
|
-m "$SCRIPT_DIR/models" -o "$SCRIPT_DIR/wwwroot" "$MOD" json/*.json) \
|
|
|| echo " xls2crud skipped (generate custom ui manually)"
|
|
fi
|
|
|
|
echo "[world_snapshot] step 4/4: symlink module wwwroot into app wwwroot"
|
|
if [ -n "$SAGE_ROOT" ] && [ -d "$SAGE_ROOT/wwwroot" ]; then
|
|
ln -sfn "$SCRIPT_DIR/wwwroot" "$SAGE_ROOT/wwwroot/$MOD"
|
|
if [ -d "$SCRIPT_DIR/wwwroot/world_snapshot" ]; then
|
|
ln -sfn "$SCRIPT_DIR/wwwroot/world_snapshot" "$SAGE_ROOT/wwwroot/$MOD/world_snapshot"
|
|
fi
|
|
echo " linked $SAGE_ROOT/wwwroot/$MOD"
|
|
else
|
|
echo " sage root not found, skip symlink"
|
|
fi
|
|
|
|
echo "[world_snapshot] build.sh done"
|