#! /usr/bin/env bash

set -e

if [ -z "$1" ]
then
  REPO="nas:~/borg"
  LOCAL=false
else
  DISK="$1"
  LOCAL=true
fi

if $LOCAL
then
  #check if unlocked
  if [ -e "/dev/disk/by-label/$DISK" ]
  then
    echo "Disk already unlocked"
  else
    udisksctl unlock -b /dev/disk/by-partlabel/$DISK --key-file "$HOME/.keys/luks.key"
  fi
  #check if mounted
  if [ -e "/run/media/$USER/$DISK" ]
  then
    echo "Disk already mounted"
  else
    udisksctl mount -b /dev/disk/by-label/$DISK
  fi
  REPO="/run/media/$USER/$DISK/borg"
fi


ARCHIVE="$REPO::$HOSTNAME-$(date +%Y-%m-%dT%T)"
SRC="$HOME"
BORG_PASSPHRASE=""
echo "Enter passphrase for $REPO:"
read -s BORG_PASSPHRASE
export BORG_PASSPHRASE

borg create --progress --stats --exclude-caches \
--exclude $HOME/VirtualBox\ VMs \
--exclude $HOME/.cache \
--exclude $HOME/Downloads \
--exclude $HOME/Photos \
--exclude $HOME/Videos \
--exclude $HOME/tmp \
--exclude $HOME/.local/Steam \
--exclude $HOME/.local/share/Steam \
--exclude $HOME/Audio \
--exclude $HOME/nas \
--exclude $HOME/go \
$ARCHIVE $SRC && if ! $LOCAL; then date +%s > $HOME/.lastbak; fi



borg prune --stats --list --keep-within 1d --glob-archives "$HOSTNAME*" \
  -d 7 \
  -w 4 \
  -m 6 \
  -y 1 \
  $REPO

if $LOCAL
then
  SRC=""
  if ! nmcli connection show --active | grep '^vt-net' > /dev/null
  then
    SRC="--from local"
  fi
  echo "backing up Photo archive..."
  cd "/run/media/$USER/$DISK/photos"
  git annex sync
#  set +e
#  git annex mirror --from=origin
  git annex get $SRC
#  set -e
  git annex sync
  echo "backing up Audio archive..."
  cd "/run/media/$USER/$DISK/audio"
  git annex sync
###  git annex mirror --from=origin
  git annex get $SRC
  git annex sync
  cd /
  udisksctl unmount -b "/dev/disk/by-label/$DISK"
  udisksctl lock -b "/dev/disk/by-partlabel/$DISK"
else
  echo "Backing up Audo archive..."
  cd "$HOME/Audio"
  git annex copy --to origin > /dev/null
  echo "Backing up Photo archive..."
  cd "$HOME/Photos"
  git annex copy --to origin > /dev/null
fi
