cityjson-arrow 0.6.2

Arrow IPC and Parquet transport for CityJSON 2.0 city models
Documentation
name: CI

on:
  push:
  pull_request:
  workflow_dispatch:

permissions:
  contents: read

env:
  RUSTFLAGS: -Dwarnings
  CITYJSON_ARROW_SHARED_CORPUS_ROOT: ${{ github.workspace }}/cityjson-corpus

jobs:
  fmt:
    name: Format
    runs-on: ubuntu-latest
    timeout-minutes: 10
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: rustfmt
      - run: cargo install just --locked --force
      - run: cargo fmt --all --check

  lint:
    name: Lint
    runs-on: ubuntu-latest
    timeout-minutes: 15
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: dtolnay/rust-toolchain@stable
        with:
          components: clippy
      - run: cargo install just --locked --force
      - run: just lint

  test:
    name: Test (${{matrix.os}})
    runs-on: ${{matrix.os}}-latest
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu, macos, windows]
    timeout-minutes: 45
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-fake
          path: cityjson-fake
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-corpus
          path: cityjson-corpus
          sparse-checkout: |
            artifacts
            catalog
            cases
            schemas
            scripts
          sparse-checkout-cone-mode: true
      - run: python scripts/render_correctness_index.py
        working-directory: cityjson-corpus
      - uses: dtolnay/rust-toolchain@stable
      - run: cargo install just --locked --force
      - run: just test

  build:
    name: Build (MSRV ${{matrix.rust}})
    runs-on: ubuntu-latest
    strategy:
      fail-fast: false
      matrix:
        rust: [ 1.93.0 ]
    timeout-minutes: 45
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: ${{matrix.rust}}
      - run: cargo install just --locked --force
      - run: just build

  nightly:
    name: Build (nightly)
    runs-on: ubuntu-latest
    timeout-minutes: 45
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: dtolnay/rust-toolchain@nightly
      - run: cargo install just --locked --force
      - run: just build

  doc:
    name: Documentation
    runs-on: ubuntu-latest
    timeout-minutes: 45
    env:
      RUSTDOCFLAGS: --cfg docsrs -Dwarnings
    defaults:
      run:
        working-directory: cityjson-arrow
    steps:
      - uses: actions/checkout@v6
        with:
          path: cityjson-arrow
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-rs
          path: cityjson-rs
      - uses: actions/checkout@v6
        with:
          repository: 3DGI/cityjson-json
          path: cityjson-json
      - uses: dtolnay/rust-toolchain@nightly
      - uses: extractions/setup-just@v4
      - run: just rustdoc