#!/data/data/com.termux/files/usr/bin/bash # HPOS — Startpunkt auf dem Telefon. # # Dieses Skript ist absichtlich das EINZIGE, was per adb aufs Telefon kommt. # Alles Weitere holt es sich per git. Der Grund: danach ist das Repo auf dem # Telefon eine Arbeitskopie, keine Kopie. Aktualisieren heißt dann schlicht # # cd ~/hpos && git pull # # statt jedes Mal wieder den PC anzuwerfen und Dateien zu schieben. # # Aufruf in Termux: # bash /sdcard/hpos-init.sh # bash /sdcard/hpos-init.sh https://beispiel/anderes-repo.git set -uo pipefail REPO="${1:-${HPOS_REPO:-@@REPO_URL@@}}" ZIEL="$HOME/hpos" if [ -t 1 ]; then C_OK=$'\033[32m'; C_WARN=$'\033[33m'; C_ERR=$'\033[31m' C_HEAD=$'\033[1;36m'; C_DIM=$'\033[2m'; C_OFF=$'\033[0m' else C_OK=""; C_WARN=""; C_ERR=""; C_HEAD=""; C_DIM=""; C_OFF="" fi kopf() { printf '\n%s══ %s ══%s\n' "$C_HEAD" "$*" "$C_OFF"; } ok() { printf '%s ✓%s %s\n' "$C_OK" "$C_OFF" "$*"; } warn() { printf '%s !%s %s\n' "$C_WARN" "$C_OFF" "$*"; } fehl() { printf '%s ✗%s %s\n' "$C_ERR" "$C_OFF" "$*"; } hinweis() { printf '%s %s%s\n' "$C_DIM" "$*" "$C_OFF"; } case "$REPO" in @@*) fehl "Keine Repo-Adresse hinterlegt." hinweis "Aufruf mit Adresse: bash /sdcard/hpos-init.sh " exit 1 ;; esac # Benutzernamen aus der Adresse entfernen. Lesen geht anonym; steht ein Name in # der URL, fragt git trotzdem nach einem Passwort — auf einer Bildschirmtastatur # eine unnötige Quälerei. Zum Schreiben braucht man ihn ohnehin nur auf dem PC. REPO_ROH="$REPO" REPO=$(printf '%s' "$REPO" | sed -E 's#^(https?://)[^/@]+@#\1#') [ "$REPO" != "$REPO_ROH" ] && ANONYM=1 || ANONYM=0 kopf "HPOS — Ersteinrichtung auf dem Telefon" hinweis "Repo: $REPO" [ "$ANONYM" = 1 ] && hinweis "(Benutzername entfernt — gelesen wird anonym)" # ── git ────────────────────────────────────────────────────────────────────── kopf "git" if command -v git >/dev/null 2>&1; then ok "bereits vorhanden ($(git --version))" else pkg update -y >/dev/null 2>&1 if pkg install -y git; then ok "installiert" else fehl "Installation von git fehlgeschlagen"; exit 1; fi fi # Das Telefon liest nur. Es soll nie versehentlich versuchen zurückzuschreiben — # ein Push von hier wäre weder gewollt noch möglich. git config --global credential.helper "" 2>/dev/null || true # ── Holen oder aktualisieren ───────────────────────────────────────────────── kopf "Repo" if [ -d "$ZIEL/.git" ]; then ok "Arbeitskopie vorhanden — aktualisiere" if git -C "$ZIEL" pull --ff-only; then ok "aktuell" else warn "git pull fehlgeschlagen." hinweis "Lokale Änderungen? Dann: cd ~/hpos && git stash && git pull" exit 1 fi else # --depth reicht nicht: für 'git pull' später brauchen wir eine vollwertige # Arbeitskopie, kein abgeschnittenes Archiv. if git clone "$REPO" "$ZIEL"; then ok "geklont nach $ZIEL" else fehl "git clone fehlgeschlagen." hinweis "Adresse war: $REPO" hinweis "Ist das Repo öffentlich lesbar? Ohne das braucht es Zugangsdaten," hinweis "und die gehören nicht aufs Telefon." exit 1 fi fi chmod +x "$ZIEL"/spike/*.sh "$ZIEL"/spike/inner/*.sh 2>/dev/null || true # ── Weiter ─────────────────────────────────────────────────────────────────── kopf "Fertig" cat <