markdownlint-rs 0.3.21

A fast, flexible, configuration-based command-line interface for linting Markdown/CommonMark files
Documentation
name: Python

on:
  workflow_call:

jobs:
  publish:
    name: Publish Python wheels
    runs-on: ubuntu-latest
    environment: pypi
    permissions:
      contents: read
      id-token: write # OIDC trusted publishing
    defaults:
      run:
        working-directory: python
    steps:
      - name: Checkout repository
        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7
        with:
          sparse-checkout: python

      - name: Install uv
        uses: astral-sh/setup-uv@11f9893b081a58869d3b5fccaea48c9e9e46f990 # v8.3.2

      - name: Download binaries
        uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
        with:
          pattern: mdlint-*
          path: /tmp/binaries
          merge-multiple: true

      - name: Build wheels
        run: |
          declare -A platforms=(
            [mdlint-linux-x86_64]="manylinux_2_17_x86_64.manylinux2014_x86_64"
            [mdlint-linux-x86_64-musl]="musllinux_1_2_x86_64"
            [mdlint-linux-aarch64]="manylinux_2_17_aarch64.manylinux2014_aarch64"
            [mdlint-linux-aarch64-musl]="musllinux_1_2_aarch64"
            [mdlint-macos-x86_64]="macosx_10_12_x86_64"
            [mdlint-macos-aarch64]="macosx_11_0_arm64"
            [mdlint-windows-x86_64.exe]="win_amd64"
          )
          for asset in "${!platforms[@]}"; do
            binary="mdlint$([[ $asset == *.exe ]] && echo .exe || echo '')"
            cp "/tmp/binaries/$asset" "mdlint/$binary"
            chmod +x "mdlint/$binary"
            MDLINT_PLATFORM_TAG="${platforms[$asset]}" uv build --wheel
            rm "mdlint/$binary"
          done

      - name: Publish to PyPI
        run: uv publish dist/*.whl