#!/bin/sh # Installation d'une nouvelle machine en une commande : # curl -fsSL https://setup.on.gmbl.fr | sh # # Installe les outils en ligne de commande Apple et Homebrew, clone ce dépôt # (lecture anonyme en HTTPS) puis lance setup.sh. Aucun secret ici. # Tout le script est dans main(), appelée à la dernière ligne : un # téléchargement interrompu n'exécute rien. main() { set -eu REPO_URL="${SETUPOLI_URL:-https://setup.on.gmbl.fr/r/b5043f1580b402fd3ca7ac80/setupoli.git}" DEST="${SETUPOLI_DIR:-$HOME/repos-my/setupoli}" # Les questions lisent le terminal, même quand le script arrive par un tube. exec &2 exit 1 ;; esac echo "setupoli : préparation de cette machine." echo "Le mot de passe de session est demandé pour les installations (sudo)." sudo -v if ! xcode-select -p >/dev/null 2>&1; then echo "Installation des outils en ligne de commande Apple : valider la fenêtre ouverte." xcode-select --install >/dev/null 2>&1 || true until xcode-select -p >/dev/null 2>&1; do sleep 5; done fi if [ ! -x /opt/homebrew/bin/brew ] && [ ! -x /usr/local/bin/brew ]; then NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" fi if [ -x /opt/homebrew/bin/brew ]; then eval "$(/opt/homebrew/bin/brew shellenv)" else eval "$(/usr/local/bin/brew shellenv)" fi if [ -d "$DEST/.git" ]; then git -C "$DEST" pull --ff-only else mkdir -p "$(dirname "$DEST")" git clone "$REPO_URL" "$DEST" fi exec /bin/bash "$DEST/setup.sh" } main "$@"