#!/bin/bash

set -eu
set -o pipefail

function usage
{
    retval="$1"
    case "$retval" in
        0)
            ;;
        *)
            exec 1>&2
            ;;
    esac
    echo "Usage: $0 --host directory_under_mymount --auto /mymount"
    exit "$retval"
}

if tty -s
then
    progress=full+poststat
else
    progress=none
fi

host=""
auto=/mymount

while [ "$#" -ge 1 ]
do
    case "$1" in
        --auto)
            auto="$2"
            shift
            ;;
        --host)
            host="$2"
            shift
            ;;
        -h|--help)
            usage 0
            ;;
        *)
            echo "$0: Unrecognized option: $1" 1>&2
            usage 1
            ;;
    esac
    shift
done
    
if [ "$host" = "" ]
then
    echo "$0: --host is a required option" 1>&2
    usage 1
fi

case "$auto" in
    /*)
        # shellcheck disable=SC2001
        # I prefer sed.  Subprocesses aren't evil.
        auto=$(echo "$auto" | sed 's#^/##')
        ;;
    *)
        echo "$0: --auto argument must start with a /" 1>&2
        exit 1
        ;;
esac

prfx=/"$auto"/"$host"/

if ! [ -d "$prfx" ]
then
    echo "$0: $prfx does not exist" 1>&2
    exit 1
fi

find "$prfx" \( \
    -wholename "$prfx"proc -o \
    -wholename "$prfx"sys -o \
    -wholename "$prfx"dev -o \
    -wholename "$prfx"run -o \
    -wholename "$prfx""$auto" -o \
    -wholename "$prfx"mnt -o \
    -wholename "$prfx"media -o \
    -wholename "$prfx"tmp/mplay-cache -o \
    -name not-backed-up -o \
    -wholename "$prfx"var/lib/lxcfs \
    \) -prune -o -print0 | \
    /usr/local/bin/just-one --command "/usr/local/bin/backshift \
        --backup \
        --subset just-$host \
        --save-directory /backshift-production/save-directory \
        --progress-report $progress" --string "$host"-backup