path-traits 0.1.0

Tower-like generic traits for parametric paths, segments, and geometric queries
Documentation
version: "3"

vars:
  CARGO: cargo

tasks:
  default:
    desc: List available tasks
    cmds:
      - task --list-all

  fmt:
    desc: Apply Rust formatting
    aliases:
      - fmt:fix
    cmds:
      - "{{.CARGO}} fmt"

  fmt:check:
    desc: Check Rust formatting
    cmds:
      - "{{.CARGO}} fmt -- --check"

  check:
    desc: Check the crate with default features
    cmds:
      - "{{.CARGO}} check"

  check:all-features:
    desc: Check the crate with all features
    cmds:
      - "{{.CARGO}} check --all-features --all-targets"

  check:no-default-features:
    desc: Check the crate without default features
    cmds:
      - "{{.CARGO}} check --no-default-features"

  check:std:
    desc: Check with std feature only
    cmds:
      - "{{.CARGO}} check --no-default-features --features std"

  check:num-traits:
    desc: Check with num-traits feature only (no_std + FloatCore)
    cmds:
      - "{{.CARGO}} check --no-default-features --features num-traits"

  check:std-num-traits:
    desc: Check with std + num-traits (std + Float)
    cmds:
      - "{{.CARGO}} check --no-default-features --features 'std,num-traits'"

  lint:
    desc: Check clippy lints for all targets and features
    aliases:
      - lint:check
    cmds:
      - "{{.CARGO}} clippy --all-features --all-targets"

  lint:fix:
    desc: Apply clippy fixes for all targets and features
    aliases:
      - clippy
    cmds:
      - "{{.CARGO}} clippy --fix --allow-dirty --all-features --all-targets"

  build:
    desc: Build the crate with default features
    cmds:
      - "{{.CARGO}} build"

  test:
    desc: Test all four feature combinations
    cmds:
      - task: test:default-features
      - task: test:std
      - task: test:num-traits
      - task: test:std-num-traits

  test:all:
    desc: Test the crate with all features
    aliases:
      - test:all
    cmds:
      - "{{.CARGO}} test --all-features"

  test:default-features:
    desc: Test the crate with default features
    aliases:
      - test:default
    cmds:
      - "{{.CARGO}} test"

  test:no-default-features:
    desc: Test the crate without default features
    cmds:
      - "{{.CARGO}} test --no-default-features"

  test:std:
    desc: Test with std feature only (no num-traits)
    cmds:
      - "{{.CARGO}} test --no-default-features --features std"

  test:num-traits:
    desc: Test with num-traits only (no_std + FloatCore)
    cmds:
      - "{{.CARGO}} test --no-default-features --features num-traits"

  test:std-num-traits:
    desc: Test with std + num-traits
    cmds:
      - "{{.CARGO}} test --no-default-features --features 'std,num-traits'"

  verify:
    desc: Run formatting checks, static checks, clippy, and the test matrix
    deps:
      - fmt:check
      - check
      - check:std
      - check:num-traits
      - check:std-num-traits
      - check:all-features
      - lint:check
      - test
      - test:default-features
      - test:std
      - test:num-traits
      - test:std-num-traits

  clean:
    desc: Remove Cargo build artifacts
    cmds:
      - "{{.CARGO}} clean"

  docs:
    desc: Build rustdoc
    aliases:
      - doc
    cmds:
      - "{{.CARGO}} doc --no-deps --all-features"

  docs:open:
    desc: Build rustdoc (and open them)
    aliases:
      - doc:open
    cmds:
      - "{{.CARGO}} doc --no-deps --all-features --open"