substrait-explain 0.7.0

Explain Substrait plans as human-readable text.
Documentation
name: Rust CI

permissions:
  contents: read
  checks: write
  statuses: write

on:
  workflow_dispatch:
  push:
    branches:
      - main
  pull_request:

env:
  CARGO_TERM_COLOR: always

jobs:
  fmt:
    name: Format
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - name: Check formatting
        run: cargo fmt -- --check --config imports_granularity=Module,group_imports=StdExternalCrate

  lint:
    name: Lint
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
        # Uses rust cache action, stnadard in Rust community.
        # Added to allowlist here:
        # https://github.com/DataDog/substrait-explain/settings/actions
      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
      - name: Lint with Clippy
        run: cargo clippy --features protoc -- -D warnings
      - name: Lint with Clippy (All features)
        run: cargo clippy --all-features -- -D warnings

  test:
    name: Test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
      - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1

      - name: Run tests
        run: cargo test --all-features --verbose

      - name: Run basic_usage example
        run: cargo run --example basic_usage --features protoc --verbose

      - name: Run advanced_usage example
        run: cargo run --example advanced_usage --features serde,protoc --verbose

      - name: Run extensions example
        run: cargo run --example extensions --features cli,protoc --verbose

      - name: Test CLI with example plans
        run: |
          # Test validate command with example plans
          cargo run --features cli,protoc -- validate -i example-plans/basic.substrait
          cargo run --features cli,protoc -- validate -i example-plans/simple.substrait