name: Build
on:
  push:
    branches:
      - main
      - v*
    tags:
      - "*"
  pull_request:

jobs:
  single-header:
    name: Single header
    runs-on: ubuntu-latest
    permissions:
      contents: write # Grant write permission for contents to upload artifacts
    steps:
      - uses: actions/checkout@v4
        with:
          submodules: true

      - uses: actions/setup-python@v5
        with:
          python-version: "3.x"

      - name: Prepare CMake config
        run: cmake -S . -B build -DCLI11_SINGLE_FILE=ON

      - name: Make package
        run: cmake --build build --target package_source

      - name: Copy source packages
        run: |
          mkdir -p CLI11-Source
          cp build/CLI11-*-Source.* CLI11-Source
          cp build/CLI11-*-Source.* .

      - name: Make header
        run: cmake --build build --target CLI11-generate-single-file

      - uses: actions/upload-artifact@v4
        with:
          name: CLI11.hpp
          path: build/single-include/CLI11.hpp

      - uses: actions/upload-artifact@v4
        with:
          name: CLI11-Source
          path: CLI11-Source

      - name: Release
        uses: softprops/action-gh-release@v2
        if: startsWith(github.ref, 'refs/tags/')
        with:
          files: |
            build/single-include/CLI11.hpp
