name: update-flake

on:
  # run action when a change lands in the main branch which updates go.mod. Also
  # allow manual triggering.
  push:
    branches:
      - main
    paths:
      - go.mod
      - .github/workflows/update-flake.yml
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

jobs:
  update-flake:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2

      - name: Run update-flakes
        run: ./update-flake.sh

      - name: Get access token
        uses: actions/create-github-app-token@df432ceedc7162793a195dd1713ff69aefc7379e # v2.0.6
        id: generate-token
        with:
          # Get token for app: https://github.com/apps/tailscale-code-updater
          app-id: ${{ secrets.CODE_UPDATER_APP_ID }}
          private-key: ${{ secrets.CODE_UPDATER_APP_PRIVATE_KEY }}

      - name: Send pull request
        uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e #v7.0.8
        with:
          token: ${{ steps.generate-token.outputs.token }}
          author: Flakes Updater <noreply+flakes-updater@tailscale.com>
          committer: Flakes Updater <noreply+flakes-updater@tailscale.com>
          branch: flakes
          commit-message: "go.mod.sri: update SRI hash for go.mod changes"
          title: "go.mod.sri: update SRI hash for go.mod changes"
          body: Triggered by ${{ github.repository }}@${{ github.sha }}
          signoff: true
          delete-branch: true
          reviewers: danderson
