# This workflow will build a package using Gradle and then publish it to GitHub packages when a release is created
# For more information see: https://github.com/actions/setup-java/blob/main/docs/advanced-usage.md#Publishing-using-gradle

name: Update Changelog

on:
  workflow_dispatch:
  schedule:
    - cron: '0 10 * * *'

jobs:
  build:

    runs-on: ubuntu-latest
    if: false

    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 300
          # See end of file updateChangeslog.yml for explanation of this secret
          ssh-key: ${{ secrets.PUSH_TO_PROTECTED_BRANCH_SECRET }}
      - name: Get tags
        run: git fetch --tags origin
      - name: Set up JDK 17
        uses: actions/setup-java@v2
        with:
          java-version: '17'
          distribution: 'adopt'
          server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
          settings-path: ${{ github.workspace }} # location for the settings.xml file

        # The last successful job was marked with a tag
      - name: Get commit with last workflow
        run: |
          echo "LAST_COMMIT=$(git rev-list -n 1 tags/workflow-changelog)" >> $GITHUB_ENV

      - name: Update changelog
        run: ./gradlew --no-configuration-cache updateChangelog
        env:
          SUCCESS_COMMIT: ${{ env.LAST_COMMIT }}

      - name: Commit changes
        uses: stefanzweifel/git-auto-commit-action@v4
        with:
          commit_message: Update changelog. Action id - ${{ github.run_id }}
          commit_user_name: IdeaVim Bot
          commit_user_email: maintainers@ideavim.dev
          commit_author: IdeaVim Bot <maintainers@ideavim.dev>
          file_pattern: CHANGES.md

      - name: Update tags
        run: |
          git tag --delete workflow-changelog || true
          git push origin :refs/tags/workflow-changelog || true
          git tag workflow-changelog
          git push origin workflow-changelog

# Regarding secrets.PUSH_TO_PROTECTED_BRANCH_SECRET - we use branch protection rules to automate merges of the
#   dependabot updates. See mergeDependatobPR.yml file.
# However, it turned out that GitHub accepts pushes from the actions as a PR and requires checks, that are always
#   false for pushing from actions.
# This secret is created to implement the workaround described in https://stackoverflow.com/a/76135647/3124227