name: Build

# build the project whenever the configuration is changed

on:
  workflow_dispatch:
  pull_request:
    paths:
      - 'README.md'       # check markdown is valid
      - 'MANIFEST.in'     # check packaging
      - 'pyproject.toml'  # check build config
      - 'setup.cfg'       # check deps and project config
      - '.gitignore'
      - '.github/workflows/build.yml'

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

defaults:
  run:
    shell: bash -leo pipefail {0}

env:
  FORCE_COLOR: 2
  PIP_PROGRESS_BAR: off

jobs:
  test:
    runs-on: ${{ matrix.os }}
    timeout-minutes: 10
    strategy:
      fail-fast: false
      matrix:
        os: ['ubuntu-latest', 'macos-latest']
        python: ['3.12', '3']
    steps:
      - name: Checkout
        uses: actions/checkout@v5

      - name: Setup Python
        uses: mamba-org/setup-micromamba@v2
        with:
          cache-environment: true
          post-cleanup: 'all'
          environment-name: cylc-build
          create-args: >-
            python=${{ matrix.python }}

      - name: Build
        uses: cylc/release-actions/build-python-package@v1

      - name: Inspect
        run: |
          unzip -l dist/*.whl | tee files
          grep -E 'cylc_flow.*.dist-info/.*COPYING' files
          grep 'cylc/flow/py.typed' files
          grep 'cylc/flow/etc' files
          grep 'cylc/flow/etc/cylc-completion.bash' files
