clap-logflag 0.3.0

This library can be used to add a `--log` flag to clap based command line applications that allows users to configure logging from the command line. It can log to stderr, files and syslog, powered by the fern logging backend.
Documentation
name: CI

on:
  - push
  - pull_request

env:
  CARGO_TERM_COLOR: always

jobs:
  x64:
    name: x64
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        features: ["", "--all-features", "--no-default-features"]
        toolchain: ["stable", "nightly", "1.88"]
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - run: cargo ${{ matrix.command }} ${{ matrix.profile }} ${{ matrix.features }}
  x64_minimal_versions:
    name: x64_minimal_versions
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        features: ["", "--all-features", "--no-default-features"]
        # Nightly because -Z direct-minimal-versions is a nightly cargo feature
        toolchain: ["nightly"]
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{ matrix.toolchain }}
      - run: cargo update -Z direct-minimal-versions
      - run: cargo ${{ matrix.command }} ${{ matrix.profile }} ${{ matrix.features }}
  clippy_check:
    name: Linter (clippy)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - run: cargo clippy --all-features --all-targets -- -D warnings
  code_format:
    name: Code Formatter (rustfmt)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v5
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - uses: mbrobbel/rustfmt-check@0.23.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
  sync_readme:
    name: Sync README.md (cargo sync-readme)
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - run: cargo install cargo-rdme
    - run: ./gen_readme.sh
    # Fail job if gen_readme.sh introduced changes. If this fails, then we need to run gen_readme.sh locally and add it to the commit.
    - run: git diff --exit-code
  dead_doc_links:
    name: Find dead doc links
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - run: RUSTDOCFLAGS="-Dwarnings" cargo doc
  semver_checks:
    name: Check semver
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
    - uses: obi1kenobi/cargo-semver-checks-action@v2
  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
        - uses: actions/checkout@v5
        - uses: dtolnay/rust-toolchain@stable
        # Setup inspired by instructions at https://github.com/taiki-e/cargo-llvm-cov/blob/9b93f70f4c5a06d6ee221d3537067bc8d3f5b7c6/README.md
        - name: Install cargo-llvm-cov
          uses: taiki-e/install-action@cargo-llvm-cov
        - name: Generate code coverage
          run: cargo llvm-cov --all-features --workspace --lcov --output-path lcov.info
        - name: Upload coverage to Codecov
          uses: codecov/codecov-action@v5
          with:
            token: ${{ secrets.CODECOV_TOKEN }}  # not required for public repos, but leaving it here because it seems we run into rate limit issues on Codecov's API without it.
            files: lcov.info
            fail_ci_if_error: true
            verbose: true