name: PR for latest versions of tools
on:
  schedule:
    - cron: "0 8 * * *" # 3 AM EST

  workflow_dispatch:

permissions:
  contents: read

jobs:
  update-bootstrap-tools:
    runs-on: ubuntu-latest
    if: github.repository == 'anchore/grype' # only run for main repo
    steps:
      - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7

      - name: Bootstrap environment
        uses: ./.github/actions/bootstrap
        with:
          bootstrap-apt-packages: ""
          compute-fingerprints: "false"
          go-dependencies: false

      - name: "Update tool versions"
        id: latest-versions
        run: |
          make update-tools
          make list-tools
          
          export NO_COLOR=1
          delimiter="$(openssl rand -hex 8)"
          
          {
            echo "status<<${delimiter}"
            make list-tool-updates
            echo "${delimiter}"
          } >> $GITHUB_OUTPUT
          
          {
            echo "### Tool version status"
            echo "\`\`\`"
            make list-tool-updates
            echo "\`\`\`"
          } >> $GITHUB_STEP_SUMMARY

      - uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a #v2.1.0
        id: generate-token
        with:
          app_id: ${{ secrets.TOKEN_APP_ID }}
          private_key: ${{ secrets.TOKEN_APP_PRIVATE_KEY }}

      - uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c #v6.1.0
        with:
          signoff: true
          delete-branch: true
          branch: auto/latest-tools
          labels: dependencies
          commit-message: 'chore(deps): update tools to latest versions'
          title: 'chore(deps): update tools to latest versions'
          body: |
            ```
            ${{ steps.latest-versions.outputs.status }}
            ```
            This is an auto-generated pull request to update all of the tools to the latest versions.
          token: ${{ steps.generate-token.outputs.token }}
