[package]
name = "procage"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
description = "Process sandboxing for Rust on macOS (Seatbelt, without sandbox-exec) and Linux (Landlock, seccomp, namespaces)"
repository.workspace = true
readme = "../../README.md"
authors.workspace = true
keywords = ["sandbox", "seatbelt", "landlock", "seccomp", "security"]
categories = ["os::macos-apis", "os::linux-apis", "api-bindings"]
include = ["/src", "/THREAT_MODEL.md", "/LICENSE-APACHE", "/LICENSE-MIT"]
[package.metadata.docs.rs]
default-target = "aarch64-apple-darwin"
targets = ["aarch64-apple-darwin", "x86_64-unknown-linux-gnu"]
features = ["tokio", "proxy"]
[[test]]
name = "exec"
path = "tests/exec.rs"
harness = false
[[test]]
name = "proxy"
path = "tests/proxy.rs"
required-features = ["proxy"]
[[test]]
name = "tokio"
path = "tests/tokio.rs"
required-features = ["tokio"]
[[bench]]
name = "spawn"
harness = false
[dependencies]
procage-policy = { workspace = true, features = ["serde"] }
serde.workspace = true
serde_json.workspace = true
sha2.workspace = true
[target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies]
libc.workspace = true
futures-core = { version = "0.3", default-features = false, optional = true }
tokio = { version = "1.47", default-features = false, features = ["process", "rt", "sync"], optional = true }
procage-proxy = { workspace = true, optional = true }
[features]
tokio = ["dep:tokio", "dep:futures-core"]
proxy = ["dep:procage-proxy"]
[dev-dependencies]
tokio = { version = "1.47", default-features = false, features = ["rt-multi-thread", "io-util", "time", "process", "sync"] }
[lints.rust]
unsafe_code = "deny"
missing_docs = "warn"
[lints.clippy]
all = { level = "deny", priority = -1 }
undocumented_unsafe_blocks = "deny"