ordered 0.4.0

A wrapper for adding arbitrary partial/total order to a type.
Documentation
---   # rust-ordered CI: If you edit this file please update README.md
on:   # yamllint disable-line rule:truthy
  push:
    branches:
      - master
      - 'test-ci/**'
  pull_request:

name: Continuous integration

jobs:
  Prepare:
    runs-on: ubuntu-latest
    outputs:
      nightly_version: ${{ steps.read_toolchain.outputs.nightly_version }}
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Read nightly version"
        id: read_toolchain
        run: echo "nightly_version=$(cat nightly-version)" >> $GITHUB_OUTPUT

  Stable:                       # 2 jobs, one per manifest.
    name: Test - stable toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal, recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh stable

  Nightly:                      # 2 jobs, one per manifest.
    name: Test - nightly toolchain
    needs: Prepare
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal, recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ needs.Prepare.outputs.nightly_version }}
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh nightly

  MSRV:                         # 2 jobs, one per manifest.
    name: Test - MSRV toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [minimal, recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
        with:
          toolchain: "1.63.0"
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh msrv

  Lint:
    name: Lint - nightly toolchain
    needs: Prepare
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ needs.Prepare.outputs.nightly_version }}
      - name: "Install clippy"
        run: rustup component add clippy
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh lint

  Docs:
    name: Docs - stable toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@stable
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh docs

  Docsrs:
    name: Docs - nightly toolchain
    needs: Prepare
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        dep: [recent]
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Checkout maintainer tools"
        uses: actions/checkout@v4
        with:
          repository: rust-bitcoin/rust-bitcoin-maintainer-tools
          ref: 4f17a059a2f57c1b99b7c240a1467a5c0acebdc3
          path: maintainer-tools
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ needs.Prepare.outputs.nightly_version }}
      - name: "Set dependencies"
        run: cp Cargo-${{ matrix.dep }}.lock Cargo.lock
      - name: "Run test script"
        run: ./maintainer-tools/ci/run_task.sh docsrs

  Format:                       #  1 job, run cargo fmt directly.
    name: Format - nightly toolchain
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
    steps:
      - name: "Checkout repo"
        uses: actions/checkout@v4
      - name: "Select toolchain"
        uses: dtolnay/rust-toolchain@nightly
      - name: "Install rustfmt"
        run: rustup component add rustfmt
      - name: "Check formatting"
        run: cargo +nightly fmt --all -- --check