#!/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"