name: Sync Check with Upstream on: schedule: - cron: '0 3 * * 1' # jeden Montag um 3 Uhr nachts workflow_dispatch: jobs: check-sync: runs-on: ubuntu-latest strategy: fail-fast: false matrix: version: ['3.14', '3.15'] steps: - name: Translation-Repo auschecken uses: actions/checkout@v4 with: ref: ${{ matrix.version }} - name: Passenden CPython-Branch auschecken uses: actions/checkout@v4 with: repository: python/cpython ref: ${{ matrix.version }} path: cpython-src - name: gettext installieren (für msgmerge) run: sudo apt-get update && sudo apt-get install -y gettext - name: Python + Sphinx einrichten run: | python3 -m venv cpython-src/Doc/venv cpython-src/Doc/venv/bin/pip install sphinx blurb - name: Frische POT-Dateien bauen run: | cd cpython-src/Doc PATH="./venv/bin:$PATH" make gettext - name: powrap installieren (für einheitliche Zeilenumbrüche) run: pip install --break-system-packages powrap - name: msgmerge gegen alle .po-Dateien laufen lassen run: | for pot in $(find cpython-src/Doc/build/gettext -name "*.pot"); do rel="${pot#cpython-src/Doc/build/gettext/}" po="${rel%.pot}.po" if [ -f "$po" ]; then msgmerge --quiet --update --backup=none "$po" "$pot" else mkdir -p "$(dirname "$po")" msginit --no-translator --locale=de --input="$pot" --output-file="$po" fi powrap "$po" done - name: Prüfen, ob sich etwas geändert hat id: check run: | if [ -z "$(git status --porcelain)" ]; then echo "changed=false" >> "$GITHUB_OUTPUT" else echo "changed=true" >> "$GITHUB_OUTPUT" fi - name: PR mit den Aktualisierungen erstellen if: steps.check.outputs.changed == 'true' uses: peter-evans/create-pull-request@v6 with: branch: sync-upstream-${{ matrix.version }} base: ${{ matrix.version }} title: "Sync mit Upstream-Änderungen (${{ matrix.version }})" body: | Automatisch erkannte Änderungen im englischen Original-Quelltext. Neue `fuzzy`-Markierungen und fehlende Strings bitte manuell prüfen. commit-message: "Sync mit Upstream-Änderungen (${{ matrix.version }})"