name: update-webclient-prebuilt

on:
  # manually triggered
  workflow_dispatch:

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

jobs:
  update-webclient-prebuilt:
    runs-on: ubuntu-latest

    steps:
      - name: Check out code
        uses: actions/checkout@v4

      - name: Run go get
        run: |
          GOPROXY=direct ./tool/go get github.com/tailscale/web-client-prebuilt
          ./tool/go mod tidy

      - name: Get access token
        uses: tibdex/github-app-token@b62528385c34dbc9f38e5f4225ac829252d1ea92 # v1.8.0
        id: generate-token
        with:
          # TODO(will): this should use the code updater app rather than licensing.
          # It has the same permissions, so not a big deal, but still.
          app_id: ${{ secrets.LICENSING_APP_ID }}
          installation_id: ${{ secrets.LICENSING_APP_INSTALLATION_ID }}
          private_key: ${{ secrets.LICENSING_APP_PRIVATE_KEY }}

      - name: Send pull request
        id: pull-request
        uses: peter-evans/create-pull-request@284f54f989303d2699d373481a0cfa13ad5a6666 #v5.0.1
        with:
          token: ${{ steps.generate-token.outputs.token }}
          author: OSS Updater <noreply+oss-updater@tailscale.com>
          committer: OSS Updater <noreply+oss-updater@tailscale.com>
          branch: actions/update-webclient-prebuilt
          commit-message: "go.mod: update web-client-prebuilt module"
          title: "go.mod: update web-client-prebuilt module"
          body: Triggered by ${{ github.repository }}@${{ github.sha }}
          signoff: true
          delete-branch: true
          reviewers: ${{ github.triggering_actor }}

      - name: Summary
        if: ${{ steps.pull-request.outputs.pull-request-number }}
        run: echo "${{ steps.pull-request.outputs.pull-request-operation}} ${{ steps.pull-request.outputs.pull-request-url }}" >> $GITHUB_STEP_SUMMARY
