markdown-table 0.2.0

Creating markdown tables with Rust!
Documentation
name: CI

on:
  push:
    branches: [ main ]
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  build-test:
    strategy:
      fail-fast: false

      matrix:
        include:
          - os: windows-latest
            target: x86_64-pc-windows-msvc

          - os: ubuntu-latest
            target: x86_64-unknown-linux-gnu

          - os: macos-latest
            target: x86_64-apple-darwin

    name: Build & Test (${{ matrix.target }})
    runs-on: ${{ matrix.os }}

    env:
      RA_TARGET: ${{ matrix.target }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

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

      - name: Install Rust library source
        if: matrix.target == 'x86_64-unknown-linux-gnu'
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          target: ${{ matrix.target }}
          profile: minimal
          override: true
          components: rust-src

      - name: Build
        run: cargo build --verbose --target ${{ matrix.target }}

      - name: Run tests
        run: cargo test --verbose --target ${{ matrix.target }}

  lint:
    name: Formatter

    needs: build-test

    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      - name: Install Rust
        run: |
          rustup update stable
          rustup default stable
          rustup component add rustfmt
          rustup component add clippy

      - name: Check formatting
        run: cargo fmt --all -- --check

      - name: Check code for possible improvements
        run: cargo clippy -- -D warnings

      # Prepare the Pull Request Payload artifact. If this fails, we
      # we fail silently using the `continue-on-error` option. It's
      # nice if this succeeds, but if it fails for any reason, it
      # does not mean that our lint-test checks failed.
      - name: Prepare Pull Request Payload artifact
        id: prepare-artifact
        if: always() && github.event_name == 'pull_request'
        continue-on-error: true
        run: cat $GITHUB_EVENT_PATH | jq '.pull_request' > pull_request_payload.json

      # This only makes sense if the previous step succeeded. To
      # get the original outcome of the previous step before the
      # `continue-on-error` conclusion is applied, we use the
      # `.outcome` value. This step also fails silently.
      - name: Upload a Build Artifact
        if: always() && steps.prepare-artifact.outcome == 'success'
        continue-on-error: true
        uses: actions/upload-artifact@v2
        with:
          name: pull-request-payload
          path: pull_request_payload.json