dummy-pin 0.1.1

Dummy implementations of the input/output pin embedded-hal traits.
Documentation
on:
  push:
  pull_request:
  schedule:
    - cron: 0 0 * * 0

name: Build

env:
  RUSTFLAGS: '--deny warnings'

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable, beta, nightly, 1.35.0]
        TARGET:
          - x86_64-unknown-linux-gnu
          - x86_64-unknown-linux-musl
          - arm-unknown-linux-gnueabi # Raspberry Pi 1
          - armv7-unknown-linux-gnueabihf # Raspberry Pi 2, 3, etc
          # Bare metal
          - thumbv6m-none-eabi
          - thumbv7em-none-eabi
          - thumbv7em-none-eabihf
          - thumbv7m-none-eabi

        include:
          # Test nightly but don't fail
          - rust: nightly
            experimental: true

    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}
          override: true

      - name: Checkout CI scripts
        uses: actions/checkout@v2
        with:
          repository: 'eldruin/rust-driver-ci-scripts'
          ref: 'master'
          path: 'ci'

      - run: ./ci/patch-no-std.sh
        if: ${{ ! contains(matrix.TARGET, 'x86_64') }}

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

  checks:
    name: Checks
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable, beta]
        TARGET:
          - x86_64-unknown-linux-gnu

    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}
          override: true
          components: rustfmt

      - name: Doc
        uses: actions-rs/cargo@v1
        with:
          command: doc

      - name: Formatting
        uses: actions-rs/cargo@v1
        with:
          command: fmt
          args: --all -- --check

  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [1.35.0]
        TARGET:
          - x86_64-unknown-linux-gnu

    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}
          override: true
          components: clippy

      - name: Clippy
        uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}

  test:
    name: Tests
    runs-on: ubuntu-latest
    strategy:
      matrix:
        rust: [stable, beta, nightly]
        TARGET: [x86_64-unknown-linux-gnu, x86_64-unknown-linux-musl]
        include:
          - rust: nightly
            experimental: true
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          profile: minimal
          toolchain: ${{ matrix.rust }}
          target: ${{ matrix.TARGET }}
          override: true

      - name: Test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --target=${{ matrix.TARGET }}

      - name: Build examples
        uses: actions-rs/cargo@v1
        if: contains(matrix.TARGET, 'x86_64')
        with:
          command: build
          args: --target=${{ matrix.TARGET }} --examples

  coverage:
    name: Coverage
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Install stable toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true

      - name: Run cargo-tarpaulin
        uses: actions-rs/tarpaulin@v0.1
        with:
          args: '--out Lcov -- --test-threads 1'

      - name: upload to Coveralls
        uses: coverallsapp/github-action@master
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          path-to-lcov: './lcov.info'