ratto 0.3.1

Ratatui-powered terminal primitives for shell dashboards: flicker-free repaints, progress bars, prompts, and portable time tools
name: CI

on:
  push:
    branches: [main]
  pull_request:

permissions:
  contents: read

env:
  CARGO_TERM_COLOR: always
  RUST_BACKTRACE: 1

jobs:
  test:
    name: test (${{ matrix.os }})
    strategy:
      fail-fast: false
      matrix:
        include:
          # Lint runs once, on Linux; macOS runs build + tests; Windows
          # type-checks all targets (tests are unix-flavored for now).
          - { os: ubuntu-latest, gate: lint, run_tests: true }
          - { os: macos-latest, gate: build, run_tests: true }
          - { os: windows-latest, gate: check, run_tests: false }
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v6
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt, clippy
      # Nightly rustfmt only; everything else runs on stable.
      - uses: dtolnay/rust-toolchain@nightly
        with:
          components: rustfmt
      - uses: taiki-e/install-action@just
      - uses: taiki-e/install-action@nextest
      - uses: Swatinem/rust-cache@v2
      - name: just lint
        if: matrix.gate == 'lint'
        run: just lint
      - name: just build
        if: matrix.gate == 'build'
        run: just build
      - name: just check-types
        if: matrix.gate == 'check'
        run: just check-types
      - name: just test
        if: matrix.run_tests
        run: just test