charcoal 0.1.0

Declarative, DataFrame-native chart library for Polars. No browser required.
Documentation
name: CI

on:
  push:
  pull_request:

jobs:
  # ── Core jobs — run on all three platforms ────────────────────────────────

  test:
    name: Test (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --all-features

  clippy:
    name: Clippy (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - run: cargo clippy --all-features -- -D warnings

  fmt:
    name: Format (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo fmt --check

  docs:
    name: Docs (${{ matrix.os }})
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, macos-latest, windows-latest]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo doc --no-deps --all-features

  # ── Feature-specific jobs ─────────────────────────────────────────────────

  feature-static:
    name: Feature / static
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --features static

  feature-notebook:
    name: Feature / notebook
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo test --features notebook

  # ── Examples (Linux only — keeps CI time reasonable) ─────────────────────

  examples:
    name: Examples
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo run --example scatter_iris
      - run: cargo run --example line_timeseries
      - run: cargo run --example bar_categorical
      - run: cargo run --example histogram_distribution
      - run: cargo run --example heatmap_correlation
      - run: cargo run --example box_plot_groups
      - run: cargo run --example area_stacked

  # ── docs.rs simulation ────────────────────────────────────────────────────
  # Catches feature-flag-related doc failures before they appear on docs.rs.
  # Build time budget: cold `cargo build` should complete within 10 minutes
  # on the CI runner. Enforce hard in v0.2.0; treat as soft limit for v0.1.0.

  docsrs:
    name: docs.rs simulation
    runs-on: ubuntu-latest
    env:
      RUSTDOCFLAGS: "--cfg docsrs"
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo doc --no-deps --all-features