# -*- shell-script -*-
# Copyright 2022 Ian Jackson and contributors to dkim-rotate
# SPDX-License-Identifier: GPL-3.0-or-later
# There is NO WARRANTY.

set -o pipefail

tname="${0##*/}"

mkdir -p tmp
rm -rf tmp/$tname
tmp=tmp/$tname
mkdir $tmp $tmp/var $tmp/etc
tmp_abs=$(realpath -s $tmp)

instance_var_dir=$tmp/var

cat example.zone - <<END >$tmp/etc/test.zone
; settings used for testing:
! dns_reload true
! instance_var_dir $tmp/var
! mta_group -
! pub_url file://$tmp_abs/var/pub
END

dkim_rotate="./dkim-rotate --etc-dir $tmp/etc"

run1 () {
    day=$1; shift
    hour "$@"
}

hour () {
    hour=$1; shift

    out=$tmp/out.$day.$hour

    : "---------- $day $hour $* ----------"

    date="now +$day days $hour hours"
    date -d "$date" --iso-8601=seconds

    faketime "$date" \
    $dkim_rotate "$@" 2>&1 | \
    tee $out

    faketime "$date" \
    $dkim_rotate --status 2>&1 | \
    tee $out.status

    grep -Fv '?' $out >$out.done || test $? = 1
    perl -i -pe 's{( +(?:since|not until)) .*}{$1 T}' $out $out.status
}

day () {
    day=$1; xmajor=$2
    hour +0  ${xmajor:- --major }
    hour +18 --minor
}
