breadx-image 0.1.0

Image type to be used in breadx
Documentation
#               Copyright John Nunley, 2022.
# Distributed under the Boost Software License, Version 1.0.
#       (See accompanying file LICENSE or copy at
#         https://www.boost.org/LICENSE_1_0.txt)

name: CI

on:
  push:
    branches:
      - master
  pull_request:

env:
  RUSTFLAGS: -Dwarnings
  clippy_version: 1.60.0

jobs:
  rustfmt:
    name: rustfmt
    runs-on: ubuntu-latest
    strategy:
      matrix:
        include:
          - rust: stable
    
    steps:
      - uses: actions/checkout@v2
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          profile: minimal
          override: true
          components: rustfmt
      - uses: Swatinem/rust-cache@v1
      - name: Run rustfmt
        run: cargo fmt --check
   
  clippy:
    name: clippy
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ env.clippy_version }}
          override: true
          components: clippy
      - uses: Swatinem/rust-cache@v1
      - name: Run Clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: --all --tests --all-features

  test:
    name: run tests
    runs-on: ubuntu-latest 
    strategy:
      matrix:
        toolchain:
         - stable
         - beta
         - nightly

    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true
      - uses: Swatinem/rust-cache@v1

      # run tests for all crates
      - name: Default Features Test
        run: cargo test

      # run tests with async
      - name: Async Test
        run: cargo test --features async

      - name: No Default Features Build
        run: cargo build --no-default-features

  build-msrv:
    name: Build MSRV
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          submodules: true
      - name: Install Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: 1.49.0
          override: true
      - uses: Swatinem/rust-cache@v1

      # run tests for all crates
      - name: Default Features Build
        run: cargo build
      - name: Async Build
        run: cargo build --features async
      - name: No Default Features Build
        run: cargo build --no-default-features