diff --git a/.copier-answers.yaml b/.copier-answers.yaml index f538238..d46cef4 100644 --- a/.copier-answers.yaml +++ b/.copier-answers.yaml @@ -1,8 +1,9 @@ # Changes here will be overwritten by Copier -_commit: c2ea129 +_commit: 225aba1 _src_path: https://github.com/python-project-templates/base.git add_docs: true add_extension: cppjswasm +add_vcpkg: false add_wiki: true email: 3105306+timkpaine@users.noreply.github.com github: python-project-templates diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 61b8f50..38f775a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -35,96 +35,104 @@ jobs: node-version: [22.x] steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - - uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 - with: - version: ${{ matrix.python-version }} - - - uses: actions-ext/node/setup@0ea5bdcd24d2488b28e16bf611b446a2f8e1e12f - with: - version: ${{ matrix.node-version }} - - - uses: actions-ext/cpp/setup@51c484ef64088c62434226039d0e3359f5fc8df6 - - - uses: mymindstorm/setup-emsdk@4528d102f7230f0e7b276855c01ea1159be0e984 # v16 - - - name: Install dependencies - run: make develop - - - name: Lint - run: make lint - if: matrix.os == 'ubuntu-latest' - - - name: Checks - run: make checks - if: matrix.os == 'ubuntu-latest' - - - name: Test - run: make coverage - - - name: Upload test results (Python) - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: test-results-${{ matrix.os }}-${{ matrix.python-version }} - path: junit.xml - if: matrix.os == 'ubuntu-latest' - - - name: Publish Unit Test Results - uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 - with: - files: '**/junit.xml' - if: matrix.os == 'ubuntu-latest' - - - name: Upload coverage - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 - with: - token: ${{ secrets.CODECOV_TOKEN }} - - - name: Install build dependencies - run: pip install cibuildwheel - - - name: Make dist (Linux) - run: | - rm -rf dist - make dist-py-sdist - make dist-py-wheel - make dist-check - env: - CIBW_BUILD: "${{ matrix.cibuildwheel }}-manylinux*" - CIBW_BUILD_VERBOSITY: 3 - if: matrix.os == 'ubuntu-latest' - - - name: Make dist (Macos) - run: | - rm -rf dist - make dist-py-wheel - env: - CIBW_BUILD: "${{ matrix.cibuildwheel }}-macos*" - CIBW_BUILD_VERBOSITY: 3 - if: matrix.os == 'macos-latest' - - - name: Make dist (Windows) - run: | - if (Test-Path dist) { Remove-Item dist -Recurse -Force } - make dist-py-wheel - env: - CIBW_BUILD: "${{ matrix.cibuildwheel }}-win_amd64" - if: matrix.os == 'windows-latest' - - - uses: actions-ext/python/test-wheel@6e1b91a408ea89f49bc8aff8724f83826f7b5446 - with: - module: python_template_cppjswasm - if: matrix.os == 'ubuntu-latest' - - - uses: actions-ext/python/test-sdist@6e1b91a408ea89f49bc8aff8724f83826f7b5446 - with: - module: python_template_cppjswasm - if: matrix.os == 'ubuntu-latest' - - - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: dist-${{matrix.os}}-${{matrix.python-version}} - path: dist + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + version: ${{ matrix.python-version }} + + - name: Setup Node.js + uses: actions-ext/node/setup@0ea5bdcd24d2488b28e16bf611b446a2f8e1e12f + with: + version: ${{ matrix.node-version }} + + - name: Setup C++ + uses: actions-ext/cpp/setup@51c484ef64088c62434226039d0e3359f5fc8df6 + + - name: Setup Emscripten + uses: mymindstorm/setup-emsdk@4528d102f7230f0e7b276855c01ea1159be0e984 # v16 + + - name: Install dependencies + run: make develop + + - name: Lint + run: make lint + if: matrix.os == 'ubuntu-latest' + + - name: Checks + run: make checks + if: matrix.os == 'ubuntu-latest' + + - name: Test + run: make coverage + + - name: Upload test results (Python) + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: test-results-${{ matrix.os }}-${{ matrix.python-version }} + path: junit.xml + if: matrix.os == 'ubuntu-latest' + + - name: Publish test results + uses: EnricoMi/publish-unit-test-result-action@d0a4676d0e0b938bc201470d88276b7c74c712b3 # v2.24.0 + with: + files: '**/junit.xml' + if: matrix.os == 'ubuntu-latest' + + - name: Upload coverage + uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0 + with: + token: ${{ secrets.CODECOV_TOKEN }} + + - name: Install build dependencies + run: pip install cibuildwheel + + - name: Build distributions (Linux) + run: | + rm -rf dist + make dist-py-sdist + make dist-py-wheel + make dist-check + env: + CIBW_BUILD: "${{ matrix.cibuildwheel }}-manylinux*" + CIBW_BUILD_VERBOSITY: 3 + if: matrix.os == 'ubuntu-latest' + + - name: Build distributions (macOS) + run: | + rm -rf dist + make dist-py-wheel + env: + CIBW_BUILD: "${{ matrix.cibuildwheel }}-macos*" + CIBW_BUILD_VERBOSITY: 3 + if: matrix.os == 'macos-latest' + + - name: Build distributions (Windows) + run: | + if (Test-Path dist) { Remove-Item dist -Recurse -Force } + make dist-py-wheel + env: + CIBW_BUILD: "${{ matrix.cibuildwheel }}-win_amd64" + if: matrix.os == 'windows-latest' + + - name: Test wheel + uses: actions-ext/python/test-wheel@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + module: python_template_cppjswasm + if: matrix.os == 'ubuntu-latest' + + - name: Test source distribution + uses: actions-ext/python/test-sdist@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + with: + module: python_template_cppjswasm + if: matrix.os == 'ubuntu-latest' + + - name: Upload distributions + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: dist-${{matrix.os}}-${{matrix.python-version}} + path: dist diff --git a/.github/workflows/copier.yaml b/.github/workflows/copier.yaml index a936d5f..7ce3303 100644 --- a/.github/workflows/copier.yaml +++ b/.github/workflows/copier.yaml @@ -12,6 +12,7 @@ jobs: pull-requests: write runs-on: ubuntu-latest steps: - - uses: actions-ext/copier-update@378500315a83b5985e175139a55f1fa5ea6dde09 - with: - token: ${{ secrets.WORKFLOW_TOKEN }} + - name: Update from Copier + uses: actions-ext/copier-update@378500315a83b5985e175139a55f1fa5ea6dde09 + with: + token: ${{ secrets.WORKFLOW_TOKEN }} diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml index 211f619..e16ecd6 100644 --- a/.github/workflows/docs.yaml +++ b/.github/workflows/docs.yaml @@ -16,41 +16,45 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'workflow_dispatch' }} steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - - uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 - - - name: Download dist from build - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 - with: - pattern: dist-ubuntu-latest-3.11 - merge-multiple: true - path: dist - run-id: ${{ github.event.workflow_run.id }} - github-token: ${{ secrets.GITHUB_TOKEN }} - repository: ${{ github.repository }} - if: github.event_name == 'workflow_run' - - - name: Install from wheel - run: | - uv pip install dist/*.whl - uv pip install dist/*.whl --target . --no-deps - uv pip install yardang - if: github.event_name == 'workflow_run' - - - name: Install from source (manual trigger) - run: | - make develop - uv pip install . - uv pip install yardang - if: github.event_name == 'workflow_dispatch' - - - run: yardang build - - - uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0 - with: - publish_branch: gh-pages - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: docs/html + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + + - name: Setup Python + uses: actions-ext/python/setup@6e1b91a408ea89f49bc8aff8724f83826f7b5446 + + - name: Download distributions + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 + with: + pattern: dist-ubuntu-latest-3.11 + merge-multiple: true + path: dist + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + repository: ${{ github.repository }} + if: github.event_name == 'workflow_run' + + - name: Install from wheel + run: | + uv pip install dist/*.whl + uv pip install dist/*.whl --target . --no-deps + uv pip install yardang + if: github.event_name == 'workflow_run' + + - name: Install from source (manual trigger) + run: | + make develop + uv pip install . + uv pip install yardang + if: github.event_name == 'workflow_dispatch' + + - name: Build documentation + run: yardang build + + - name: Publish documentation + uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4.1.0 + with: + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/html diff --git a/.github/workflows/wiki.yaml b/.github/workflows/wiki.yaml index 4f80bb0..831f804 100644 --- a/.github/workflows/wiki.yaml +++ b/.github/workflows/wiki.yaml @@ -20,11 +20,15 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false + - name: Checkout + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false - - run: cp README.md docs/wiki/Home.md - - uses: Andrew-Chen-Wang/github-wiki-action@1bbb4280446f9630e8e21a18012cbacf3b0f992e # v5.0.6 - with: - path: docs/wiki + - name: Prepare wiki + run: cp README.md docs/wiki/Home.md + + - name: Publish wiki + uses: Andrew-Chen-Wang/github-wiki-action@1bbb4280446f9630e8e21a18012cbacf3b0f992e # v5.0.6 + with: + path: docs/wiki diff --git a/pyproject.toml b/pyproject.toml index c76c94d..0a48bde 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -147,6 +147,7 @@ packages = [ "js", ] + [tool.hatch.build.targets.wheel] packages = [ "python_template_cppjswasm",