# 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

env:
    CHIP_NO_LOG_TIMESTAMPS: true
    # XXX: Workaround for https://github.com/actions/cache/issues/1141
    SEGMENT_DOWNLOAD_TIMEOUT_MINS: 3

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

        runs-on: ubuntu-20.04
        container:
            image: connectedhomeip/chip-build:0.7.3
        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 --allow-changing-global-git-config --shallow --platform linux

            - name: Bootstrap cache
              uses: actions/cache@v3
              timeout-minutes: 10
              with:
                  key: ${{ runner.os }}-env-${{ hashFiles('scripts/setup/*', 'third_party/pigweed/**') }}
                  path: |
                      .environment
                      build_overrides/pigweed_environment.gni
            - name: Bootstrap
              timeout-minutes: 10
              run: bash scripts/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
