#!/bin/bash # ---------------------------------------------------------- # Micro + dotfiles-rene Setup-Skript (Mac & Linux/Pi) # - Installiert micro (apt oder brew) # - Stellt ~/git-projekte/dotfiles-rene sicher # - Git-Repo klonen oder aktualisieren (git pull) # - Symlinks für micro-Konfiguration setzen # # Dieses Skript ist dafür gedacht, IM Repo zu liegen: # dotfiles-rene/micro/install-micro-dotfiles.sh # ---------------------------------------------------------- set -e REPO_URL="https://dsm.motocamp.de:3051/rene/dotfiles-rene.git" BASE_DIR="$HOME/git-projekte" REPO_NAME="dotfiles-rene" REPO_DIR="$BASE_DIR/$REPO_NAME" MICRO_CONFIG_DIR="$HOME/.config/micro" echo "🚀 Starte Setup für micro + dotfiles-rene" echo "Benutzer: $(whoami)" echo "Home: $HOME" echo # ---------------------------------------------------------- # 0) OS-Erkennung # ---------------------------------------------------------- OS="$(uname -s)" case "$OS" in Linux) OS_TYPE="linux" ;; Darwin) OS_TYPE="mac" ;; *) OS_TYPE="unknown" ;; esac echo "🧬 erkanntes System: $OS ($OS_TYPE)" echo # ---------------------------------------------------------- # 1) micro installieren (falls noch nicht vorhanden) # ---------------------------------------------------------- if command -v micro >/dev/null 2>&1; then echo "✅ micro ist bereits installiert: $(command -v micro)" else echo "📦 micro ist nicht installiert, versuche Installation..." if [[ "$OS_TYPE" == "linux" ]]; then if command -v apt >/dev/null 2>&1; then echo " → Linux mit apt erkannt, installiere micro über apt" sudo apt update sudo apt install -y micro else echo "❌ apt wurde nicht gefunden. Bitte micro manuell installieren." exit 1 fi elif [[ "$OS_TYPE" == "mac" ]]; then if command -v brew >/dev/null 2>&1; then echo " → macOS mit Homebrew erkannt, installiere micro über brew" brew install micro else echo "❌ Homebrew wurde nicht gefunden. Bitte zuerst Brew installieren:" echo " https://brew.sh/" exit 1 fi else echo "❌ Unbekanntes OS, kann micro nicht automatisch installieren." exit 1 fi fi echo # ---------------------------------------------------------- # 2) Verzeichnis für Git-Projekte anlegen # ---------------------------------------------------------- echo "📁 Stelle Verzeichnisstruktur sicher: $BASE_DIR" mkdir -p "$BASE_DIR" echo # ---------------------------------------------------------- # 3) Repo klonen oder aktualisieren # ---------------------------------------------------------- if [[ -d "$REPO_DIR/.git" ]]; then echo "🔄 Repo existiert bereits, aktualisiere: $REPO_DIR" cd "$REPO_DIR" # Hier werden Benutzername/Passwort (oder Token) bei HTTPS von git abgefragt git pull --rebase else echo "⬇️ Klone Repo nach: $REPO_DIR" cd "$BASE_DIR" git clone "$REPO_URL" "$REPO_NAME" cd "$REPO_DIR" fi # Kurzer Check if [[ ! -d "$REPO_DIR/micro" ]]; then echo "❌ Fehler: Verzeichnis $REPO_DIR/micro existiert nicht!" exit 1 fi if [[ ! -f "$REPO_DIR/micro/settings.json" || ! -f "$REPO_DIR/micro/bindings.json" ]]; then echo "❌ Fehler: micro/settings.json oder micro/bindings.json im Repo nicht gefunden!" exit 1 fi echo # ---------------------------------------------------------- # 4) micro-Konfig-Verzeichnis anlegen # ---------------------------------------------------------- echo "📁 Stelle micro-Konfigverzeichnis sicher: $MICRO_CONFIG_DIR" mkdir -p "$MICRO_CONFIG_DIR" echo # ---------------------------------------------------------- # 5) Hilfsfunktion: Symlink setzen mit Backup bei vorhandener Datei # ---------------------------------------------------------- link_file() { local target="$1" # Ziel in ~/.config/micro/... local source="$2" # Datei im Repo local name="$3" # Name für Log if [[ -L "$target" ]]; then echo "🔁 Entferne bestehenden Symlink für $name: $target" rm "$target" elif [[ -f "$target" ]]; then local backup="${target}.bak-$(date +%Y%m%d-%H%M%S)" echo "💾 Datei $target existiert, sichere nach: $backup" mv "$target" "$backup" fi echo "🔗 Setze Symlink: $target -> $source" ln -s "$source" "$target" } # ---------------------------------------------------------- # 6) Symlinks für settings.json & bindings.json setzen # ---------------------------------------------------------- echo "🔗 Setze Symlinks für micro-Konfiguration..." link_file "$MICRO_CONFIG_DIR/settings.json" "$REPO_DIR/micro/settings.json" "settings.json" link_file "$MICRO_CONFIG_DIR/bindings.json" "$REPO_DIR/micro/bindings.json" "bindings.json" echo echo "✅ Setup abgeschlossen!" echo " Repo: $REPO_DIR" echo " Config: $MICRO_CONFIG_DIR" echo echo "Tipp: Teste micro mit:" echo " micro ~/test.sh" echo "und probiere z.B. Ctrl+K zum Kommentieren."