[package]
name = "cobre-cli"
description = "Command-line interface for Cobre power system studies"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
authors.workspace = true
readme = "README.md"
keywords = ["power-systems", "cli", "energy", "sddp", "simulation"]
categories = ["command-line-utilities", "science"]

[[bin]]
name = "cobre"
path = "src/main.rs"
doc = false

[dependencies]
cobre-core = { version = "0.8.1", path = "../cobre-core", features = ["serde"] }
cobre-io = { version = "0.8.1", path = "../cobre-io", features = ["schema"] }
cobre-sddp = { version = "0.8.1", path = "../cobre-sddp", default-features = false }
cobre-solver = { version = "0.8.1", path = "../cobre-solver", default-features = false }
cobre-comm = { version = "0.8.1", path = "../cobre-comm" }
cobre-stochastic = { version = "0.8.1", path = "../cobre-stochastic" }
clap = { version = "4", features = ["derive"] }
postcard = { version = "1", features = ["alloc"] }
console = "0.16"
indicatif = "0.18"
rayon = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
thiserror = "2"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

[features]
## Default feature set: build against the HiGHS solver backend.
default = ["highs"]

## Select the HiGHS LP solver backend across the dependency graph.
##
## Forwards to both `cobre-solver` and `cobre-sddp`; forwarding to only one
## leaves the other on its own `highs` default and re-trips the mutually
## exclusive `compile_error!` in `cobre-solver`.
highs = ["cobre-solver/highs", "cobre-sddp/highs"]

## Select the CLP/CoinUtils LP solver backend across the dependency graph.
clp = ["cobre-solver/clp", "cobre-sddp/clp"]

mpi = ["cobre-comm/mpi"]
## Opt-in to the slow test suite (no slow tests currently in this crate;
## declaration reserved for workspace consistency).
slow-tests = []

[dev-dependencies]
arrow = { version = "58", default-features = false }
assert_cmd = "2"
chrono = { version = "0.4", default-features = false, features = ["std"] }
cobre-io = { version = "0.8.1", path = "../cobre-io" }
cobre-solver = { version = "0.8.1", path = "../cobre-solver", default-features = false }
parquet = { version = "58", default-features = false, features = ["arrow"] }
predicates = "3"
tempfile = "3"

[lints]
workspace = true
