leviath-sys 0.1.1

Platform/OS-specific system calls for Leviath, isolated behind a cross-platform API: file permissions, detached process spawning, signals, controlling TTY, and executable resolution
Documentation
[package]
name = "leviath-sys"
description = "Platform/OS-specific system calls for Leviath, isolated behind a cross-platform API: file permissions, detached process spawning, signals, controlling TTY, and executable resolution"
version.workspace = true
edition.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
rust-version.workspace = true
keywords.workspace = true
categories.workspace = true
readme = "README.md"

[features]
# On by default; turn it off for a target `keyring` does not support, or for a
# minimal build that should not link platform credential libraries at all. With
# it off `leviath_sys::keychain::is_supported()` is false and every operation
# reports plainly instead of pretending an empty store.
default = ["keychain"]
keychain = ["dep:keyring", "dep:keyring-core"]

[dependencies]
tracing = { workspace = true }

# The OS credential store (macOS Keychain / Windows Credential Manager / Secret
# Service). Optional: see the `keychain` feature above. `keyring-core` is used
# directly for the `Entry` API so tests can install an in-memory store as the
# process default -- no CI runner has an unlocked login keychain, and reaching a
# developer's real one would raise an OS prompt and hang.
#
# NOT under `[target.'cfg(unix)'.dependencies]`, where these first landed: the
# `keychain` feature is unconditional, so on Windows that enabled `dep:keyring`
# for a dependency that did not exist for the target and the crate failed to
# compile. macOS and Linux both being unix hid it until CI.
keyring = { version = "4", optional = true }
keyring-core = { version = "1", optional = true }

[target.'cfg(unix)'.dependencies]
nix = { workspace = true }

[dev-dependencies]
tempfile = "3"
# `std::env::set_var` is unsafe and this crate forbids unsafe, so environment
# manipulation in tests goes through closures.
temp-env = { workspace = true }

[lints]
workspace = true