#!/bin/sh
# Prima dell'avvio di DMS (ExecStartPre di dms.service): aggiunge al settings.json dell'utente le chiavi del
# preset di Stidda che mancano. Le chiavi già presenti, cioè le scelte dell'utente, non si toccano.
# Serve perché /etc/skel arriva solo ai nuovi utenti (report 11, R51). Senza settings.json non fa nulla:
# al primo avvio DMS parte dal preset copiato da /etc/skel.
set -eu
PRESET=/etc/skel/.config/DankMaterialShell/settings.json
# Scelte dell'amministratore fatte all'installazione (stidda-setup), per esempio i pulsanti di spegnimento
# nella schermata di blocco (R16). Precedenza: preset < amministratore < utente.
AMMINISTRATORE=/etc/stidda/dms-preset.json
UTENTE=${XDG_CONFIG_HOME:-$HOME/.config}/DankMaterialShell/settings.json
[ -f "$PRESET" ] && [ -f "$UTENTE" ] || exit 0
TMP=$(mktemp "$UTENTE.XXXXXX")
# preset * amministratore * utente: a parità di chiave vince l'ultimo, cioè l'utente.
[ -f "$AMMINISTRATORE" ] || AMMINISTRATORE=/dev/null
if jq -s 'reduce .[] as $x ({}; . * $x)' "$PRESET" "$AMMINISTRATORE" "$UTENTE" > "$TMP" && [ -s "$TMP" ]; then
    cmp -s "$TMP" "$UTENTE" && rm -f "$TMP" || mv "$TMP" "$UTENTE"
else
    rm -f "$TMP"   # settings.json non valido: lo lascia a DMS
fi
