#! /bin/bash

# Step script for Debian major version upgrade for fuss
# 
# Copyright (C) 2026 FUSS Project <info@fuss.bz.it>
# Authors: Simone Piccardi <piccardi@truelite.it>
#
# 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; version 3 of the License.
#
# 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
# along with this program or from the site that you downloaded it
# from; if not, write to the Free Software Foundation, Inc., 59 Temple
# Place, Suite 330, Boston, MA  02111-1307   USA

#
# Script to execute fuss-client -U
#

# log operation
echo "Step $STEP: prepare or execute fuss-client -U on Debian 13"
echo "==========================================="
echo

export DEBIAN_FRONTEND=noninteractive
. $SCRIPTS_DIR/functions.sh
exec_dpkg_configure

# ### REVIEW NEEDED ON UPGRADE TO forky
# i.e, the version for trixie, that upgrades to forky
# starting from trixie, fuss-client -U is able to recognize how fuss-client was
# originally run (joined / cloud / standalone) and this commit can be reverted.
if [ -f "/etc/krb5.keytab" ]; then
    FUSS_CLIENT="fuss-client -U"
else
    FUSS_CLIENT="fuss-client -S"
fi

#
# precautionary addition of fuss_client timer and service 
#
echo "# precautionary addition of fuss_client timer and service"
echo "#   create /etc/systemd/system/fuss_client.timer"
cat <<EOF > /etc/systemd/system/fuss_client.timer
[Unit]
Description=Run fuss-client -U

[Timer]
OnCalendar=daily
RandomizedDelaySec=82800
Persistent=true

[Install]
WantedBy=timers.target

EOF
echo "#   create /etc/systemd/system/fuss_client.service"
cat <<EOF > /etc/systemd/system/fuss_client.service
[Unit]
Description=Run fuss-client -U with the same options as the latest run
After=octofuss-client.service

[Service]
Type=oneshot
ExecStartPre=/usr/bin/sleep 60
ExecStart=/usr/sbin/$FUSS_CLIENT

[Install]
WantedBy=multi-user.target
EOF

echo "#   enable fuss_client.service and fuss_client.timer"
systemctl enable fuss_client.timer
systemctl enable fuss_client.service

#
# execute fuss-client -U
#
echo "# launching $FUSS_CLIENT"
$FUSS_CLIENT
# save exit result
if [ $? != 0 ]; then
    echo "#   $FUSS_CLIENT failed"
    echo FAILED > $STEPRES
    exit 1
fi

#
# ending with OK
#
echo PASSED > $STEPRES
