[package]
name = "aoba"
description.workspace = true
repository.workspace = true
license.workspace = true
authors.workspace = true
version.workspace = true
edition.workspace = true

build = "build.rs"
exclude.workspace = true

[workspace]
members = [".", "examples/*"]
default-members = ["."]
resolver = "2"

[workspace.package]
authors = ["langyo <langyo.china@gmail.com>"]
description = "Multi-protocol debugging and simulation CLI/TUI tool for Modbus RTU."
repository = "https://github.com/celestia-island/aoba"
license = "Apache-2.0"
version = "0.0.6"
edition = "2021"
exclude = [
  "docs/**",
  "examples/**",
  "scripts/**",
  "res/mono-sc-nerd.ttf",
  ".trae/**",
  ".github/**",
  "CLAUDE.md",
]

[profile.release]
lto = true
opt-level = 'z'
codegen-units = 1
panic = "abort"

[workspace.dependencies]
anyhow = { version = "^1", features = ["backtrace"] }
async-trait = "^0.1"
cfg-if = "^1"
derive_more = { version = "^2", features = ["full"] }
num_enum = "^0.7"
once_cell = "^1"
parking_lot = "^0.12"

base64 = "^0.22"
bytes = "^1"
chrono = { version = "^0.4", features = ["serde", "unstable-locales"] }
percent-encoding = "^2"
sqids = "^0.4"
url = "^2"

serde = { version = "^1", features = ["derive"] }
serde_json = "^1"
serde_json_path = "^0.7"
postcard = { version = "^1", features = ["alloc"] }
strum = { version = "^0.27", features = ["derive"] }
toml = "^0.9"
semver = "^1"
uuid = { version = "^1", features = [
  "v4",
  "v7",
  "fast-rng",
  "macro-diagnostics",
  "serde",
] }
yuuka = "^0.6"
rand = "^0.9"

clap = "^4"
env_logger = "^0.11"
log = "^0.4"
tracing = "^0.1"
tracing-appender = "^0.2"
tracing-subscriber = { version = "^0.3", features = ["env-filter"] }

flume = "^0.11"
tokio = { version = "^1", features = ["full"] }
futures = "^0.3"
oneshot = "^0.1"
tokio-test = "^0.4"

whoami = "^1"
crossterm = "^0.29"

ratatui = "^0.29"
unicode-width = "^0.2"

rmodbus = { version = "^0.12", features = ["with_serde"] }
libc = "^0.2"
serialport = { version = "^4", default-features = false }
interprocess = "^2"
ureq = { version = "^3", features = ["json"] }
rumqttc = "^0.25"
axum = "^0.8"

expectrl = "^0.8"
regex = "^1"
vt100 = "^0.15"
ctrlc = "^3"

[dependencies]
anyhow.workspace = true
async-trait.workspace = true
cfg-if.workspace = true
derive_more.workspace = true
num_enum.workspace = true
once_cell.workspace = true
parking_lot.workspace = true

base64.workspace = true
bytes.workspace = true
chrono.workspace = true
percent-encoding.workspace = true
sqids.workspace = true
url.workspace = true

serde.workspace = true
serde_json.workspace = true
serde_json_path.workspace = true
postcard.workspace = true
strum.workspace = true
toml.workspace = true
uuid.workspace = true
yuuka.workspace = true
rand.workspace = true

clap.workspace = true
env_logger.workspace = true
log.workspace = true
tracing.workspace = true
tracing-appender.workspace = true
tracing-subscriber.workspace = true

flume.workspace = true
futures.workspace = true
oneshot.workspace = true
tokio.workspace = true

whoami.workspace = true
crossterm.workspace = true

ratatui.workspace = true
unicode-width.workspace = true
ctrlc.workspace = true

rmodbus.workspace = true
libc.workspace = true
serialport.workspace = true
interprocess.workspace = true
ureq.workspace = true
rumqttc.workspace = true
axum.workspace = true

[dev-dependencies]
tokio-test.workspace = true

[build-dependencies]
anyhow.workspace = true
serde_json.workspace = true
toml.workspace = true
semver.workspace = true

[target.'cfg(windows)'.dependencies]
windows = { version = "^0.62", features = [
  "Win32_Foundation",
  "Win32_Storage_FileSystem",
  "Win32_System_IO",
  "Win32_Security",
  "Win32_System_Threading",
] }
