zinit 0.3.6

Process supervisor with dependency management
Documentation
[package]
name = "zinit"
version = "0.3.6"
edition = "2024"
license = "Apache-2.0"
repository = "https://forge.ourworld.tf/geomind_code/zinit"
description = "Process supervisor with dependency management"

[lib]
name = "zinit"
path = "src/lib.rs"

[[bin]]
name = "zinit"
path = "src/bin/zinit.rs"
required-features = ["client"]

[[bin]]
name = "zinit-server"
path = "src/bin/zinit-server.rs"
required-features = ["server"]

[[bin]]
name = "zinit-pid1"
path = "src/bin/zinit-pid1.rs"
required-features = ["pid1"]

[features]
default = ["client", "server"]

# SDK - shared types, config, protocol (always included in lib)
sdk = []

# Client features
client = ["sdk", "clap"]
tui = ["client", "ratatui", "crossterm", "tokio", "async"]
repl = ["client", "rustyline", "colored", "dirs"]
client-full = ["client", "tui", "repl"]

# Server features
server = ["sdk", "tokio", "petgraph", "nix", "anyhow", "tracing", "tracing-subscriber", "clap", "sysinfo", "log"]

# PID1 features (Linux only)
pid1 = ["sdk", "nix", "tracing", "tracing-subscriber", "clap"]

# Async client support
async = ["tokio"]

# Build everything
full = ["client-full", "server", "pid1"]

[dependencies]
# Serialization (always needed for SDK)
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
toml = "0.9"

# Error handling
thiserror = "2.0"

# Async runtime (optional)
tokio = { version = "1.48", features = ["full", "process"], optional = true }

# Graph (server)
petgraph = { version = "0.8", optional = true }

# Unix (server, pid1)
nix = { version = "0.30", features = ["signal", "process", "reboot", "fs"], optional = true }
libc = "0.2"

# Error handling (server)
anyhow = { version = "1.0", optional = true }

# Logging (server, pid1)
tracing = { version = "0.1", optional = true }
tracing-subscriber = { version = "0.3", features = ["env-filter"], optional = true }

# CLI (client, server, pid1)
clap = { version = "4.5", features = ["derive"], optional = true }

# TUI (client optional)
ratatui = { version = "0.30", optional = true }
crossterm = { version = "0.29", optional = true }

# REPL (client optional)
rustyline = { version = "17.0.2", optional = true }
colored = { version = "3.0.0", optional = true }
dirs = { version = "6.0.0", optional = true }

# System info (server)
sysinfo = { version = "0.37.2", optional = true }

# System volume handling (server)
log = { version = "0.4", optional = true }

[dev-dependencies]
tempfile = "3.14"
rstest = "0.23"
serial_test = "3.2"
tokio = { version = "1.48", features = ["full", "process", "test-util"] }