Files
momentry_core/scripts/deploy_package.sh
Accusys c0c0e6e8ea feat: self-contained deploy/verify scripts in release package
- Add deploy.sh: imports data.sql, copies video, copies output files, verifies
- Add verify.sh: checks file integrity + DB/offline status
- Both scripts included in tar.gz via release package command
- Package now deployable standalone without release CLI
2026-05-13 04:35:43 +08:00

86 lines
2.7 KiB
Bash

#!/bin/bash
# Momentry Release Package — Deploy Script
# Usage: bash deploy.sh [--db-only] [--skip-video]
set -euo pipefail
DIR="$(cd "$(dirname "$0")" && pwd)"
UUID=$(basename "$DIR")
PG_BIN="${PG_BIN:-/Users/accusys/pgsql/18.3/bin}"
DB_NAME="${DB_NAME:-momentry}"
DB_USER="${DB_USER:-accusys}"
DEMO_DIR="${DEMO_DIR:-/Users/accusys/momentry/var/sftpgo/data/demo}"
OUTPUT_DIR="${OUTPUT_DIR:-/Users/accusys/momentry/output_dev}"
echo "=== Momentry Package Deploy ==="
echo "UUID: $UUID"
echo "Time: $(date '+%Y-%m-%d %H:%M:%S')"
echo ""
# 1. Verify package integrity
echo "[1/5] Verifying package..."
REQUIRED_FILES=("data.sql" "file_info.json")
MISSING=0
for f in "${REQUIRED_FILES[@]}"; do
if [ ! -f "$DIR/$f" ]; then
echo " ❌ Missing: $f"
MISSING=1
fi
done
if [ $MISSING -eq 1 ]; then
echo "ERROR: Package incomplete"
exit 1
fi
echo " ✅ Package verified"
# 2. Import data.sql
echo "[2/5] Importing DB data..."
"$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -f "$DIR/data.sql" 2>&1 | tail -3
echo " ✅ Data imported"
# 3. Copy video to demo dir
VIDEO_FILE=$(ls "$DIR"/*.mp4 "$DIR"/*.mov "$DIR"/*.avi "$DIR"/*.mkv 2>/dev/null | head -1)
if [ -n "$VIDEO_FILE" ]; then
VIDEO_NAME=$(basename "$VIDEO_FILE")
DEST="$DEMO_DIR/$VIDEO_NAME"
if [ ! -f "$DEST" ]; then
cp "$VIDEO_FILE" "$DEST"
echo "[3/5] Video copied: $VIDEO_NAME$DEMO_DIR"
else
echo "[3/5] Video already in demo dir, skipping"
fi
else
echo "[3/5] No video file in package, skipping"
fi
# 4. Copy output files
echo "[4/5] Copying output files..."
COPIED=0
for f in "$DIR"/*.json "$DIR"/*.sqlite "$DIR"/*.sqlite; do
if [ -f "$f" ]; then
FNAME=$(basename "$f")
if [ "$FNAME" != "file_info.json" ] && [ "$FNAME" != "package.json" ]; then
cp "$f" "$OUTPUT_DIR/$FNAME"
COPIED=$((COPIED + 1))
fi
fi
done
echo "$COPIED files copied to $OUTPUT_DIR"
# 5. Verify deployment
echo "[5/5] Verifying deployment..."
CHUNKS=$("$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -t -A -c "SELECT COUNT(*) FROM dev.chunk WHERE file_uuid='$UUID' AND chunk_type='sentence'" 2>/dev/null || echo "?")
FACES=$("$PG_BIN/psql" -U "$DB_USER" -d "$DB_NAME" -t -A -c "SELECT COUNT(*) FROM dev.face_detections WHERE file_uuid='$UUID'" 2>/dev/null || echo "?")
echo ""
echo "=== Deploy Complete ==="
echo " UUID: $UUID"
echo " Chunks: $CHUNKS"
echo " Faces: $FACES"
echo " Output: $OUTPUT_DIR/"
echo ""
echo "Next: trigger pipeline processing"
echo " curl -X POST http://localhost:3003/api/v1/file/$UUID/process"
echo ""
echo "Or open the offline report:"
echo " python3 render_offline_report.py $OUTPUT_DIR/$UUID.sqlite"