name: 🚨 Check Dependency Artifacts

on:
  push:
    branches:
      - "long_lived/**"
      - main
      - "release/**"
  release:
    types: [published]
  pull_request:
    branches:
      - "**"

concurrency:
  group: ${{ github.event_name == 'pull_request' && format('{0}-{1}', github.workflow_ref, github.event.pull_request.number) || github.run_id }}
  cancel-in-progress: true

jobs:
  check_dependency_artifacts:
    name: ${{ matrix.os.name }} ${{ matrix.arch.name }} ${{ matrix.python-version }}
    runs-on: ${{ matrix.os.runs-on[matrix.arch.matrix] }}
    strategy:
      fail-fast: false
      matrix:
        os:
          - name: Linux
            matrix: linux
            runs-on:
              intel: ubuntu-latest
              arm: [linux, arm64]
          - name: macOS
            matrix: macos
            runs-on:
              intel: macos-13
              arm: macos-13-arm64
          - name: Windows
            matrix: windows
            runs-on:
              intel: windows-latest
        arch:
          - name: ARM64
            matrix: arm
          - name: Intel
            matrix: intel
        python-version: ["3.9", "3.10", "3.11", "3.12"]
        exclude:
          - os:
              matrix: windows
            arch:
              matrix: arm

    steps:
      - uses: Chia-Network/actions/clean-workspace@main

      - name: Checkout Code
        uses: actions/checkout@v4

      - uses: Chia-Network/actions/setup-python@main
        with:
          python-version: ${{ matrix.python-version }}
          force-pyenv: ${{ matrix.os.matrix == 'macos' && matrix.arch.matrix == 'intel' }}

      - name: Setup Poetry
        if: matrix.os.matrix != 'windows'
        run: |
          sh setup-poetry.sh ${{ matrix.python-version }}

      - name: Setup Poetry
        if: matrix.os.matrix == 'windows'
        run: |
          ./Setup-poetry.ps1 ${{ matrix.python-version }}

      - name: Check Wheel Availability
        run: python build_scripts/check_dependency_artifacts.py
