dryip 0.6.0

Short 🩸 Rust 🦀 code snippets for inspiration.
Documentation
name: CI

env:
  MIN_SUPPORTED_RUST_VERSION: "1.63.0"

on: [push, pull_request]

jobs:
  code_quality:
    name: Code Quality
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code
        uses: actions/checkout@v3

      - name: Install rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          default: true
          profile: minimal # no documentation
          components: clippy, rustfmt

      - name: Install latest just release
        uses: extractions/setup-just@v1

      - name: Install latest dprint release
        uses: taiki-e/install-action@v1
        with:
          tool: dprint

      - name: Cache
        uses: Swatinem/rust-cache@v2

      - name: Ensure `fmt` has been run
        run:  just fmt-check

      - name: Ensure MSRV is set in `clippy.toml`
        run: grep "^msrv = \"${{ env.MIN_SUPPORTED_RUST_VERSION }}\"\$" clippy.toml

      - name: Run clippy
        run: just lint

  msrv:
    name: Minimum Supported Rust Version
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code
        uses: actions/checkout@v3

      - name: Install rust toolchain (v${{ env.MIN_SUPPORTED_RUST_VERSION }})
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ env.MIN_SUPPORTED_RUST_VERSION }}
          default: true
          profile: minimal

      - name: Install latest nextest release
        uses: taiki-e/install-action@nextest

      - name: Install latest just release
        uses: extractions/setup-just@v1

      - name: Cache
        uses: Swatinem/rust-cache@v2

      - name: Run tests
        run: just test

  build:
    name: Build (${{ matrix.job.os }}, ${{ matrix.job.target }})
    runs-on: ${{ matrix.job.os }}
    strategy:
      fail-fast: false
      matrix:
        job:
          - { os: ubuntu-latest, target: x86_64-unknown-linux-gnu    }
          - { os: ubuntu-latest, target: x86_64-unknown-linux-musl   , use-cross: true }
          - { os: macos-latest , target: x86_64-apple-darwin         }
          - { os: windows-latest, target: x86_64-pc-windows-msvc     }

    steps:
      - name: Checkout source code
        uses: actions/checkout@v3

      - name: Install Rust toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.job.target }}
          override: true
          profile: minimal

      - name: Cache
        uses: Swatinem/rust-cache@v2

      - name: Show version information
        shell: bash
        run: |
          gcc --version || true
          rustup -V
          rustup toolchain list
          rustup default
          cargo -V
          rustc -V

      - name: Build
        uses: actions-rs/cargo@v1
        with:
          use-cross: ${{ matrix.job.use-cross }}
          command: build
          args: --release --target=${{ matrix.job.target }}