Skip to content

Building and Testing

Everything runs through Docker; no host toolchain needed.

Building from source

docker compose build

This builds the partylinepagerd image from the Dockerfile: a multi-stage build that compiles the Rust workspace and installs the yopass CLI, Docker CLI, and compose plugin into a minimal Debian runtime image.

The full image (all transports in one container):

docker build -f deploy/Dockerfile.full -t partylinepager-full .

Running tests

compose/docker-compose.build-tools.yml carries a build-tools service. It builds from the same Dockerfile's build stage and keeps the cargo registry in ./.cache and build output in ./target, so repeat runs are fast and nothing root-owned lands in the checkout.

T="-f compose/docker-compose.build-tools.yml"

# Whole workspace
docker compose $T run --rm build-tools

# One crate
docker compose $T run --rm build-tools cargo test -p partylinepager-core

Ad-hoc cargo commands

The build-tools service is a general-purpose Rust environment. Any cargo command works:

T="-f compose/docker-compose.build-tools.yml"

# Check if a specific package can be updated
docker compose $T run --rm -T build-tools \
  cargo update -p imbl-sized-chunks --dry-run

# Show future-incompatibility report (compiler deprecation warnings)
docker compose $T run --rm -T build-tools \
  cargo report future-incompatibilities --id 1

# Inspect dependency tree for a crate
docker compose $T run --rm -T build-tools \
  cargo tree -p imbl-sized-chunks

# Check what depends on a specific crate
docker compose $T run --rm -T build-tools \
  cargo tree -i imbl-sized-chunks

Note

Always use -T (no TTY) and prefer run --rm so the container is cleaned up. When calling from a script, also redirect stdin: `