Initial push mit Projektdateien

This commit is contained in:
2026-07-17 18:43:16 +02:00
parent cd432c24d1
commit 3ccc28d06c
Executable
+123
View File
@@ -0,0 +1,123 @@
#!/bin/bash
# --- KONFIGURATION ---
FORGEJO_DOMAIN="hjkgitunix.dedyn.io"
FORGEJO_SSH_PORT="222"
FORGEJO_USER="hans-jurgen"
# ---------------------
# Titel für KeePassXC setzen (Linux Mint kompatibel)
echo -ne "\033]0;Forgejo-Token-Prompt\007"
# 1. PRÜFUNG / ERSTELLUNG .gitignore
if [ ! -f .gitignore ]; then
echo "📄 Keine .gitignore gefunden. Erstelle Standard-Vorlage..."
cat <<EOF > .gitignore
# --- SICHERHEIT & GEHEIMNISSE ---
.env
.env.*
*.pem
*.key
secrets.*
config/secrets.*
forgejo-push
# --- PYTHON ---
__pycache__/
*.py[cod]
venv/
.venv/
# --- DOCKER ---
*.log
docker-compose.override.yml
data/
db_data/
# --- ANDROID ---
.gradle/
build/
local.properties
*.apk
*.keystore
# --- IDEs & OS ---
.idea/
.vscode/
.DS_Store
EOF
echo "✅ .gitignore wurde erstellt."
echo "⚠️ STOPP: Bitte prüfe die .gitignore auf weitere sensible Daten."
read -p "Möchtest du mit dem Push fortfahren? (y/n): " confirm
if [[ $confirm != "y" ]]; then
echo "❌ Abbruch durch Nutzer. Bitte .gitignore bearbeiten und Skript neu starten."
exit 1
fi
fi
# 2. TOKEN-ABFRAGE (KeePassXC Auto-Type bereit)
#if [ -z "$FORGEJO_TOKEN" ]; then
# echo "🔑 Warte auf API-Token (KeePassXC: Strg+Alt+A)..."
# # -p sorgt dafür, dass der Prompt stehen bleibt, bis Auto-Type feuert
# read -sp "Token eingeben: " FORGEJO_TOKEN
FORGEJO_TOKEN=4f86922f29941c5bdaebe4514c0f020f038f1313
echo -e "\n✅ Token empfangen."
#fi
# 3. REPO-NAME UND API-LOGIK
REPO_NAME=${PWD##*/}
echo "🚀 Vorbereitung für Repository: $REPO_NAME"
# Repo über API erstellen (Vermeidet 'Push to create' Fehler)
RESPONSE=$(curl -s -w "%{http_code}" \
-H "Authorization: token $FORGEJO_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"name\":\"$REPO_NAME\", \"private\":false}" \
"https://$FORGEJO_DOMAIN/api/v1/user/repos")
# Extrahiere den HTTP-Statuscode (die letzten 3 Zeichen)
HTTP_CODE=$(echo "$RESPONSE" | grep -oE '[0-9]{3}$')
if [ "$HTTP_CODE" -eq 201 ]; then
echo "✅ Repository erfolgreich auf Forgejo erstellt."
elif [ "$HTTP_CODE" -eq 409 ]; then
echo "️ Repository existiert bereits auf Forgejo (Status 409)."
else
echo "❌ Fehler beim API-Aufruf. Status-Code: $HTTP_CODE"
echo "Antwort vom Server: $(echo "$RESPONSE" | sed 's/[0-9]\{3\}$//')"
exit 1
fi
# 4. GIT INITIALISIERUNG & PUSH
if [ ! -d .git ]; then
echo "Initializing new Git repository..."
git init
git checkout -b main
fi
# Remote immer frisch setzen
git remote remove origin 2>/dev/null
git remote add origin "ssh://git@${FORGEJO_DOMAIN%*/}:${FORGEJO_SSH_PORT}/${FORGEJO_USER}/${REPO_NAME}.git"
# Änderungen hinzufügen
git add .
# Prüfen, ob Dateien zum Committen bereitstehen (Staging Area)
if ! git diff --cached --quiet; then
echo "📦 Committing changes..."
git commit -m "Initial push mit Projektdateien"
else
echo "️ Nichts zu committen (alles bereits aktuell)."
fi
# Push zum Server
echo "📤 Pushe Daten zu Gitea..."
if git push -u origin main; then
echo "-----------------------------------------------------------"
echo "🎉 Erfolg! Projekt online: https://$FORGEJO_DOMAIN$FORGEJO_USER/$REPO_NAME"
echo "-----------------------------------------------------------"
else
echo "❌ Push fehlgeschlagen."
fi