[package]
name = "gen-cli"
description = "gen — operator-facing CLI. Subcommands: check (parse + print typed manifest), lock (regenerate lockfile-derived data), config-show (dump tier), config-diff (compare tiers). Wires every adapter to the operator through one binary; new adapters land in the dispatch table, not as new tools."
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
homepage.workspace = true
repository.workspace = true
authors.workspace = true

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

[lints]
workspace = true

[dependencies]
gen-types = { workspace = true }
gen-platform = { workspace = true }
gen-macros = { version = "0.1.0", path = "../gen-macros" }
gen-cargo = { workspace = true }
gen-npm = { workspace = true }
gen-bundler = { workspace = true }
# Scaffolded adapter stubs — link them so `inventory::submit!`
# registers them and `gen quirks` / `gen adapters` discover them
# at runtime. Adding a new ecosystem after `gen scaffold-adapter` =
# one line here.
gen-helm = { version = "0.1.0", path = "../gen-helm" }
gen-pip = { version = "0.1.0", path = "../gen-pip" }
gen-gomod = { version = "0.1.0", path = "../gen-gomod" }
gen-ansible = { version = "0.1.0", path = "../gen-ansible" }
gen-poetry = { version = "0.1.0", path = "../gen-poetry" }
gen-swift = { version = "0.1.0", path = "../gen-swift" }
gen-config = { workspace = true }
gen-nix = { workspace = true }
gen-cache-attic = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
serde_yaml = { workspace = true }
indexmap = { workspace = true }
clap = { workspace = true }
shikumi = { workspace = true }
thiserror = { workspace = true }
# Kanshou — live process introspection. `gen kanshou list/query/schema`
# is the operator-facing reflection over every introspectable process
# on this host. See pleme-io/kanshou.
kanshou = { version = "0.1", git = "https://github.com/pleme-io/kanshou" }
tokio = { version = "1", features = ["rt", "macros", "net", "io-util"] }
# tatara-lisp — homoiconic S-expression authoring surface. Powers
# `gen fleet-migrate`: the FleetMigrationPlan is authored as a typed
# `.tatara.lisp` and compiled via `#[derive(TataraDomain)]`. Standalone
# repo with no git deps of its own; pinned by rev.
tatara-lisp = { version = "0.2", git = "https://github.com/pleme-io/tatara-lisp.git", rev = "7921493d76632785906a0eabffa38f688cb2c3b0" }

[dev-dependencies]
# Cross-adapter catalog sweep test pulls every adapter so its
# inventory::submit! lands at link time.
gen-ansible = { version = "0.1.0", path = "../gen-ansible" }
gen-bundler = { path = "../gen-bundler" }
gen-cargo = { path = "../gen-cargo" }
gen-gomod = { version = "0.1.0", path = "../gen-gomod" }
gen-helm = { version = "0.1.0", path = "../gen-helm" }
gen-npm = { path = "../gen-npm" }
gen-pip = { version = "0.1.0", path = "../gen-pip" }
gen-poetry = { version = "0.1.0", path = "../gen-poetry" }
gen-swift = { version = "0.1.0", path = "../gen-swift" }
gen-platform = { path = "../gen-platform" }
tempfile = "3"
