#!/usr/bin/env bash

set -eu

TEMP_DIR=$(mktemp -d)
trap 'sudo -u mastodon mv /home/mastodon/db-backup.sql.temp /home/mastodon/db-backup.sql' SIGHUP SIGINT SIGQUIT SIGTERM
trap 'rm -rf $TEMP_DIR' EXIT SIGHUP SIGINT SIGQUIT SIGTERM
trap 'rm -rv /home/mastodon/db-backup.sql.temp' EXIT

sudo -u mastodon mv -v /home/mastodon/db-backup.sql /home/mastodon/db-backup.sql.temp
sudo -u mastodon pg_dump -U mastodon -Fc mastodon_production -p 5432 -f /home/mastodon/db-backup.sql

mkdir "${TEMP_DIR}/etc"
etc_copy_items=(
    "caddy"
    "docker"
    "postgresql"
    "systemd/network"
    "thelounge"
)
for item in "${etc_copy_items[@]}"; do
    rsync -avz "/etc/$item" "${TEMP_DIR}/etc"
done

mkdir "${TEMP_DIR}/log"
rsync -avz /var/log/ "${TEMP_DIR}/log"

mkdir "${TEMP_DIR}/jas"
jas_copy_items=(
    "cdn"
    "docker"
    "public"
    ".byobu"
    ".config"
    ".gmcapsulerc"
    ".muttrc"
    ".ssh"
    ".zshrc"
    ".gemini-certs"
)
for item in "${jas_copy_items[@]}"; do
    rsync -avz "/home/jas/$item" "${TEMP_DIR}/jas"
done

rclone sync "${TEMP_DIR}"/ minio:server0-backup/

rclone copy -c /home/mastodon/db-backup.sql minio:server0-backup/
rclone copy -c /home/mastodon/live/.env.production minio:server0-backup/

exit 0