rew 0.3.0

A text processing CLI tool that rewrites FS paths according to a pattern.
Documentation
name: Build

on:
  push:
    branches-ignore: [ stable-docs, gh-pages ]
    paths: [ '**.rs', Cargo.toml, codecov.yml ]
  pull_request:
    branches-ignore: [ stable-docs, gh-pages ]
    paths: [ '**.rs', Cargo.toml, codecov.yml ]

env:
  CARGO_TERM_COLOR: always

jobs:
  check:
    name: Check
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

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

      - name: Run cargo check
        uses: actions-rs/cargo@v1
        with:
          command: check

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          profile: minimal
          override: true
          components: rustfmt, clippy

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

      - name: Run cargo clippy
        uses: actions-rs/cargo@v1
        with:
          command: clippy
          args: -- --deny warnings

  test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os:
          - ubuntu-latest
          - windows-latest
          - macos-latest
    steps:
      - name: Checkout sources
        uses: actions/checkout@v2

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

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-fail-fast

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

      - name: Install toolchain
        uses: actions-rs/toolchain@v1
        with:
          toolchain: nightly
          profile: minimal
          override: true

      - name: Install grcov
        uses: actions-rs/install@v0.1
        with:
          crate: grcov
          use-tool-cache: true

      - name: Install rust-covfix
        uses: actions-rs/install@v0.1
        with:
          crate: rust-covfix
          use-tool-cache: true

      - name: Run cargo test
        uses: actions-rs/cargo@v1
        with:
          command: test
          args: --no-fail-fast
        env:
          CARGO_INCREMENTAL: '0'
          RUSTFLAGS: '-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'
          RUSTDOCFLAGS: '-Zprofile -Ccodegen-units=1 -Copt-level=0 -Clink-dead-code -Coverflow-checks=off -Cpanic=abort -Zpanic_abort_tests'

      - name: Prepare grcov input
        run: zip -0 ccov.zip target/debug/deps/{rew,cpb,mvb}*.{gcda,gcno}

      - name: Run grcov
        run: grcov ccov.zip --source-dir . --output-path lcov.info --llvm --branch --ignore-not-existing --ignore "/*" --ignore "tests/*"

      - name: Run rust-covfix
        run: rust-covfix --verbose --output lcov_correct.info lcov.info

      - name: Upload coverage
        if: ${{ github.event_name == 'push' }}
        uses: codecov/codecov-action@v1
        with:
          file: lcov_correct.info
          fail_ci_if_error: true