# Copyright (c) 2020 Project CHIP Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

name: ZAP - Regenerate

on:
    workflow_dispatch:

concurrency:
    group: ${{ github.ref }}-${{ github.workflow }}-${{ (github.event_name == 'pull_request' && github.event.number) || (github.event_name == 'workflow_dispatch' && github.run_number) || github.sha }}
    cancel-in-progress: true

jobs:
    zap_regeneration:
        name: ZAP Regeneration
        timeout-minutes: 60

        runs-on: ubuntu-20.04
        container:
            image: connectedhomeip/chip-build:0.6.34
        defaults:
            run:
                shell: sh
        if: github.actor != 'restyled-io[bot]'

        steps:
            - uses: Wandalen/wretry.action@v1.0.36
              name: Checkout
              with:
                  action: actions/checkout@v3
                  with: |
                      submodules: true
                      token: ${{ github.token }}
                  attempt_limit: 3
                  attempt_delay: 2000
            - name: Checkout submodules
              run: scripts/checkout_submodules.py --shallow --platform linux
            - name: Bootstrap
              timeout-minutes: 10
              run: scripts/build/gn_bootstrap.sh
            - name: Generate all
              timeout-minutes: 5
              run: ./scripts/run_in_build_env.sh scripts/tools/zap_regen_all.py
            - name: Ensure git works in current working directory
              run: git config --global --add safe.directory `pwd`
            - name: Add uncommitted changes
              run: git add .
            - name: Fix upstream
              run: |
                  git remote set-url origin https://x-access-token:$COMMITTER_TOKEN@github.com/$GITHUB_REPOSITORY.git
                  git config --global user.email "$USER_EMAIL"
                  git config --global user.name "$USER_NAME"
              env:
                  COMMITTER_TOKEN: ${{ secrets.MATTER_PAT }}
                  USER_EMAIL: ${{ secrets.MATTER_PAT_EMAIL }}
                  USER_NAME: ${{ secrets.MATTER_PAT_NAME }}
                  GITHUB_REPOSITORY: ${{ github.GITHUB_REPOSITORY }}
            - name: Commit
              run: git commit -a -m "Regenerating ZAP"
            - name: Push
              run: git push
