jsonata-rs 0.3.4

An (incomplete) implementation of JSONata in Rust
Documentation
on:
  merge_group:
    types: [checks_requested]
  pull_request:
  push:
    branches:
      - main

permissions:
  security-events: read
  contents: read

name: build

jobs:
  tests:
    name: Tests
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: dtolnay/rust-toolchain@c5a29ddb4d9d194e7c84ec8c3fba61b1c31fee8c # stable
        with:
          toolchain: stable
      - run: cargo test --all-features -- --nocapture

  test_wasm:
    name: Test WebAssembly (WASI)
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: dtolnay/rust-toolchain@c5a29ddb4d9d194e7c84ec8c3fba61b1c31fee8c # stable
        with:
          toolchain: stable
          target: wasm32-wasip1
      - uses: taiki-e/install-action@4666e0456051edf22fc0bae331c1df874bcaf291
        with:
          tool: wasmtime
      - run: cargo test --target wasm32-wasip1

  fmt_lint:
    permissions:
      contents: read
    name: Format/Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
      - uses: dtolnay/rust-toolchain@c5a29ddb4d9d194e7c84ec8c3fba61b1c31fee8c # stable
        with:
          toolchain: stable
          components: rustfmt, clippy
      - name: Cargo fmt
        run: cargo fmt --all --check
      - name: Cargo clippy
        run: cargo clippy --all-targets --all-features -- -D warnings
      - name: Check for diffs
        run: git diff --ignore-space-at-eol --exit-code

  build:
    runs-on: ubuntu-latest
    needs: [tests, fmt_lint, test_wasm]
    # Skipping this results job results in a misleading status on PRs and in the queue,
    # so instead lets always return an explicit success or failure.
    if: ${{ always() }}
    steps:
      - name: Collect results on success
        if: ${{ !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
        run: echo "All checks passed"
      - name: Collect results on failure
        if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }}
        run: echo "Some checks failed" && false