[package]
name = "tycho-cli"
description = "Node CLI."
include = ["src/**/*.rs", "res/**/*.boc", "./LICENSE-*", "./README.md", "build.rs"]
version.workspace = true
authors.workspace = true
edition.workspace = true
rust-version.workspace = true
repository.workspace = true
license.workspace = true

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

[dependencies]
# crates.io deps
anyhow = { workspace = true }
async-trait = { workspace = true }
base64 = { workspace = true }
bytes = { workspace = true }
bytesize = { workspace = true }
clap = { workspace = true }
clap-markdown = { workspace = true }
dirs = { workspace = true }
ed25519-dalek = { workspace = true }
futures-util = { workspace = true }
hex = { workspace = true }
humantime = { workspace = true }
num-bigint = { workspace = true }
num-traits = { workspace = true }
parking_lot = { workspace = true }
rand = { workspace = true }
rayon = { workspace = true }
reqwest = { workspace = true, features = ["http2", "json", "rustls-tls"] }
scopeguard = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true, features = ["preserve_order"] }
serde_path_to_error = { workspace = true }
tabled = { workspace = true, default-features = false, features = ["std"] }
tempfile = { workspace = true }
tikv-jemalloc-ctl = { workspace = true, optional = true }
tikv-jemallocator = { workspace = true, features = [
    "unprefixed_malloc_on_supported_platforms",
    "background_threads",
    "profiling",
], optional = true }
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "fs"] }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
tycho-crypto = { workspace = true }
tycho-types = { workspace = true, features = ["abi"] }
tycho-vm = { workspace = true }
weedb = { workspace = true }

# local deps
tycho-block-util = { workspace = true }
tycho-collator = { workspace = true }
tycho-control = { workspace = true, features = ["full"] }
tycho-core = { workspace = true, features = ["cli"] }
tycho-network = { workspace = true }
tycho-rpc = { workspace = true, features = ["http2"] }
tycho-storage = { workspace = true }
tycho-util = { workspace = true, features = ["cli"] }
tycho-wu-tuner = { workspace = true }
tycho-consensus = { workspace = true }

[dev-dependencies]
tycho-collator = { workspace = true, features = ["test"] }

[build-dependencies]
anyhow = { workspace = true }
rustc_version = { workspace = true }

[features]
default = ["jemalloc"]
jemalloc = ["dep:tikv-jemallocator", "dep:tikv-jemalloc-ctl"]
deadlock-detection = ["parking_lot/deadlock_detection"]
debug = ["tycho-consensus/test", "tycho-consensus/mock-feedback"]
lto = ["weedb/lto"]

[lints]
workspace = true

[package.metadata.cargo-shear]
# required for `deadlock-detection` feature
ignored = ["parking_lot"]