2025-12-07 12:30:52 +01:00
|
|
|
#!/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
|
|
|
|
|
|
2026-03-07 16:58:16 +01:00
|
|
|
REPO_URL="https://git.motocamp.de/rene/dotfiles-rene.git"
|
2025-12-07 12:30:52 +01:00
|
|
|
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."
|