shep-deploy 0.2.4

A deploy dog for shep: watches a git branch, builds a release, swaps to it, and rolls back if it does not come up
[package]
name = "shep-deploy"
version = "0.2.4"
edition = "2024"
rust-version = "1.88"
license = "MIT OR Apache-2.0"
description = "A deploy dog for shep: watches a git branch, builds a release, swaps to it, and rolls back if it does not come up"
repository = "https://github.com/shep-pm/shep-deploy"
keywords = ["shep", "process-manager", "deploy", "git"]
categories = ["command-line-utilities"]

[dependencies]
shep-client = "0.2.0"
# Already in the tree: shep-core depends on it, so this is a direct edge on
# something every build of this crate already compiles. `fs` for `flock(2)`,
# `signal` for `killpg(2)`; both are safe wrappers, which is what lets a crate
# that forbids unsafe use them at all.
nix = { version = "0.29", default-features = false, features = ["fs", "signal"] }
# Also already in the tree: `tempfile` below depends on it, so this is a
# second direct edge on something every build of this crate already compiles.
# `fs` for `openat(2)` and the rest of the handle-based walk in `build.rs`.
#
# nix cannot do that walk. Its 0.29 `openat` hands back a bare `RawFd`, and
# turning one of those into a `File` needs `FromRawFd`, which is unsafe, and
# `main.rs` forbids unsafe outright. nix 0.31 does return an `OwnedFd`, but
# shep-core pins 0.29, so taking it would compile two copies of nix. rustix
# returns an `OwnedFd` and costs no compilation at all.
rustix = { version = "1", features = ["fs"] }
tokio = { version = "1", default-features = false, features = ["rt", "macros", "time", "process", "signal"] }
toml = "0.8"
# The staging file `State::write` goes through is shep-core's
# `atomic_file::create_staging_file`, which hands back a `NamedTempFile`;
# naming that type here is what needs the crate as a dependency in its own
# right, and it was already in the tree as a dev-dependency.
tempfile = "3"
serde = { version = "1", features = ["derive"] }
serde_json = "1"

[dev-dependencies]
tempfile = "3"
# `test-util` only: `#[tokio::test(start_paused = true)]` lets the deploy
# tests run out a real verification budget - a minute or more, for an app
# with several instances - in no wall-clock time.
tokio = { version = "1", features = ["test-util"] }

[features]
integration = []

[[test]]
name = "integration"
required-features = ["integration"]