pitchfork-cli 2.32.2

Daemons with DX
Documentation
[package]
name = "pitchfork-cli"
description = "Daemons with DX"
license = "MIT"
version = "2.32.2"
edition = "2024"
resolver = "3"
rust-version = "1.95"
homepage = "https://pitchfork.jdx.dev"
repository = "https://github.com/jdx/pitchfork"
documentation = "https://pitchfork.jdx.dev"
build = "build.rs"
include = [
    "src/**/*.rs",
    "assets/**/*",
    "ui/dist/**/*",
    "/pitchfork-extras.usage.kdl",
    "/build.rs",
]

[[bin]]
name = "pitchfork"
path = "src/main.rs"

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

[features]
default = ["proxy-tls"]
proxy-tls = ["rcgen", "tokio-rustls", "rustls-pemfile", "x509-parser"]

[dependencies]
auto-launcher = "1"
chrono = { version = "0.4", features = ["serde"] }
usage_rs = { package = "usage-rs", version = "7", features = ["completions", "diagnostics", "config"] }
# Direct dependency so the "toml" feature (FileLayer's TOML reader) is enabled;
# usage-rs's "config" feature re-exports this crate as usage_rs::config.
usage-config = { version = "7", features = ["toml"] }
clx = "3"
comfy-table = { version = "8", features = ["custom_styling"] }
console = "0.16"
cron = "0.17"
dirs = "7"
duct = "1"
dunce = "1"
exponential-backoff = "2"
indexmap = { version = "2", features = ["serde"] }
interprocess = { version = "2", features = ["tokio"] }
itertools = "0.15"
jaq-core = "3"
jaq-json = "2"
jaq-std = "3"
log = { version = "0.4", features = ["serde"] }
mdns-sd = "0.21"
mise-dotenv = "2026"
miette = { version = "7", features = ["fancy"] }
notify = { version = "8" }
notify-debouncer-full = "0.7"
once_cell = "1"
regex = "1"
reqwest = { version = "0.13", default-features = false, features = [
    "rustls-native-certs",
    "rustls-no-provider",
] }
rusqlite = { version = "0.40", features = ["bundled", "chrono", "functions"] }
rev_lines = "0.3"
rust-embed = { version = "8", features = ["axum"] }
axum = { version = "0.8" }
tower-http = { version = "0.7", features = ["fs", "cors"] }
hyper = { version = "1", features = ["full"] }
hyper-util = { version = "0.1", features = [
    "full",
    "client",
    "client-legacy",
    "http1",
    "http2",
    "tokio",
] }
http-body-util = "0.1"
rcgen = { version = "0.14", optional = true, features = ["x509-parser"] }
tokio-rustls = { version = "0.26", optional = true, default-features = false, features = ["ring", "tls12"] }
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12"] }
# The verifier reqwest uses, built once for the probe clients' shared TLS settings.
rustls-platform-verifier = "0.7"
# Force hyper-rustls (pulled in by reqwest) to use ring instead of aws-lc-rs.
hyper-rustls = { version = "0.27", default-features = false, features = ["ring", "http1", "http2", "tls12"] }
rustls-pemfile = { version = "2", optional = true }
x509-parser = { version = "0.18", optional = true }
tokio-stream = "0.1"
async-stream = "0.3"
mime_guess = "2"
schemars = { version = "1", features = ["indexmap2"] }
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1", features = ["indexmap"] }
shell-words = "1"
strum = { version = "0.28", features = ["derive"] }
tera = "2"
sysinfo = "0.39"
thiserror = "2"
tokio = { version = "1", features = ["full"] }
tokio-util = { version = "0.7", features = ["rt"] }
toml = { version = "1", features = ["preserve_order"] }
rmcp = { version = "3", features = ["server", "transport-io"] }
uuid = { version = "1", features = ["v4", "fast-rng"] }
xx = { version = "2", features = ["fslock", "hash"] }
ratatui = { version = "0.30", features = ["unstable-rendered-line-info"] }
crossterm = "0.29"
fuzzy-matcher = "0.3"
globset = "0.4"
humanbyte = { version = "0.4", features = ["serde", "derive", "schemars"] }
humantime = "2"
listeners = "0.6"
lru = "0.18"
derive_more = { version = "2", features = ["into", "display", "from", "deref", "as_ref"] }
vte = { version = "0.15", default-features = false }
demand = "2"

[target.'cfg(unix)'.dependencies]
exec = "0.3"
libc = "0.2"
nix = { version = "0.31", features = ["signal", "process", "user", "net", "ioctl"] }

[target.'cfg(target_os = "macos")'.dependencies]
plist = "1"

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = [
  "Win32_Foundation",
  "Win32_Globalization",
  "Win32_Security",
  "Win32_System_Console",
  "Win32_System_JobObjects",
  "Win32_System_Threading",
] }

[dev-dependencies]
# Parses launchd registrations; exercised on every platform by unit tests.
plist = "1"
tempfile = "3"
# `test-util` for `#[tokio::test(start_paused = true)]`, so tests that assert a
# timeout holds do not have to sleep through it. Features are additive, and a
# dev-dependency does not reach the shipped binary.
tokio = { version = "1", features = ["test-util"] }


[profile.dev]
debug = 1

[profile.serious]
inherits = "release"
lto = true
strip = true
codegen-units = 1