diff --git a/Cargo.lock b/Cargo.lock index 278fe28..1c8c596 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -408,6 +408,21 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kubernetes-like" +version = "0.1.0" +dependencies = [ + "anyhow", + "nocontrol", + "nocontrol-tui", + "rand", + "serde", + "tokio", + "tracing", + "tracing-subscriber", + "uuid", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -492,7 +507,6 @@ dependencies = [ "hex", "insta", "jiff", - "nocontrol-tui", "rand", "serde", "serde_json", @@ -500,7 +514,6 @@ dependencies = [ "tokio", "tokio-util", "tracing", - "tracing-subscriber", "tracing-test", "uuid", ] diff --git a/Cargo.toml b/Cargo.toml index a47e757..0dcac3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -members = ["crates/*"] +members = ["crates/*", "examples/*"] resolver = "2" [workspace.package] @@ -7,7 +7,12 @@ version = "0.0.1" [workspace.dependencies] nocontrol = { path = "crates/nocontrol" } +nocontrol-tui = { path = "crates/nocontrol-tui" } anyhow = { version = "1.0.71" } tokio = { version = "1", features = ["full"] } tracing = { version = "0.1", features = ["log"] } +rand = "0.9.2" +uuid = { version = "1.19.0", features = ["serde", "v4", "v7"] } +serde = { version = "1.0.228", features = ["derive"] } +tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } diff --git a/README.md b/README.md index 5333e05..0e38dbe 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,19 @@ A Rust library for building Kubernetes-style reconciliation controllers. Define ## Quick Start +Add to your `Cargo.toml`: + +```toml +[package] +... + +[dependencies] +nocontrol = "0.0.1" +... +``` + +> **Note:** Requires Rust nightly (edition 2024). + ```rust use nocontrol::{ ControlPlane, Operator, OperatorState, Specification, diff --git a/crates/nocontrol/Cargo.toml b/crates/nocontrol/Cargo.toml index a16dec0..4a582d7 100644 --- a/crates/nocontrol/Cargo.toml +++ b/crates/nocontrol/Cargo.toml @@ -14,17 +14,15 @@ anyhow.workspace = true async-trait = "0.1.89" hex = "0.4.3" jiff = { version = "0.2.17", features = ["serde"] } -rand = "0.9.2" -serde = { version = "1.0.228", features = ["derive"] } +rand.workspace = true +serde.workspace = true serde_json = "1.0.148" sha2 = "0.10.9" tokio.workspace = true tokio-util = "0.7.18" tracing.workspace = true -uuid = { version = "1.19.0", features = ["serde", "v4", "v7"] } +uuid.workspace = true [dev-dependencies] -nocontrol-tui = { path = "../nocontrol-tui", version = "0.1.0" } insta = "1.46.0" -tracing-subscriber = { version = "0.3.22", features = ["env-filter"] } tracing-test = { version = "0.2.5", features = ["no-env-filter"] } diff --git a/examples/kubernetes-like/Cargo.toml b/examples/kubernetes-like/Cargo.toml new file mode 100644 index 0000000..01494ce --- /dev/null +++ b/examples/kubernetes-like/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "kubernetes-like" +version = "0.1.0" +edition = "2024" +publish = false + +[dependencies] +nocontrol.workspace = true +nocontrol-tui.workspace = true + +anyhow.workspace = true +tokio.workspace = true +serde.workspace = true +tracing-subscriber.workspace = true +tracing.workspace = true +rand.workspace = true +uuid.workspace = true diff --git a/crates/nocontrol/examples/kubernetes-like/main.rs b/examples/kubernetes-like/src/main.rs similarity index 100% rename from crates/nocontrol/examples/kubernetes-like/main.rs rename to examples/kubernetes-like/src/main.rs