# Copyright 2022 GlobalFoundries PDK 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: DRC regression testing

# Prevent keeping resources busy when a branch/PR is updated
# https://docs.github.com/en/actions/using-jobs/using-concurrency
concurrency:
  group: ${{ github.repository }}-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

on:
#  push:
#  pull_request:
  workflow_dispatch:

jobs:
  build_drc-matrix:
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
    outputs:
      drc_table: ${{ steps.set-matrix.outputs.drc_table }}
    steps:
      - uses: actions/checkout@v3
      - id: set-matrix
        run: |
          drc_table=`find -iname '*.drc' | grep -i rule_decks | grep -v main | grep -v tail | awk -F'/' '{printf "\"%s-%s\",", $2, $NF}' | sed -e "s/^/[/g" -e "s/,$/]/g" -e "s/.drc//g"`
          drc_table=`echo $drc_table | jq -c .`
          echo $drc_table
          echo "drc_table=$drc_table" >>$GITHUB_OUTPUT

  drc_regression:
    needs: build_drc-matrix
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
    strategy:
      fail-fast: false
      matrix:
        part: [drc]
        test: ${{ fromJson(needs.build_drc-matrix.outputs.drc_table) }}

    name: ${{ matrix.part }} | ${{ matrix.test }}

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: 'recursive'
      - name: Testing ${{ matrix.part }} for ${{ matrix.test }}
        run: |
          make test-"$(python3 -c 'print("${{ matrix.part }}".upper())')"-${{ matrix.test }}

  drc_switch:
    runs-on: ${{ fromJSON('["ubuntu-latest", "self-hosted"]')[github.repository == 'github/docs-internal'] }}
    strategy:
      fail-fast: false
      matrix:
        include:
          - { tool: klayout, part: drc, test: switch }

    name: ${{ matrix.part }} | ${{ matrix.test }}

    steps:
      - uses: actions/checkout@v3
        with:
          submodules: 'recursive'
      - name: Testing ${{ matrix.part }} for ${{ matrix.test }}
        run: |
          make test-"$(python3 -c 'print("${{ matrix.part }}".upper())')"-${{ matrix.test }}


