#!/usr/bin/env bash
set -euo pipefail

PROJECT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)"
DB_FILE="${PROJECT_DIR}/database/microerp.sqlite"
UPLOAD_DIR="${PROJECT_DIR}/uploads/productos"
BACKUP_DIR="${PROJECT_DIR}/storage/backups"
STAMP="$(date +%Y%m%d-%H%M%S)"
TMP_DIR="$(mktemp -d)"
ARCHIVE="${BACKUP_DIR}/microerp-${STAMP}.tar.gz"

cleanup() {
  rm -rf -- "${TMP_DIR}"
}
trap cleanup EXIT

if [[ ! -f "${DB_FILE}" ]]; then
  echo "No existe la base de datos: ${DB_FILE}" >&2
  exit 1
fi

mkdir -p -- "${BACKUP_DIR}" "${TMP_DIR}/database" "${TMP_DIR}/uploads/productos" "${TMP_DIR}/config"
sqlite3 "${DB_FILE}" ".backup '${TMP_DIR}/database/microerp.sqlite'"
cp -a -- "${UPLOAD_DIR}/." "${TMP_DIR}/uploads/productos/"
if [[ -f "${PROJECT_DIR}/config/app.php" ]]; then
  cp -- "${PROJECT_DIR}/config/app.php" "${TMP_DIR}/config/app.php"
fi
printf '%s\n' "Creado: $(date --iso-8601=seconds)" "Versión: 1.0.0" > "${TMP_DIR}/MANIFEST.txt"
tar -C "${TMP_DIR}" -czf "${ARCHIVE}" database uploads config MANIFEST.txt
chmod 640 "${ARCHIVE}"
echo "${ARCHIVE}"

