# helm reads MegaMek's unit library and writes a queryable database of it. # # Crate names are prefixed (helm-*) so a binary's name is unambiguous outside # this repo, matching headquarters. [workspace] resolver = "3" members = [ "crates/helm-core", "crates/helm-unitfile", "crates/helm-facet", "crates/helm-query", "crates/helm-force", "crates/helm-bv", "crates/helm-cost", "crates/helm-bridge", "crates/helm-db", "crates/helm-cli", "crates/helm-mcp", "crates/helm-wasm", ] [workspace.package] version = "0.1.0" edition = "2024" publish = false [workspace.dependencies] helm-core = { path = "crates/helm-core" } helm-unitfile = { path = "crates/helm-unitfile" } helm-facet = { path = "crates/helm-facet" } helm-query = { path = "crates/helm-query" } helm-force = { path = "crates/helm-force" } helm-bv = { path = "crates/helm-bv" } helm-cost = { path = "crates/helm-cost" } helm-bridge = { path = "crates/helm-bridge" } helm-db = { path = "crates/helm-db" } helm-wasm = { path = "crates/helm-wasm" } # bundled: the build compiles its own libsqlite3, so no system package is # needed. Same version headquarters pins. rusqlite = { version = "0.40", features = ["bundled"] } # MegaMek ships its unit library as data/mekfiles/unit_files.zip and only # extracts it at runtime, so reading the zip directly avoids asking anyone to # unpack 11k files first. zip = { version = "6", default-features = false, features = ["deflate"] } # Only for reading the bridge's JSON Lines. The parsers themselves are # hand-written against MegaMek's formats and pull in nothing. serde = { version = "1", features = ["derive"] } serde_json = "1" # A real parser for the one real format MegaMek uses. Pull-based, no entity # expansion and no external entities, so the hostile-input cases XML is known # for are not reachable. quick-xml = { version = "0.38", default-features = false }