#!/usr/bin/env bash
# kelola-konfigurasi.sh — terapkan manifest "tujuan|isi" secara idempoten.
# Pemakaian: bash kelola-konfigurasi.sh <manifest>
set -u
if [ $# -ne 1 ]; then
  echo "Pemakaian: bash kelola-konfigurasi.sh <manifest>"
  exit 0
fi
manifest=$1
dir_manifest=$(dirname "$manifest")
berubah=0
total=0
while IFS='|' read -r tujuan isi; do
  case "$tujuan" in ''|'#'*) continue ;; esac
  total=$((total + 1))
  if [ -f "$dir_manifest/$tujuan" ] && [ "$(cat "$dir_manifest/$tujuan")" = "$isi" ]; then
    printf 'ok       %s\n' "$tujuan"
  else
    mkdir -p "$(dirname "$dir_manifest/$tujuan")"
    printf '%s\n' "$isi" > "$dir_manifest/$tujuan"
    printf 'changed  %s\n' "$tujuan"
    berubah=$((berubah + 1))
  fi
done < "$manifest"
echo "== REKAP: total=$total changed=$berubah ok=$((total - berubah)) =="
