#!/bin/sh

set -e

# Define variables from environment
REPO=${BORG_REPO:-/backup}
BORG_PASSPHRASE=$(getpassphrase)
SOURCE=${BORG_SOURCE:-/source}
COMPRESSION=${BORG_COMPRESS:-zstd}
PRUNE_KEEP_DAILY=${BORG_PRUNE_KEEP_DAILY:-7}
PRUNE_KEEP_WEEKLY=${BORG_PRUNE_KEEP_WEEKLY:-4}
PRUNE_KEEP_MONTHLY=${BORG_PRUNE_KEEP_MONTHLY:-6}
EXCLUDE_PATTERNS=${BORG_EXCLUDE_PATTERNS:-}
CHECK_LAST=${BORG_CHECK_LAST}

BAK_ARGS="--compression $COMPRESSION"

if [ -z "$BORG_PASSPHRASE" ]; then
	echo "Could not found passphrase"
	exit 1
fi

if [ -n "$EXCLUDE_PATTERNS" ]; then
	BAK_ARGS="$BAK_ARGS --exclude $EXCLUDE_PATTERNS"
fi

# Borg backup command
borg create --stats $BAK_ARGS \
	$REPO::$(date +%Y-%m-%d) $SOURCE

# Borg prune command

echo "Creating backup..."
borg prune --list $REPO --keep-daily=$PRUNE_KEEP_DAILY --keep-weekly=$PRUNE_KEEP_WEEKLY --keep-monthly=$PRUNE_KEEP_MONTHLY

# Borg check command
CHECK_ARGS=""

if [ -n "$CHECK_LAST" ]; then
	CHECK_ARGS="$CHECK_ARGS --last $CHECK_LAST"
fi
if [ -n "$CHECK_DATA" ]; then
	CHECK_ARGS="$CHECK_ARGS --verify-data"
fi

borg check $CHECK_ARGS $REPO