name: Node version

on:
  push:
    branches:
      - main
    paths:
      - Dockerfile

jobs:
  version-sync:
    name: Synchronise node-version
    runs-on: ubuntu-latest
    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Get Node version from Dockerfile
        run: |
          echo "NODE_VERSION=$(grep 'FROM node:' Dockerfile | cut -d ':' -f2 | cut -d '-' -f1 | tr -d '\n')" >> $GITHUB_ENV

      - name: Synchronise Node version in actions
        run: |
          sed -i -E s/'([\ \t]+)node-version: .+'/'\1node-version: ${{ env.NODE_VERSION }}'/g .github/workflows/*

      - name: Set up Node JS
        uses: actions/setup-node@v4
        with:
          node-version: 22.6.0

      - name: Regenerate ui package-lock.json
        run: cd ui && npm i

      - name: Create Pull Request
        id: cpr
        uses: peter-evans/create-pull-request@v6.1.0
        with:
          token: ${{ secrets.GH_REPO_TOKEN }}
          author: "Łukasz Mierzwa <l.mierzwa@gmail.com>"
          commit-message: "chore(actions): use latest Node version"
          branch: version-sync-node
          delete-branch: true
          title: "chore(actions): use latest Node version"

      - name: Check outputs
        run: |
          echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
          echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"

      - name: Enable Pull Request Automerge
        if: steps.cpr.outputs.pull-request-operation == 'created'
        run: gh pr merge --merge --auto version-sync-node
        env:
          GH_TOKEN: ${{ secrets.GH_REPO_TOKEN }}
