[package]
edition = "2021"
name = "acorn-lib"
readme = "README.md"
description = "ACORN library"
repository = "https://code.ornl.gov/research-enablement/acorn"
categories = [
  "command-line-utilities",
  "data-structures",
  "development-tools",
  "parsing",
  "science",
]
authors.workspace = true
documentation.workspace = true
keywords.workspace = true
license.workspace = true
version.workspace = true

[lib]
name = "acorn"

[badges]
maintenance = { status = "actively-developed" }

[dependencies]
aho-corasick = { version = "1.1.4", default-features = false }
bat = { version = "0.26.0", features = ["regex-onig"], default-features = false, optional = true }
bon = { version = "3.8.1", default-features = false }
chrono = { version = "0.4.42", features = ["clock", "serde"], default-features = false }
comfy-table = { version = "7.2.1", default-features = false }
console = { version = "0.16.1", features = ["ansi-parsing"], default-features = false }
convert_case = { version = "0.8.0", default-features = false }
directories = { version = "6.0.0", default-features = false }
duct = { version = "1.1.0", default-features = false, optional = true }
fancy-regex = { version = "0.16.2", default-features = false }
flate2 = { version = "1.1.5", default-features = false }
human-units = { version = "0.5.3", default-features = false }
lychee-lib = { version = "0.21.0", default-features = false, optional = true }
hashbrown = { version = "0.16.0", features = ["default-hasher"], default-features = false }
is_executable = { version = "1.0.5", default-features = false }
itertools = { version = "0.14.0", default-features = false }
nanoid = { version = "0.4.0", default-features = false }
nucleo-matcher = { version = "0.3.1", features = ["unicode-casefold", "unicode-normalization"] , default-features = false }
percy-dom = {version = "0.10.0", features = ["macro"], default-features = false }
petgraph = { version = "0.8.3", features = ["stable_graph"], default-features = false }
polars = { version = "0.51.0", features = ["lazy"], default-features = false }
quick-xml = { version = "0.38.3", features = ["serialize"], default-features = false }
reqwest = { version = "0.12.24", features = ["blocking", "rustls-tls", "json"], default-features = false, optional = true }
ring = { version = "0.17.14", default-features = false }
rust-ini = { version = "0.21.3", default-features = false }
schemars = { version = "1.0.4", features = ["derive"], default-features = false}
serde_trim = { version = "1.1.0", default-features = false }
serde_with = { version = "3.15.1", features = ["macros"], default-features = false }
similar = { version = "2.7.0", features = ["text"], default-features = false}
sysinfo = { version = "0.37.2", features = ["network", "system"], default-features = false}
tar = { version = "0.4.44", default-features = false }
tokio = { version = "1.48.0", default-features = false, features = ["rt"], optional = true }
urlencoding = { version = "2.1.3", default-features = false}
validator = { version = "0.20.0", features = ["derive"], default-features = false }
which = { version = "8.0.0", features = ["real-sys"], default-features = false, optional = true }
zip = { version = "6.0.0", features = ["deflate"], default-features = false }
color-eyre = { workspace = true }
data-encoding = { workspace = true }
derive_more = { workspace = true }
dotenvy = { workspace = true }
glob = { workspace = true }
indicatif = { workspace = true }
lazy_static = { workspace = true }
owo-colors = { workspace = true }
rayon = { workspace = true }
rust-embed = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_repr = { workspace = true }
serde_yml = { workspace = true }
tracing = { workspace = true }
uriparse = { workspace = true }

[dev-dependencies]
mockall = "0.13.1"
pretty_assertions = "1.4.1"
similar-asserts = "1.7.0"
temp-env = "0.3.6"

[features]
analyzer = ["dep:bat"]
default = ["analyzer", "std"]
doctor = []
powerpoint = []
std = ["dep:duct", "dep:lychee-lib", "dep:reqwest", "dep:tokio", "dep:which"]

[lints.rust]
missing-docs = "deny"
rust-2018-idioms = "warn"
unsafe_code = "forbid"

[lints.clippy]
std_instead_of_core = "warn"
std_instead_of_alloc = "warn"
alloc_instead_of_core = "warn"
