add micro setup script for Mac/Pi

This commit is contained in:
rene 2025-12-07 12:30:52 +01:00
parent 90919730c1
commit e66658f237

157
micro/install-micro-dotfiles.sh Executable file
View file

@ -0,0 +1,157 @@
#!/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."