railyard 0.0.1

Railyard is an implementation of the Raft concensus algorithm using Tonic
Documentation
name: Rust Build
on: [push, pull_request]
env:
  CARGO_TERM_COLOR: always
permissions:
  contents: write
jobs:
  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - uses: arduino/setup-protoc@v3
      - uses: Swatinem/rust-cache@v2
      - name: Run tests
        run: cargo test --verbose
  fmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - uses: arduino/setup-protoc@v3
      - name: Check formatting
        run: cargo fmt -- --check
  clippy:
    name: Clippy
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - uses: arduino/setup-protoc@v3
      - uses: Swatinem/rust-cache@v2
      - name: Lint with Clippy
        run: cargo clippy --all-targets --all-features -- -D warnings
  generate-and-deploy-docs:
    name: Generate and Deploy Docs
    runs-on: ubuntu-latest
    needs: [test, fmt, clippy]
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: arduino/setup-protoc@v3
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rust-docs
      - uses: Swatinem/rust-cache@v2
      - name: Generate Documentation
        run: cargo doc --no-deps
      - name: Deploy to GitHub Pages
        uses: JamesIves/github-pages-deploy-action@v4.5.0
        with:
          branch: gh-pages
          folder: target/doc