#!/usr/bin/env bash # Déclencheur automatique : ce script régénère les toolboxes mise # (~/.config/mise/conf.d/.toml) à partir de .chezmoidata/tools.yaml # et .chezmoidata/hosts.yaml, puis (ré)installe les outils. # Il se réexécute automatiquement dès que ces données changent, car la boucle # ci-dessous fait partie du contenu templaté (donc du hash) de ce script. # hash config.toml: {{ includeTemplate "private_dot_config/mise/config.toml.tmpl" . | sha256sum }} set -euo pipefail export PATH="${HOME}/.local/bin:$PATH" MISE_CONF_D="${HOME}/.config/mise/conf.d" mkdir -p "$MISE_CONF_D" {{- $hostname := output "hostname" | trim -}} {{- $username := .chezmoi.username -}} {{- $currentHost := index .hosts $hostname -}} {{- $currentUser := "" -}} {{- if $currentHost -}} {{- if hasKey $currentHost.users $username -}} {{- $currentUser = index $currentHost.users $username -}} {{- end -}} {{- end }} echo "✏️ Génération des toolboxes mise pour {{ $username }}@{{ $hostname }}..." declare -A active_toolboxes=( {{- if $currentUser }} {{- range $toolboxName := $currentUser.toolboxes }} ["{{ $toolboxName }}"]=1 {{- end }} {{- end }} ) # Suppression des toolboxes qui ne sont plus assignées à cet hôte/utilisateur for f in "$MISE_CONF_D"/*.toml; do [ -e "$f" ] || continue name="$(basename "$f" .toml)" if [ -z "${active_toolboxes[$name]:-}" ]; then echo "🗑️ Toolbox obsolète supprimée : $name" rm -f "$f" fi done {{ if $currentUser }} {{- range $toolboxName := $currentUser.toolboxes }} {{- $toolsList := index $.tools.toolboxes $toolboxName }} {{- if $toolsList }} echo " → {{ $toolboxName }}.toml" cat > "$MISE_CONF_D/{{ $toolboxName }}.toml" <<'MISE_TOOLBOX_EOF' {{ includeTemplate "mise-toolbox-conf" (merge (dict "toolboxName" $toolboxName) $) }} MISE_TOOLBOX_EOF {{- end }} {{- end }} {{- end }} if command -v mise &>/dev/null; then echo echo "🚀 Mise bootstrap..." mise bootstrap --yes echo echo "⚡ Mise install..." mise install --yes else echo "⚠️ mise n'est pas installé sur ce système. Impossible de lancer l'installation automatique des outils." fi