formualizer-cli 0.11.0

Source-preserving XLSX formula-cache recalculation command
Documentation
[package]
name = "formualizer-cli"
version = "0.11.0"
edition = "2024"
description = "Source-preserving XLSX formula-cache recalculation command"
readme = "README.md"
keywords = ["xlsx", "excel", "spreadsheet", "formula", "cli"]
categories = ["command-line-utilities"]
license.workspace = true
repository.workspace = true
homepage.workspace = true

# Prebuilt binaries attached to the product GitHub release (see
# .github/workflows/cli-build.yml) for `cargo binstall formualizer-cli`.
[package.metadata.binstall]
pkg-url = "{ repo }/releases/download/v{ version }/formualizer-cli-v{ version }-{ target }.tar.gz"
bin-dir = "formualizer-cli-v{ version }-{ target }/{ bin }{ binary-ext }"
pkg-fmt = "tgz"

[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
pkg-url = "{ repo }/releases/download/v{ version }/formualizer-cli-v{ version }-{ target }.zip"
pkg-fmt = "zip"

[features]
default = ["signals", "system-clock"]
system-clock = ["formualizer-workbook/system-clock"]
# Bindings disable defaults and supply their own cancellation token.
signals = ["dep:ctrlc"]

[dependencies]
formualizer-common.workspace = true
formualizer-eval = { path = "../formualizer-eval", version = "0.11.0", default-features = false }
chrono = { workspace = true, features = ["clock"] }
formualizer-workbook = { path = "../formualizer-workbook", version = "0.11.0", default-features = false, features = ["xlsx-recalc"] }
clap = { workspace = true, features = ["derive"] }
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
ctrlc = { version = "3.5.2", optional = true }

# musl's allocator makes the parallel evaluator orders of magnitude slower
# (a 9k SUMPRODUCT workbook: >90 s vs ~7.6 s with jemalloc, matching glibc).
# Static musl binaries therefore use jemalloc; other targets keep the system
# allocator.
[target.'cfg(target_env = "musl")'.dependencies]
tikv-jemallocator = "0.6"

[[bin]]
name = "formualizer"
path = "src/main.rs"
required-features = ["signals"]

[dev-dependencies]
tempfile.workspace = true
zip = { version = "7.2", default-features = false, features = ["deflate"] }