#!/bin/bash
# vte_support_bundle.sh
# Uso: ./vte_support_bundle.sh /percorso/vtenext NOME_DB
# Esegui come root (o sudo su -) — niente prompt di password MySQL.

set -euo pipefail

if [ $# -lt 2 ]; then
  echo "Uso: $0 /percorso/vtenext NOME_DB"
  exit 1
fi

VTE_PATH="$1"
DB_NAME="$2"

if [ "$EUID" -ne 0 ]; then
  echo "Esegui come root: sudo su -"
  exit 1
fi

DATE="$(date +%F_%H%M%S)"
OUTDIR="_support_bundles/$DATE"
mkdir -p "$OUTDIR"

# --- Indice cartelle (max 3 livelli) ---
if command -v tree >/dev/null 2>&1; then
  (cd "$VTE_PATH" && tree -a -L 3) > "$OUTDIR/code_tree.txt"
else
  (cd "$VTE_PATH" && find . -maxdepth 3 -print) > "$OUTDIR/code_tree.txt"
fi

# --- Pacchetto codice "leggero" (senza storage/cache/logs/tmp) ---
tar --exclude='storage/*' \
    --exclude='cache/*' \
    --exclude='Smarty/cache/*' \
    --exclude='Smarty/templates_c/*' \
    --exclude='logs/*' \
    --exclude='*.log' \
    --exclude='tmp/*' \
    -czf "$OUTDIR/vte_code_min.tar.gz" -C "$VTE_PATH" .

# --- Config redatto (oscura password se presenti) ---
if [ -f "$VTE_PATH/include/config.inc.php" ]; then
  sed -E \
    -e "s/('db_password'|db_password|db_pass|smtp_password|password)\s*(['=:>]*\s*)'[^']*'/\1\2'***REDACTED***'/Ig" \
    "$VTE_PATH/include/config.inc.php" > "$OUTDIR/config.inc.php.redacted" || true
fi

# --- Wrapper MySQL/Mysqldump SENZA -p (socket auth) ---
mysqlQ() { mysql -N -D "$DB_NAME" -e "$1"; }
mysqldumpQ() { mysqldump "$DB_NAME" "$@"; }

# --- Schema DB (senza dati) ---
mysqldump -d "$DB_NAME" > "$OUTDIR/db_schema.sql"

# --- Tabelle meta utili (solo se esistono) ---
dump_if_exists() {
  local T="$1"
  if mysqlQ "SHOW TABLES LIKE '$T';" | grep -q "$T"; then
    mysqldumpQ "$T" > "$OUTDIR/${T}.sql"
  fi
}
for T in vte_vteprop vtiger_links vte_field vtiger_tab vtiger_relatedlists vte_relatedlists vtiger_entityname; do
  dump_if_exists "$T"
done

# --- Dove usi gli hook SDK / riferimenti a modules/SDK ---
grep -RIn "Vtiger_Link::" "$VTE_PATH" > "$OUTDIR/grep_links.txt" 2>/dev/null || true
grep -RIn "modules/SDK"   "$VTE_PATH" > "$OUTDIR/grep_sdk.txt"   2>/dev/null || true

# --- Pacchetto finale ---
tar -czf "${OUTDIR}.tar.gz" -C "$(dirname "$OUTDIR")" "$(basename "$OUTDIR")"
echo "Pronto: ${OUTDIR}.tar.gz"
