[package]
name = "pounce-cli"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
readme = "README.md"
description = "Command-line driver for POUNCE — solves built-in TNLPs and AMPL .nl files."
keywords = ["ipopt", "cli", "ampl", "nlp", "optimization"]
categories = ["mathematics", "command-line-utilities", "science"]

build = "build.rs"

[[bin]]
name = "pounce"
path = "src/main.rs"

# `pounce_sens` is a backward-compatibility alias for the older
# `pounce_sens <in.nl> <out.sol>` invocation. The sensitivity step is
# now part of the main `pounce` binary (auto-detected from the `.nl`
# suffixes); this binary is a thin shim that re-exports `main.rs`,
# kept only so existing AMPL/solver scripts that name `pounce_sens`
# keep working.
[[bin]]
name = "pounce_sens"
path = "src/bin/pounce_sens.rs"

[dependencies]
pounce-common.workspace = true
pounce-nlp = { workspace = true, features = ["serde"] }
pounce-algorithm.workspace = true
pounce-restoration.workspace = true
pounce-feral.workspace = true
pounce-hsl = { workspace = true, optional = true }
pounce-linsol.workspace = true
pounce-presolve.workspace = true
pounce-linalg.workspace = true
pounce-sensitivity.workspace = true
pounce-solve-report.workspace = true
pounce-observability.workspace = true
serde = { version = "1", features = ["derive"] }
serde_json = "1"
libloading = "0.8"
tracing.workspace = true
anstream.workspace = true
anstyle.workspace = true

[features]
default = []
# Enable the HSL MA57 backend (requires libcoinhsl). When enabled, also
# turns on the matching feature in pounce-algorithm so the option
# `linear_solver = ma57` resolves to MA57 instead of falling back to FERAL.
ma57 = ["dep:pounce-hsl", "pounce-algorithm/ma57"]

[lints]
workspace = true
