release / deb (push) Successful in 17s
- doctor [<name>] [--fix]: checks the system (user, programs, folders, zips, units and leftover copies in /etc, sandbox access to moved folders, journal, polkit, daemon, orphaned boot links and schedules) and each instance (ownership, server zip, config paths, mods, ports, failed starts/backups), with a fix for each. --fix applies the safe ones and re-checks them. - backup enable|disable|now|list: a systemd timer per instance (terraria-backup@.timer, Persistent=), saving the world first, into /var/lib/terraria/backups/<name>/ (group-readable), pruning only scheduled backups. rename carries the schedule, delete removes it. upgrade's backups move there too. - fetch vanilla|tmodloader [<version>] [--list] [--upgrade <name>]: downloads from terraria.org / tModLoader's GitHub releases, checks GitHub's sha256 and the zip, names it with its version. - terractld may write /etc/systemd/system, for backup enable and doctor --fix over --host. - Units, tmpfiles, packaging, completion, docs and changelog. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 lines
883 B
Bash
Executable File
24 lines
883 B
Bash
Executable File
#!/bin/sh
|
|
set -e
|
|
|
|
# On removal, stop all instances while the helper script still exists, so each
|
|
# server is sent "exit" and saves its world. (Without the script, systemd would
|
|
# just kill them.) Upgrades leave running servers alone.
|
|
case "$1" in
|
|
remove|deconfigure)
|
|
if [ -d /run/systemd/system ]; then
|
|
systemctl stop terractld.service || true
|
|
systemctl stop 'terraria-backup@*.timer' 'terraria-backup@*.service' || true
|
|
units=$(systemctl list-units --plain --no-legend --all 'terraria@*.service' | awk '{print $1}')
|
|
if [ -n "$units" ]; then
|
|
echo "Stopping Terraria instances: $units"
|
|
# Unquoted on purpose: each unit name must be a separate argument
|
|
# shellcheck disable=SC2086
|
|
systemctl stop $units || true
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
exit 0
|