dnscrypt 0.2.0

A DNSCrypt v2 client library
Documentation
name: CI

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

concurrency:
  group: ci-${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  CARGO_INCREMENTAL: 0

jobs:
  checks:
    name: fmt / clippy / msrv / audit
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      - uses: Swatinem/rust-cache@v2
        with:
          prefix-key: v1-rust
      - uses: taiki-e/install-action@v2
        with:
          tool: cargo-audit
      - name: rustfmt
        run: cargo fmt --all --check
      - name: cargo-audit
        run: cargo audit
      - name: clippy (default features)
        run: cargo clippy --locked --all-targets
      - name: clippy (all features)
        run: cargo clippy --locked --all-targets --all-features
      - name: clippy (no default features, reqwest off)
        run: cargo clippy --locked --all-targets --no-default-features
      - uses: dtolnay/rust-toolchain@1.88
      - name: msrv (1.88)
        run: cargo +1.88 check --locked --all-features

  test:
    name: "test (${{ matrix.name }})"
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        include:
          - name: default
          - name: all features
            flags: --all-features
          - name: no default features (reqwest off)
            flags: --no-default-features
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          prefix-key: v1-rust
          key: ${{ matrix.name }}
      - name: test (lib, hermetic)
        run: cargo test --locked --lib ${{ matrix.flags }}

  live-network:
    name: live-network integration tests
    runs-on: ubuntu-latest
    continue-on-error: true
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          prefix-key: v1-rust
      - name: test (integration, live network)
        run: cargo test --locked --all-features --test integration_tests

  docs:
    name: rustdoc
    runs-on: ubuntu-latest
    env:
      RUSTDOCFLAGS: -D warnings
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
      - uses: Swatinem/rust-cache@v2
        with:
          prefix-key: v1-rust
      - run: cargo doc --locked --all-features --no-deps