apicize_lib 0.40.0

Library supporting Apicize request dispatch, testing and serialization
Documentation
name: 'publish'

on:
  push:
    tags:
      - '*'

jobs:
  # init:
  #   name: Initialize project and build environment
  #   runs-on: ubuntu-latest
  #   steps:
  #     - name: Checkout project
  #       uses: actions/checkout@v4
  #     - name: Install Rust
  #       run: |
  #         curl https://sh.rustup.rs -sSf | sh -s -- -y
  #     - name: Cache initialized setup
  #       uses: actions/cache/save@v4
  #       with:
  #         path: |
  #           ./*
  #           $HOME/.cargo/*
  #         key: ${{ runner.os }}-apicize-lib

  lint:
    name: Lint (Clippy)
    runs-on: ubuntu-latest
    # needs: init
    steps:
      # - name: Restore initialized setup
      #   uses: actions/cache/restore@v4
      #   with:
      #     path: |
      #       ./*
      #       $HOME/.cargo/*
      #     key: ${{ runner.os }}-apicize-lib
      #     fail-on-cache-miss: true
      - name: Checkout project
        uses: actions/checkout@v4
      - name: Add Rust to path
        run: . "$HOME/.cargo/env"
      - name: Run lint
        run: cargo clippy

  test:
    name: Unit testing
    runs-on: ubuntu-latest
    # needs: init
    steps:
      # - name: Restore initialized setup
      #   uses: actions/cache/restore@v4
      #   with:
      #     path: |
      #       ./*
      #       $HOME/.cargo/*
      #     key: ${{ runner.os }}-apicize-lib
      #     fail-on-cache-miss: true
      - name: Checkout project
        uses: actions/checkout@v4
      - name: Install Rust
        run: |
          curl https://sh.rustup.rs -sSf | sh -s -- -y
      - name: Add Rust to path
        run: . "$HOME/.cargo/env"
      - name: Run unit test
        run: cargo test

  publish-crate:
    name: Publish Crate
    runs-on: ubuntu-latest
    permissions:
      contents: write
    needs: 
      - 'lint'
      - 'test'
    steps:
      # - name: Restore initialized setup
      #   uses: actions/cache/restore@v4
      #   with:
      #     path: |
      #       ./*
      #       $HOME/.cargo/*
      #     key: ${{ runner.os }}-apicize-lib
      #     fail-on-cache-miss: true
      - name: Checkout project
        uses: actions/checkout@v4
      - name: Install Rust
        run: |
          curl https://sh.rustup.rs -sSf | sh -s -- -y
      - name: Add Rust to path
        run: . "$HOME/.cargo/env"
      - name: Setup NodeJS
        uses: actions/setup-node@v4
        with:
          node-version: lts/*
      - name: Build the project
        run: cargo build --release
      - name: Publish to crates.io
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: cargo publish