[package]
name = "pueue"
version = "4.0.0"
description = "A cli tool for managing long running shell commands."
readme = "../README.md"
keywords = ["command", "parallel", "queue", "shell", "task"]
authors.workspace = true
edition.workspace = true
homepage.workspace = true
license.workspace = true
repository.workspace = true
rust-version.workspace = true

[badges]
maintenance = { status = "actively-developed" }

[[bench]]
harness = false
name = "save_compressed_state"

[[bench]]
harness = false
name = "save_state"

[dependencies]
async-trait.workspace = true
chrono.workspace = true
clap = { version = "4.5", features = ["cargo", "derive", "help", "wrap_help"] }
clap_complete = "4.5"
clap_complete_nushell = "4.5.5"
color-eyre.workspace = true
comfy-table = "7"
command-group.workspace = true
ctrlc = { version = "3", features = ["termination"] }
flate2 = "1"
handlebars.workspace = true
interim = { version = "0.2", features = ["chrono_0_4"] }
pest = "2.8"
pest_derive = "2.8"
pueue-lib = { version = "0.29", path = "../pueue_lib", features = ["client"] }
rcgen = "0.13"
rustls.workspace = true
rustls-pemfile.workspace = true
serde.workspace = true
serde_json.workspace = true
serde_yaml.workspace = true
shell-escape = "0.1"
snap.workspace = true
strum.workspace = true
tempfile = "3"
tokio.workspace = true
tokio-rustls.workspace = true
toml = "0.8"
tracing.workspace = true
tracing-error.workspace = true
tracing-subscriber.workspace = true

[dev-dependencies]
assert_cmd = "2"
assert_matches = "1"
better-panic.workspace = true
ciborium = { workspace = true }
criterion = "0.5"
pretty_assertions.workspace = true
rstest = "0.25"
similar-asserts = "1"

# --- Platform specific dependencies ---

# Linux
[target.'cfg(target_os = "linux")'.dependencies]
procfs = { version = "0.17", default-features = false }

# Linux + Mac OS
[target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies]
libproc = "0.14.10"

# Windows
# We don't need any of the default features for crossterm.
# However, the windows build needs the windows feature enabled.
[target.'cfg(not(windows))'.dependencies]
crossterm = { version = "0.28", default-features = false }
[target.'cfg(windows)'.dependencies]
crossterm = { version = "0.28", default-features = false, features = [
    "windows",
] }
winapi = { version = "0.3", features = [
    "errhandlingapi",
    "impl-default",
    "minwindef",
    "processthreadsapi",
    "tlhelp32",
] }
windows = { version = "0.61.1", features = [
    "Win32_Security",
    "Win32_System_Environment",
    "Win32_System_RemoteDesktop",
    "Win32_System_SystemServices",
    "Win32_System_Threading",
] }
windows-service = "0.8.0"
