reqwest-proxy-pool 0.4.0

proxy pool middleware for reqwest
Documentation
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo test --all-features

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy, rustfmt
      - uses: Swatinem/rust-cache@v2
      - run: cargo fmt --check
      - run: cargo clippy --all-features -- -D warnings

  # 编译 examples,验证面向用户的公开 API 可正常使用
  # 只编译不运行,避免依赖外部网络服务(代理源、httpbin 等)
  examples:
    name: Build Examples
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - run: cargo build --examples

  # 在声明的最低版本上编译,防止 rust-version 字段和实际要求不一致
  msrv:
    name: MSRV
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: "1.85"
      - uses: Swatinem/rust-cache@v2
      - run: cargo build --all-features

  # 检查发布到 crates.io 的包是否意外引入了破坏性 API 变更
  semver:
    name: Semver Check
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
      - name: Find latest non-yanked baseline version
        id: baseline
        run: |
          BASELINE=$(curl -fsSL "https://crates.io/api/v1/crates/reqwest-proxy-pool" \
            | jq -r '[.versions[] | select(.yanked == false)] | sort_by(.num | split(".") | map(tonumber)) | last | .num // empty')
          if [ -n "$BASELINE" ]; then
            echo "version=$BASELINE" >> "$GITHUB_OUTPUT"
            echo "available=true" >> "$GITHUB_OUTPUT"
            echo "Baseline version: $BASELINE"
          else
            echo "available=false" >> "$GITHUB_OUTPUT"
            echo "No non-yanked version found, skipping semver check."
          fi
      - uses: obi1kenobi/cargo-semver-checks-action@v2
        if: steps.baseline.outputs.available == 'true'
        with:
          baseline-version: ${{ steps.baseline.outputs.version }}