pkg fix
build-and-publish / build (Raccoon, ubuntu:26.04, NEXUS_PASS_RACCOON, NEXUS_REPO_RACCOON, NEXUS_USER_RACCOON, raccoon) (push) Successful in 4m40s
build-and-publish / build (Trixie, debian:13, NEXUS_PASS_TRIXIE, NEXUS_REPO_TRIXIE, NEXUS_USER_TRIXIE, trixie) (push) Successful in 4m13s

This commit is contained in:
theraw
2026-08-12 22:53:54 +00:00
parent a24d9f83b3
commit 13087e409e
2 changed files with 41 additions and 6 deletions
+38 -4
View File
@@ -7,11 +7,24 @@
#
# Config policy for twiy:
# - target present (identical OR admin-edited) -> NEVER replace; leave as-is.
# - target absent -> ASK the admin (per file,
# Y/N) and only create it on Y.
# - target absent, FRESH INSTALL -> create it, no questions.
# /nginx is empty by design on
# a fresh install, so asking
# would mean one Y/N per file
# and a noninteractive install
# would end up with no config
# at all (nginx then fails to
# start).
# - target absent, UPGRADE -> the admin deleted it on
# purpose, so ASK (per file,
# Y/N) and only create on Y.
# We never drop <file>.new and we never overwrite an existing config, so an
# upgrade can never change an admin-edited config.
#
# TWIY_SEED_DEFAULTS overrides the upgrade behaviour for automation:
# yes -> create every missing default without asking
# no -> never create a missing default
#
# /hostdata is left entirely to the admin: we only make sure the dir exists,
# and we never touch or remove its contents.
@@ -34,6 +47,15 @@ prompt_yes_no() {
esac
}
# dpkg calls us as `postinst configure <old-version>`; $2 is empty only on a
# fresh install (or on reinstall after a purge), which is exactly the case where
# an empty /nginx is expected rather than admin intent.
if [ "$1" = configure ] && [ -z "${2:-}" ]; then
fresh_install=yes
else
fresh_install=no
fi
useradd -r -s /bin/false nginx 2>/dev/null || true
# Existing dirs are left exactly as they are (mkdir -p is a no-op then).
@@ -49,9 +71,21 @@ if [ -d /var/backups/twiy-nginx ]; then
rm -rf /var/backups/twiy-nginx
fi
# Should a missing config be created? Fresh install and TWIY_SEED_DEFAULTS
# answer without touching the terminal; an upgrade asks the admin per file.
seed_missing() {
dst="$1"
case "${TWIY_SEED_DEFAULTS:-}" in
[Yy]|[Yy][Ee][Ss]) return 0 ;;
[Nn]|[Nn][Oo]) return 1 ;;
esac
[ "$fresh_install" = yes ] && return 0
prompt_yes_no "config '$dst' does not exist. Create it from the packaged default?"
}
# Seed packaged defaults:
# - target present -> do nothing (never replace, no .new).
# - target absent -> ask the admin; create it only if they answer yes.
# - target absent -> seed_missing decides (see the policy note above).
seed_tree() {
stash="$1"
target="$2"
@@ -62,7 +96,7 @@ seed_tree() {
if [ -e "$dst" ]; then
continue
fi
if prompt_yes_no "config '$dst' does not exist. Create it from the packaged default?"; then
if seed_missing "$dst"; then
install -d "$(dirname "$dst")"
cp -p "$src" "$dst"
echo "twiy: created $dst"