#!/bin/sh
# Amorcage de machine-backup — POSIX, idempotent.
#
# Chaque etape teste avant d'agir : sur une machine deja equipee, ce script
# n'installe rien et delegue directement au CLI. Il annonce toujours ce qu'il a
# trouve, pour que l'absence d'action soit lisible plutot qu'inquietante.
#
# Les modifications de PATH ci-dessous ne valent que pour CETTE session : aucun
# fichier de demarrage de shell n'est touche.
set -eu

say() { printf '%s\n' "$*"; }
DIR=$(CDPATH='' cd -- "$(dirname -- "$0")" && pwd)

if command -v brew >/dev/null 2>&1; then
    say "brew : trouve ($(command -v brew))"
else
    say "brew : absent — installation via l'installeur officiel"
    NONINTERACTIVE=1 /bin/bash -c \
        "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    PATH="/opt/homebrew/bin:$PATH"
    export PATH
    say "brew : installe"
fi

if command -v uv >/dev/null 2>&1; then
    say "uv : trouve ($(command -v uv))"
elif [ -x "$HOME/.local/bin/mise" ] && MISE_UV=$("$HOME/.local/bin/mise" which uv 2>/dev/null) \
    && [ -n "$MISE_UV" ]; then
    say "uv : trouve via mise ($MISE_UV)"
    PATH="$(dirname "$MISE_UV"):$PATH"
    export PATH
else
    say "uv : absent — installation (sans modification du profil shell)"
    curl -LsSf https://astral.sh/uv/install.sh | env UV_NO_MODIFY_PATH=1 sh
    PATH="$HOME/.local/bin:$PATH"
    export PATH
    say "uv : installe"
fi

exec uv run --project "$DIR" machine-backup "$@"
