git2version 0.5.0

This crate provides a way to get the version of the package from git and incorporate it as a constant into your program.
Documentation
name: CI

on:
  - push
  - pull_request

env:
  CARGO_TERM_COLOR: always

jobs:
  test:
    name: build_test
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        features: ["", "--no-default-features", "--all-features"]
        toolchain: ["stable", "nightly", "1.89"]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          default: true
      - uses: actions-rs/cargo@v1
        with:
          command: ${{ matrix.command }}
          args: ${{ matrix.features }} ${{ matrix.profile }}
  test_min_versions:
    name: build_test_minimal_versions
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        command: ["build", "test"]
        profile: ["", "--release"]
        features: ["", "--no-default-features", "--all-features"]
        # Nightly because -Z direct-minimal-versions is a nightly cargo featur
        toolchain: ["nightly"]
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          default: true
      - uses: actions-rs/cargo@v1
        with:
          command: "update"
          args: "-Z direct-minimal-versions"
      - uses: actions-rs/cargo@v1
        with:
          command: ${{ matrix.command }}
          args: ${{ matrix.features }} ${{ matrix.profile }}
  clippy_check:
    name: Linter (clippy)
    runs-on: ubuntu-latest
    permissions:
      checks: write
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: clippy
          default: true
      - uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-features --all-targets -- -D warnings
  code_format:
    name: Code Formatter (rustfmt)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          components: rustfmt
          default: true
      - uses: mbrobbel/rustfmt-check@0.5.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
  sync_readme:
    name: Sync README.md (cargo sync-readme)
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - 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@v3
    - uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        default: true
    - run: RUSTDOCFLAGS="-Dwarnings" cargo doc
  semver_checks:
    name: Check semver
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: obi1kenobi/cargo-semver-checks-action@v2
  coverage:
    name: Code Coverage
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          default: true
      # 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@v3
        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