deser-incomplete 0.1.2

Deserialize incomplete or broken data with Serde
Documentation

msrv := "1.75"

_default: all

dev: fmt clippy-allow-dead

all: fmt allchecks audit

# Extra checks that will introduce unnecessary changes (e.g. in Cargo.lock)
extra: fmt set-minimal-versions allchecks set-max-versions allchecks audit

allchecks: clippy test doc check-msrv generate-readme
check-minimal: fmt set-minimal-versions allchecks set-max-versions

clean:
    rm -rf target target-*
    just -f examples/vhs/justfile clean

motivating-example *extra_args:
    @cargo build --target-dir target --example print-slowly --example live
    @cat examples/motivating-example.json-fragment | target/debug/examples/print-slowly -t 0.1 --delay-at-start 2.5 | target/debug/examples/live --schema travel-modes {{extra_args}}

set-minimal-versions:
    rm -f Cargo.lock
    cargo +nightly -Z minimal-versions check --all-features --all-targets --keep-going

set-max-versions:
    rm -f Cargo.lock
    cargo check # generate Cargo.lock

clippy:
    cargo clippy --all-features
    cargo clippy
    cargo clippy --no-default-features --features serde_json --features rand
    cargo clippy --no-default-features --features serde_yaml --features rand
    cargo clippy --no-default-features --features serde_yaml
    cargo clippy --no-default-features --features serde_json
    cargo clippy --no-default-features
    cargo clippy --no-default-features --features tracing
    cargo clippy --all-targets --all-features

check-msrv:
    rustup install {{msrv}} --profile minimal
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --all-features
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features --features serde_json --features rand
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features --features serde_yaml --features rand
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features --features serde_yaml
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features --features serde_json
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --no-default-features --features tracing
    CARGO_TARGET_DIR=target-msrv cargo +{{msrv}} check --all-targets --all-features

clippy-allow-dead:
    cargo clippy --all-targets --all-features -- --allow dead_code
    cargo clippy --all-targets --no-default-features -- --allow dead_code

main-test:
    cargo test --no-fail-fast --all-targets --all-features

test: && doc-test
    cargo test --no-fail-fast --all-targets --all-features
    cargo test --no-fail-fast --all-targets --no-default-features

doc-test:
    cargo test --no-fail-fast --all-features --doc

insta:
    cargo test --no-fail-fast --all-targets --all-features

fmt:
    cargo +nightly fmt

doc:
    RUSTDOCFLAGS="--cfg docsrs" CARGO_TARGET_DIR=target-nightly cargo +nightly doc --lib --bins --examples --all-features --document-private-items --no-deps

doc-public-stable:
    RUSTDOCFLAGS="--cfg docsrs" CARGO_TARGET_DIR=target-nightly cargo +nightly doc --lib --bins --examples -F serde_yaml --no-deps

doc-public:
    RUSTDOCFLAGS="--cfg docsrs" CARGO_TARGET_DIR=target-nightly cargo +nightly doc --lib --bins --examples --all-features --no-deps

doc-open: doc
    xdg-open target-nightly/doc/deser_incomplete/index.html

doc-deps:
    # ratatui somehow cannot be built with `--cfg docsrs`
    CARGO_TARGET_DIR=target-nightly-deps cargo +nightly doc --lib --bins --examples --all-features

doc-deps-open:
    CARGO_TARGET_DIR=target-nightly-deps cargo +nightly doc --lib --bins --examples --all-features --open

generate-readme:
    # Remove markdown code links
    cargo readme --no-indent-headings \
        | rg --passthru '\[(`[:\w]+`)\]' -r '$1' > README.md.generated
    if diff -q README.md.generated README.md; then rm README.md.generated; fi

replace-readme: generate-readme
    if [ -f README.md.generated ] ; then mv README.md.generated README.md; fi

tokei:
    tokei --exclude json_output --exclude yaml_output

audit:
    cargo audit