libpep 0.12.0

Library for polymorphic encryption and pseudonymization
Documentation
name: Publish new version

on:
  release:
    types: [created]

jobs:
  semver-checks:
    runs-on: ubuntu-latest
    name: cargo semver-checks
    continue-on-error: true
    steps:
      - uses: actions/checkout@v6
      - uses: obi1kenobi/cargo-semver-checks-action@v2
        with:
          # Check default feature set, plus elgamal3 and legacy.
          # python/wasm bindings are not included here (and remain mutually exclusive).
          feature-group: default-features
          features: elgamal3,legacy,insecure

  publish-crate:
    runs-on: ubuntu-latest
    needs: semver-checks
    permissions:
      contents: read
      id-token: write

    name: Build and publish Rust crate to crates.io
    steps:
      - uses: actions/checkout@v6
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - uses: Swatinem/rust-cache@v2
      - uses: rust-lang/crates-io-auth-action@v1
        id: auth
      - run: cargo publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }}

  publish-npm:
    runs-on: ubuntu-latest
    needs: semver-checks
    permissions:
      contents: read
      id-token: write

    name: Build and publish WASM package to NPM
    steps:
      - uses: actions/checkout@v6
      - uses: actions-rust-lang/setup-rust-toolchain@v1
      - uses: Swatinem/rust-cache@v2
      - uses: actions/setup-node@v6
        with:
          node-version: '24.x'
          registry-url: 'https://registry.npmjs.org'
      - run: npm install -g npm@latest
      - run: cargo install wasm-pack
      - run: npm run build
      - run: npm publish --provenance --access public

  publish-pypi:
    runs-on: ubuntu-latest
    needs: semver-checks
    permissions:
      contents: read
      id-token: write

    name: Build and publish Python package to PyPI
    steps:
      - uses: actions/checkout@v6
      - name: Build wheels and sdist
        uses: PyO3/maturin-action@v1
        with:
          command: build
          args: --release --sdist --out dist --features python
          sccache: 'true'
          manylinux: auto
      - name: Publish to PyPI
        uses: pypa/gh-action-pypi-publish@release/v1