diff --git a/.gitea/workflows/update.yml b/.gitea/workflows/update.yml index 75bc55f..8f748f6 100644 --- a/.gitea/workflows/update.yml +++ b/.gitea/workflows/update.yml @@ -18,7 +18,13 @@ jobs: - name: Notwendige Abhängigkeiten installieren shell: sh run: | - apk add --no-cache bash jq + apk add --no-cache bash jq git + + - name: Repository klonen + run: | + git clone https://entwicklung.flurneuordnung-sachsen.de/AG_QGIS/Repository.git repo + cd repo + git checkout feature/release - name: Payload dekodieren und anzeigen run: | @@ -50,7 +56,129 @@ jobs: echo "URL: ${{ steps.payload.outputs.url }}" echo "Changelog: ${{ steps.payload.outputs.changelog }}" - # Ab hier deine eigentliche Logik, z.B. Repository-Datei aktualisieren: - # - name: plugins.json aktualisieren - # run: | - # ... \ No newline at end of file + - name: XML-Datei bestimmen + id: xmlfile + run: | + case "${{ steps.payload.outputs.channel }}" in + stable) FILE="plugins.xml" ;; + testing) FILE="plugins-testing.xml" ;; + unstable) FILE="plugins-unstable.xml" ;; + esac + + echo "file=$FILE" >> $GITHUB_OUTPUT + echo "Nutze Datei: $FILE" + + - name: XML-Datei initialisieren + run: | + cd repo + FILE="${{ steps.xmlfile.outputs.file }}" + + if [ ! -s "$FILE" ]; then + echo "" > "$FILE" + fi + + - name: Alten Plugin-Eintrag entfernen + run: | + cd repo + FILE="${{ steps.xmlfile.outputs.file }}" + PLUGIN="${{ steps.payload.outputs.plugin }}" + + # Entfernt den kompletten Plugin-Block + sed -i "//d" "$FILE" + + - name: Neuen Plugin-Eintrag einfügen + run: | + cd repo + FILE="${{ steps.xmlfile.outputs.file }}" + + PLUGIN="${{ steps.payload.outputs.plugin }}" + VERSION="${{ steps.payload.outputs.version }}" + DESCRIPTION="${{ steps.payload.outputs.description }}" + AUTHOR="${{ steps.payload.outputs.author }}" + EMAIL="${{ steps.payload.outputs.email }}" + URL="${{ steps.payload.outputs.url }}" + CHANGELOG="${{ steps.payload.outputs.changelog }}" + + ENTRY=$(cat < + $DESCRIPTION + $AUTHOR + $EMAIL + $URL + $CHANGELOG + + EOF + ) + + # Eintrag vor einfügen + sed -i "/<\/plugins>/i $ENTRY" "$FILE" + + - name: Änderungen committen und pushen + run: | + cd repo + git config user.name "Release Bot" + git config user.email "release-bot@noreply.localhost" + + git add . + git commit -m "Update ${{ steps.payload.outputs.plugin }} ${{ steps.payload.outputs.version }} (${{ steps.payload.outputs.channel }})" + git push + + + + +# name: Update Plugin (Empfang) + +# on: +# workflow_dispatch: +# inputs: +# payload: +# description: 'Base64-kodierter JSON-Payload' +# required: true + +# jobs: +# update-plugin: +# runs-on: alpine-latest +# defaults: +# run: +# shell: bash + +# steps: +# - name: Notwendige Abhängigkeiten installieren +# shell: sh +# run: | +# apk add --no-cache bash jq + +# - name: Payload dekodieren und anzeigen +# run: | +# echo "Dekodierter Payload:" +# echo "${{ github.event.inputs.payload }}" | base64 -d + +# - name: Payload als JSON einlesen +# id: payload +# run: | +# DECODED=$(echo "${{ github.event.inputs.payload }}" | base64 -d) + +# echo "plugin=$(echo "$DECODED" | jq -r '.plugin')" >> $GITHUB_OUTPUT +# echo "version=$(echo "$DECODED" | jq -r '.version')" >> $GITHUB_OUTPUT +# echo "channel=$(echo "$DECODED" | jq -r '.channel')" >> $GITHUB_OUTPUT +# echo "description=$(echo "$DECODED" | jq -r '.description')" >> $GITHUB_OUTPUT +# echo "author=$(echo "$DECODED" | jq -r '.author')" >> $GITHUB_OUTPUT +# echo "email=$(echo "$DECODED" | jq -r '.email')" >> $GITHUB_OUTPUT +# echo "url=$(echo "$DECODED" | jq -r '.url')" >> $GITHUB_OUTPUT +# echo "changelog=$(echo "$DECODED" | jq -r '.changelog')" >> $GITHUB_OUTPUT + +# - name: Empfangene Daten ausgeben +# run: | +# echo "Plugin: ${{ steps.payload.outputs.plugin }}" +# echo "Version: ${{ steps.payload.outputs.version }}" +# echo "Kanal: ${{ steps.payload.outputs.channel }}" +# echo "Beschreibung:${{ steps.payload.outputs.description }}" +# echo "Autor: ${{ steps.payload.outputs.author }}" +# echo "E-Mail: ${{ steps.payload.outputs.email }}" +# echo "URL: ${{ steps.payload.outputs.url }}" +# echo "Changelog: ${{ steps.payload.outputs.changelog }}" + +# # Ab hier deine eigentliche Logik, z.B. Repository-Datei aktualisieren: +# # - name: plugins.json aktualisieren +# # run: | +# # ... \ No newline at end of file