cookcli-core 0.38.0

Recipe, shopping list, pantry and report operations for Cooklang, extracted from CookCLI
Documentation
[package]
name = "cookcli-core"
version = "0.38.0"
edition = "2021"
description = "Recipe, shopping list, pantry and report operations for Cooklang, extracted from CookCLI"
license = "MIT"
readme = "README.md"
repository = "https://github.com/cooklang/cookcli"
homepage = "https://cooklang.org"
keywords = ["cooklang", "recipes", "cooking"]
categories = ["parser-implementations"]

# Dependencies are added by the task that first needs them, so that this
# manifest always describes what the crate actually uses.
[dependencies]
camino = { version = "1", features = ["serde1"] }
# Reading and comparing the dates pantry items carry. Keep this declaration in
# step with the root manifest's.
chrono = "0.4"
# Keep this declaration in step with the root manifest's. `bundled_units` is
# deliberately absent: enabling it here would switch it back on for `cookcli`
# through feature unification and undo #433, which removed it so quantities
# keep their authored units.
# On a version bump, re-run the two tests that pin this crate's *error*
# behaviour rather than its results: `a_yield_target_in_another_unit_is_a_...`
# and `a_servings_target_on_a_recipe_without_servings_is_a_...`. The shopping
# list re-derives `scale_to_target`'s factor locally (`target_factor`) to pass
# it down a reference chain, and falls back to 1 where it cannot — safe only
# while every such case is one this crate refuses outright.
cooklang = { version = "0.19.0", default-features = false, features = ["aisle", "pantry", "shopping_list"] }
# Recipe lookup by path or bare name. Keep this declaration in step with the
# root manifest's, so both crates resolve the same version.
cooklang-find = { version = "0.10.0", default-features = false }
# The output formatters, split out so other projects can render recipes
# without depending on the CLI's internals. `version` + `path`: local builds
# use the workspace copy, the published crate resolves from crates.io.
cooklang-format = { version = "0.38.0", path = "../format" }
# Jinja2 report rendering. Keep this declaration in step with the root
# manifest's, so both crates resolve the same version.
cooklang-reports = "0.6.0"
directories = "6"
regex = "1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde_yaml = "0.9"
# `ansi-cell` lets the shopping-list table measure column widths ignoring escapes.
tabular = { version = "0.2", features = ["ansi-cell"] }
thiserror = "2"
# Editing pantry.conf as a document rather than rebuilding it from a parsed
# model, so that comments, layout and keys `cooklang` does not model survive a
# `cook pantry add` — see `pantry::edit`.
toml_edit = "0.25"
tracing = "0.1"
yansi = "1"

[dev-dependencies]
# Only the tests strip escape codes now; the formatters that emit them moved to
# `cooklang-format`.
anstream = "1.0"
tempfile = "3"