ginmi 0.1.3

An asynchrounous gNMI client to interact with and manage network devices.
Documentation
on:
  push:
    tags:
      - '*'

jobs:
  test:
    name: Build and Test Project
    runs-on: ubuntu-latest

    env:
      CARGO_TERM_COLORS: always

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

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

      - name: Setup Cargo Cache
        uses: actions/cache@v3
        continue-on-error: false
        with:
          path: |
            ~/.cargo/bin/
            ~/.cargo/registry/index/
            ~/.cargo/registry/cache/
            ~/.cargo/git/db
            target/
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: ${{ runner.os }}-cargo-

      - name: Setup Protobuf Compiler
        uses: arduino/setup-protoc@v2

      - name: Run Unit Tests
        run: cargo test

  publish:
    name: Publish crate to crates.io
    needs: test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true
      - name: Setup Protobuf Compiler
        uses: arduino/setup-protoc@v2
      - uses: katyo/publish-crates@v2
        with:
          registry-token: ${{ secrets.CARGO_REGISTRY_TOKEN }}