onenote-cli 0.1.3

Read and capture Microsoft OneNote notes through its Windows desktop application
Documentation
name: Release
on:
  push:
    tags: ['v*']
  workflow_dispatch:
    inputs:
      publish:
        description: Publish verified packages from a version tag
        type: boolean
        default: false
permissions:
  contents: read
concurrency:
  group: release-${{ github.ref }}
  cancel-in-progress: false
jobs:
  test:
    uses: ./.github/workflows/ci.yml
  wheels:
    needs: test
    strategy:
      fail-fast: false
      matrix:
        include:
          - os: ubuntu-24.04
            target: x86_64-unknown-linux-gnu
            compatibility: '2014'
          - os: windows-latest
            target: x86_64-pc-windows-msvc
            compatibility: auto
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
      - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
        with:
          python-version: '3.12'
      - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e
      - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b
        with:
          command: build
          args: --release --locked --out dist
          target: ${{ matrix.target }}
          manylinux: ${{ matrix.compatibility }}
          rust-toolchain: '1.90.0'
      - run: python scripts/release.py smoke dist
      - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
        with:
          name: wheel-${{ matrix.target }}
          path: dist/*.whl
          if-no-files-found: error
  source:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
      - uses: dtolnay/rust-toolchain@1.90.0
      - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b
        with:
          command: sdist
          args: --out dist
      - run: cargo package --locked
      - run: cp target/package/onenote-cli-*.crate dist/
      - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
        with:
          name: sources
          path: dist/*
          if-no-files-found: error
  verify:
    needs: [wheels, source]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
      - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
        with:
          python-version: '3.12'
      - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
        with:
          path: dist
          merge-multiple: true
      - run: python scripts/release.py verify dist
      - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
        with:
          name: release-packages
          path: dist/*
  publish:
    if: github.event_name == 'workflow_dispatch' && inputs.publish
    needs: verify
    runs-on: ubuntu-latest
    permissions:
      contents: write
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
      - uses: dtolnay/rust-toolchain@1.90.0
      - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
        with:
          python-version: '3.12'
      - uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e
      - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093
        with:
          name: release-packages
          path: dist
      - name: Validate tag and credentials before publication
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
          UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
        run: |
          test "$GITHUB_REF_TYPE" = tag
          python scripts/release.py verify dist --require-tag "$GITHUB_REF_NAME"
          test -n "$CARGO_REGISTRY_TOKEN"
          test -n "$UV_PUBLISH_TOKEN"
      - name: Publish crates.io package
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: cargo publish --locked
      - name: Publish PyPI packages
        env:
          UV_PUBLISH_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
        run: uv publish dist/*.whl dist/*.tar.gz
      - name: Create release
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh release create "$GITHUB_REF_NAME" --verify-tag --title "$GITHUB_REF_NAME" --notes-file CHANGELOG.md dist/*