add micro setup script for Mac/Pi
This commit is contained in:
parent
90919730c1
commit
e66658f237
1 changed files with 157 additions and 0 deletions
157
micro/install-micro-dotfiles.sh
Executable file
157
micro/install-micro-dotfiles.sh
Executable 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."
|
||||
Loading…
Add table
Add a link
Reference in a new issue