name: Update dependencies
permissions:
  contents: read

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

jobs:
  update-dependencies:
    permissions:
      contents: write
      pull-requests: write
    name: Update dependencies
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1

      # Checkout the depot tools they are needed by roll_deps.sh
      - name: Checkout depot tools
        run: git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

      - name: Update PATH
        run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH

      - name: Download dependencies
        run: python3 utils/git-sync-deps

      - name: Setup git user information
        run: |
          git config user.name "GitHub Actions[bot]"
          git config user.email "<>"
          git checkout -b roll_deps

      - name: Update dependencies
        run: |
          utils/roll_deps.sh
          if [[ `git diff HEAD..origin/main --name-only | wc -l` == 0 ]]; then
            echo "changed=false" >> $GITHUB_OUTPUT
          else
            echo "changed=true" >> $GITHUB_OUTPUT
          fi
        id: update_dependencies
      - name: Push changes and create PR
        if: steps.update_dependencies.outputs.changed == 'true'
        run: |
          git push --force --set-upstream origin roll_deps
          # Create a PR. If it aready exists, the command fails, so ignore the return code.
          gh pr create --base main -f || true 
          # Add the 'kokoro:run' label so that the kokoro tests will be run.
          gh pr edit --add-label 'kokoro:run'
          gh pr merge --auto --squash
        env:
          GITHUB_TOKEN: ${{ github.token }}
