#!/bin/sh -e

# Copyright (C) 2002-2004  Masato Taruishi <taru@debian.org>
# Copyright (C) 2006       Junichi Uekawa <dancer@debian.org>
# Copyright (C) 2007       Jean Lepropre <jlepropre@gmail.com>
# Copyright (C) 2013-2019  Francesco Poli <invernomuto@paranoici.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License with
# the Debian GNU/Linux distribution in file /usr/share/common-licenses/GPL-2;
# if not, write to the Free Software Foundation, Inc., 51 Franklin St,
# Fifth Floor, Boston, MA 02110-1301, USA.

prefclean()
{
    file="/etc/apt/preferences.d/apt-listbugs"
    backup="/var/backups/apt-listbugs.preferences"

    test -x /usr/libexec/apt-listbugs/aptcleanup || return 0
    test -x /usr/bin/apt-listbugs || return 0
    test -f "$file" || return 0

    tmp=$(mktemp --tmpdir apt-listbugs_tmp_preferences.XXXXXX)

    /usr/libexec/apt-listbugs/aptcleanup > "$tmp" || return 1
    if ! diff -B "$tmp" "$file" > /dev/null
    then
        if test -f "$backup"
        then
            savelog -q "$backup"
        fi
        cp -aH "$file" "$backup"
        cp "$tmp" "$file"
    fi
    /bin/rm -f "$tmp"
}

dailyprefclean()
{
    # consider "days" as if they started at 07:00 a.m.
    today=$(date +%Y%m%d -d 'now - 7 hours')
    lastrunfile="/var/spool/apt-listbugs/lastprefclean"
    lastrunday=$(cat $lastrunfile 2> /dev/null || true)

    test "$today" -le "$lastrunday" 2> /dev/null && return 0
    if prefclean
    then
        printf '%s\n' "$today" > $lastrunfile
    fi
}

if test -d /run/systemd/system
then
    if test -x /usr/sbin/sendmail
    then
        myoutput=$(dailyprefclean 2>&1)
        if test "x$myoutput" != "x"
        then
            myhost=$(hostname)
            /usr/sbin/sendmail -t -odi << EOM
To: root
From: apt-listbugs timer <root@$myhost>
Subject: prefclean output on $myhost
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

${0}:
$myoutput

EOM
        fi
    else
        dailyprefclean
    fi
else
    prefclean
fi

