ask_ai 0.1.4

A library for interacting with various AI frameworks
Documentation
name: Rust CI & Publish

on:
  push:
    branches: [ master, develop ]
  pull_request:
    branches: [ master, develop ]

jobs:
  check-and-test:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry
        uses: actions/cache@v4
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo build
        uses: actions/cache@v4
        with:
          path: target
          key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}

      - name: Run tests serially
        run: |
          cargo test -- --test-threads=1

      - name: Check formatting
        run: cargo fmt -- --check

      - name: Run Clippy lints
        run: cargo clippy -- -D warnings

  publish:
    if: github.ref == 'refs/heads/master'
    needs: check-and-test
    runs-on: ubuntu-latest
    environment: crates-io-publish

    steps:
      - uses: actions/checkout@v4
      - name: Install Rust toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Cache cargo registry
        uses: actions/cache@v4
        with:
          path: ~/.cargo/registry
          key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}

      - name: Cache cargo build
        uses: actions/cache@v4
        with:
          path: target
          key: ${{ runner.os }}-cargo-build-${{ hashFiles('**/Cargo.lock') }}

      - name: Cargo publish dry run
        id: dryrun
        run: |
          cargo publish --dry-run

      - name: Publish to crates.io
        if: ${{ success() }}
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
        run: |
          cargo publish --token $CARGO_REGISTRY_TOKEN