123 lines
4.3 KiB
Bash
Executable File
123 lines
4.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
GITEA_URL="https://gitea.kasimirat.de"
|
|
GITEA_USER="thomas"
|
|
GITEA_TOKEN="289ac11a4ad2938fa34e6baa29bec74bdbcbb57b"
|
|
|
|
validate_repo_name() {
|
|
local name="$1"
|
|
# Leerzeichen durch Bindestrich ersetzen
|
|
name="${name// /-}"
|
|
# Prüfen auf erlaubte Zeichen
|
|
if [[ ! "$name" =~ ^[A-Za-z0-9._-]+$ ]]; then
|
|
echo "Ungültiger Repo-Name! Nur Buchstaben, Zahlen, Bindestrich (-), Unterstrich (_) und Punkt (.) sind erlaubt."
|
|
return 1
|
|
fi
|
|
echo "$name"
|
|
}
|
|
|
|
while true; do
|
|
clear
|
|
echo "==== Git & Gitea Menü ===="
|
|
echo "1) Repository klonen"
|
|
echo "2) Status anzeigen"
|
|
echo "3) Pull"
|
|
echo "4) Push"
|
|
echo "5) Branch wechseln"
|
|
echo "6) Commit"
|
|
echo "7) Gitea: Repo-Liste anzeigen"
|
|
echo "8) Gitea: Neues Repo anlegen"
|
|
echo "9) Gitea: Issue anzeigen"
|
|
echo "10) Gitea: Issue erstellen"
|
|
echo "q) Beenden"
|
|
echo
|
|
read -p "Bitte Auswahl eingeben: " auswahl
|
|
|
|
case $auswahl in
|
|
1)
|
|
read -p "Repo-URL (z.B. https://gitea.kasimirat.de/thomas/repo.git, z für zurück): " url
|
|
[[ "$url" =~ ^[zZ]$ ]] && continue
|
|
repo_name=$(basename -s .git "$url")
|
|
valid_name=$(validate_repo_name "$repo_name") || { read -p "Weiter mit Enter..."; continue; }
|
|
url_valid=$(echo "$url" | sed "s|$repo_name|$valid_name|")
|
|
git clone "$url_valid"
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
2)
|
|
git status
|
|
read -p "Weiter mit Enter... (z für zurück)" z; [[ "$z" =~ ^[zZ]$ ]] && continue
|
|
;;
|
|
3)
|
|
git pull
|
|
read -p "Weiter mit Enter... (z für zurück)" z; [[ "$z" =~ ^[zZ]$ ]] && continue
|
|
;;
|
|
4)
|
|
git push
|
|
read -p "Weiter mit Enter... (z für zurück)" z; [[ "$z" =~ ^[zZ]$ ]] && continue
|
|
;;
|
|
5)
|
|
git branch
|
|
read -p "Branch-Name (z für zurück): " br
|
|
[[ "$br" =~ ^[zZ]$ ]] && continue
|
|
git checkout "$br"
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
6)
|
|
git status
|
|
read -p "Commit-Message (z für zurück): " msg
|
|
[[ "$msg" =~ ^[zZ]$ ]] && continue
|
|
git add .
|
|
git commit -m "$msg"
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
7)
|
|
curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/user/repos" | jq '.[] | .full_name'
|
|
read -p "Weiter mit Enter... (z für zurück)" z; [[ "$z" =~ ^[zZ]$ ]] && continue
|
|
;;
|
|
8)
|
|
read -p "Neuer Repo-Name (z für zurück): " repo
|
|
[[ "$repo" =~ ^[zZ]$ ]] && continue
|
|
valid_name=$(validate_repo_name "$repo") || { read -p "Weiter mit Enter..."; continue; }
|
|
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: token $GITEA_TOKEN" \
|
|
-d '{"name":"'$valid_name'","private":false}' "$GITEA_URL/api/v1/user/repos" > /dev/null
|
|
echo "Repository mit dem Namen $valid_name wurde angelegt."
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
9)
|
|
read -p "Repo (z.B. thomas/repo, z für zurück): " repo
|
|
[[ "$repo" =~ ^[zZ]$ ]] && continue
|
|
user_part=$(echo "$repo" | cut -d'/' -f1)
|
|
repo_part=$(echo "$repo" | cut -d'/' -f2)
|
|
valid_repo_part=$(validate_repo_name "$repo_part") || { read -p "Weiter mit Enter..."; continue; }
|
|
repo_valid="$user_part/$valid_repo_part"
|
|
read -p "Issue-Nummer (z für zurück): " num
|
|
[[ "$num" =~ ^[zZ]$ ]] && continue
|
|
curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$repo_valid/issues/$num" | jq
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
10)
|
|
read -p "Repo (z.B. thomas/repo, z für zurück): " repo
|
|
[[ "$repo" =~ ^[zZ]$ ]] && continue
|
|
user_part=$(echo "$repo" | cut -d'/' -f1)
|
|
repo_part=$(echo "$repo" | cut -d'/' -f2)
|
|
valid_repo_part=$(validate_repo_name "$repo_part") || { read -p "Weiter mit Enter..."; continue; }
|
|
repo_valid="$user_part/$valid_repo_part"
|
|
read -p "Titel (z für zurück): " titel
|
|
[[ "$titel" =~ ^[zZ]$ ]] && continue
|
|
read -p "Beschreibung (z für zurück): " desc
|
|
[[ "$desc" =~ ^[zZ]$ ]] && continue
|
|
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: token $GITEA_TOKEN" \
|
|
-d '{"title":"'$titel'","body":"'$desc'"}' "$GITEA_URL/api/v1/repos/$repo_valid/issues" > /dev/null
|
|
echo "Issue erstellt."
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
q)
|
|
echo "Beende Menü."
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Ungültige Auswahl."
|
|
read -p "Weiter mit Enter..."
|
|
;;
|
|
esac
|
|
done |