# 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
# Refresh vendored JS deps (Alpine, MiniSearch) under docs/book/theme/vendor/.
# Overwrites committed copies; run periodically and review the diff before
# pushing. Not part of the routine docs build.
vendor-js-update:
mkdir -p docs/book/theme/vendor
curl -fL --output docs/book/theme/vendor/alpine.min.js https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js
curl -fL --output docs/book/theme/vendor/minisearch.min.js https://cdn.jsdelivr.net/npm/minisearch@7/dist/umd/index.min.js
# Generate the schema snapshot + CLI reference and build the mdBook site.
# Outputs to docs/book/book/ (gitignored). Requires mdbook on PATH.
docs-build:
@command -v mdbook >/dev/null 2>&1 || { echo "ERROR: mdbook required (cargo install mdbook)" >&2; exit 1; }
mkdir -p docs/book/theme/assets
cargo run --quiet -- schema > docs/book/theme/assets/schema-snapshot.json
printf 'window.ZENOPS_SCHEMA = ' > docs/book/theme/assets/schema-snapshot.js
cat docs/book/theme/assets/schema-snapshot.json >> docs/book/theme/assets/schema-snapshot.js
printf ';\n' >> docs/book/theme/assets/schema-snapshot.js
cargo run --quiet -- cli-markdown > docs/book/src/reference/cli.md
mdbook build docs/book
# 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