reqwest-proxy-pool 0.4.0

proxy pool middleware for reqwest
Documentation
name: Release

on:
  pull_request:
    types: [closed]
    branches: [main]

env:
  CARGO_TERM_COLOR: always

jobs:
  publish:
    name: Publish to crates.io
    if: github.event.pull_request.merged == true
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6

      - uses: dtolnay/rust-toolchain@stable

      - uses: Swatinem/rust-cache@v2

      - name: Check if version changed
        id: version
        run: |
          set -euo pipefail
          CURRENT=$(cargo metadata --no-deps --format-version 1 | jq -r '.packages[0].version')
          # Fetch the latest published version from crates.io API
          PUBLISHED=$(
            curl -fsSL "https://crates.io/api/v1/crates/reqwest-proxy-pool" \
              | jq -r '.crate.max_version // "0.0.0"' \
              || echo "0.0.0"
          )
          if [ -z "$PUBLISHED" ] || [ "$PUBLISHED" = "null" ]; then
            PUBLISHED="0.0.0"
          fi
          echo "current=$CURRENT" >> "$GITHUB_OUTPUT"
          echo "published=$PUBLISHED" >> "$GITHUB_OUTPUT"
          if [ "$CURRENT" != "$PUBLISHED" ]; then
            echo "changed=true" >> "$GITHUB_OUTPUT"
          else
            echo "changed=false" >> "$GITHUB_OUTPUT"
          fi

      - name: Publish
        if: steps.version.outputs.changed == 'true'
        run: |
          output=$(cargo publish --token "${{ secrets.CARGO_REGISTRY_TOKEN }}" 2>&1) && echo "$output" || {
            echo "$output"
            echo "$output" | grep -q "already uploaded" && echo "Version already published, skipping." || exit 1
          }