# Read the Javadoc of RepoPatternDump for more info

name: RepoPattern

env:
    data_repo: hannibal002/SkyHanni-REPO
    repo_action: true

on:
    push:
    workflow_dispatch:

permissions: { }

jobs:
    regexes:
        runs-on: ubuntu-latest
        name: "Generate regexes"
        steps:
            -   uses: actions/checkout@v3
            -   name: Set up JDK 21
                uses: actions/setup-java@v3
                with:
                    java-version: 21
                    distribution: temurin
                    cache: gradle
            -   name: Setup gradle
                uses: gradle/gradle-build-action@v2
            -   name: Generate Repo Patterns using Gradle
                run: |
                    ./gradlew generateRepoPatterns --stacktrace
            -   uses: actions/upload-artifact@v3
                name: Upload generated repo regexes
                with:
                    name: Repo Regexes
                    path: versions/1.8.9/build/regexes/constants.json
    publish-regexes:
        runs-on: ubuntu-latest
        needs: regexes
        name: "Publish regexes"
        # 511310721 is the Repository ID for SkyHanni
        if: ${{ 'push' == github.event_name && 'beta' == github.ref_name && '511310721' == github.repository_id }}
        steps:
            -   uses: actions/checkout@v3
                with:
                    repository: ${{ env.data_repo }}
                    branch: main
            -   uses: actions/download-artifact@v3
                name: Upload generated repo regexes
                with:
                    name: Repo Regexes
            -   name: Commit generated regex
                run: |
                    mkdir -p constants/
                    new_cmp="$(jq -S '.regexes' < constants.json)"
                    old_cmp="$(jq -S '.regexes' < constants/regexes.json)"
                    if [ "$new_cmp" = "$old_cmp" ]; then
                        echo Old and new are the same. We are in a never ending loop.
                        exit 0
                    fi
                    mv constants.json constants/regexes.json
                    git config user.name 'github-actions[bot]'
                    git config user.email 'github-action@users.noreply.github.com'
                    git add constants/regexes.json
                    git commit -m "Update regexes based on https://github.com/hannibal002/Skyhanni/commit/$GITHUB_SHA"
            -   name: Publish new repository
                run: |
                    git config --unset-all http.https://github.com/.extraheader
                    git remote add restream https://user:${{secrets.REPO_PAT}}@github.com/${{env.data_repo}}
                    git push restream HEAD:main
