zenops 0.19.0

Declarative system configuration management for shell config and dotfiles.
Documentation
# Inner loop: fast sanity check before commits.
default: fmt-check clippy

# Apply formatters and clippy autofixes. Mutates the working tree.
fix:
    cargo fmt --all
    cargo clippy --fix --workspace --allow-dirty --allow-staged --all-targets --all-features

# --- atomic recipes (read-only, composable) ---

fmt-check:
    cargo fmt --all -- --check

clippy:
    cargo clippy --locked --workspace --all-targets --all-features -- -D warnings

test FILTER='':
    cargo test --locked --workspace --all-targets --all-features {{FILTER}}
    cargo test --locked --workspace --doc --all-features {{FILTER}}

release-build:
    cargo build --locked --workspace --all-features --release

doc:
    RUSTDOCFLAGS="-D warnings" cargo doc --locked --workspace --all-features --no-deps

package:
    cargo package --locked --workspace --allow-dirty --no-verify

# Cross-platform integration matrix. Docker required; slow; opt-in.
e2e:
    @command -v docker >/dev/null 2>&1 || { echo "ERROR: docker required (install Docker or start colima)" >&2; exit 1; }
    @docker info >/dev/null 2>&1 || { echo "ERROR: docker daemon not reachable (start colima or your Docker engine)" >&2; exit 1; }
    @command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 required" >&2; exit 1; }
    python3 tests/cross-platform/run.py

# --- composites ---

# PR-time gate. The GitHub Action runs the same atomic recipes.
ci: fmt-check clippy test doc

# Full release gate. Invoked by the bump-version skill.
prerelease: ci release-build package e2e