[package] name = "qsu" version = "0.7.0" edition = "2021" license = "0BSD" # https://crates.io/category_slugs categories = [ "os" ] keywords = [ "service", "systemd", "winsvc" ] repository = "https://repos.qrnch.tech/pub/qsu" description = "Service subsystem utilities and runtime wrapper." rust-version = "1.70" exclude = [ ".fossil-settings", ".efiles", ".fslckout", "www", "bacon.toml", "build_docs.sh", "Rocket.toml", "rustfmt.toml" ] # https://doc.rust-lang.org/cargo/reference/manifest.html#the-badges-section [badges] maintenance = { status = "experimental" } [features] default = ["rt"] clap = ["dep:clap", "dep:itertools"] full = ["clap", "installer", "rocket", "rt", "systemd", "tokio"] installer = ["dep:sidoc"] systemd = ["dep:sd-notify"] rocket = ["rt", "dep:rocket", "tokio"] rt = [] tokio = ["rt", "tokio/macros", "tokio/rt-multi-thread", "tokio/signal"] wait-for-debugger = ["dep:dbgtools-win"] [dependencies] async-trait = { version = "0.1.83" } chrono = { version = "0.4.38" } clap = { version = "4.5.20", optional = true, features = [ "derive", "env", "string", "wrap_help" ] } env_logger = { version = "0.11.5" } futures = { version = "0.3.31" } itertools = { version = "0.13.0", optional = true } killswitch = { version = "0.4.2" } log = { version = "0.4.22" } parking_lot = { version = "0.12.3" } rocket = { version = "0.5.1", optional = true } sidoc = { version = "0.1.0", optional = true } tokio = { version = "1.40.0", features = ["sync"] } time = { version = "0.3.36", features = ["macros"] } tracing = { version = "0.1.40" } [dependencies.tracing-subscriber] version = "0.3.18" default-features = false features = ["env-filter", "time", "fmt", "ansi"] [target.'cfg(target_os = "linux")'.dependencies] sd-notify = { version = "0.4.3", optional = true } [target.'cfg(unix)'.dependencies] libc = { version = "0.2.160" } nix = { version = "0.29.0", features = ["pthread", "signal", "time"] } [target.'cfg(windows)'.dependencies] dbgtools-win = { version = "0.2.1", optional = true } eventlog = { version = "0.2.2" } registry = { version = "1.2.3" } scopeguard = { version = "1.2.0" } windows-service = { version = "0.7.0" } windows-sys = { version = "0.59.0", features = [ "Win32_Foundation", "Win32_System_Console" ] } winreg = { version = "0.52.0" } [dev-dependencies] clap = { version = "4.5.20", features = ["derive", "env", "wrap_help"] } tokio = { version = "1.40.0", features = ["time"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs", "--generate-link-to-definition"] [[example]] name = "hellosvc" required-features = ["clap", "installer", "rt"] [[example]] name = "hellosvc-tokio" required-features = ["clap", "installer", "rt", "tokio"] [[example]] name = "hellosvc-rocket" required-features = ["clap", "installer", "rt", "rocket"] [lints.clippy] all = { level = "deny", priority = -1 } pedantic = { level = "warn", priority = -1 } nursery = { level = "warn", priority = -1 } cargo = { level = "warn", priority = -1 } multiple_crate_versions = "allow"