[env]
GITHUB_REPO = "seanchatmangpt/ggen"
GITHUB_API = "https://api.github.com"
GITHUB_PAGES_URL = "https://seanchatmangpt.github.io/ggen"
ACT_CONTAINER_ARCH = "linux/amd64"
ACT_PLATFORM = "ubuntu-latest=catthehacker/ubuntu:act-latest"
ACT_MEMORY = "2g"
ACT_CPUS = "2"
[tasks.timeout-check]
description = "Verify timeout command exists (required for all tasks)"
workspace = false
command = "command"
args = ["-v", "timeout"]
ignore_errors = false
[tasks.check]
description = "Check code without building (quick feedback, 5s timeout)"
workspace = false
command = "timeout"
args = ["5s", "cargo", "check"]
[tasks.check-pre-push]
description = "Check code for pre-push hook (30s timeout for lock contention)"
workspace = false
command = "timeout"
args = ["30s", "cargo", "check"]
[tasks.build]
description = "Build in debug mode"
command = "timeout"
args = ["10s", "cargo", "build", "-p", "ggen-cli-lib", "--bin", "ggen"]
[tasks.build-release]
description = "Build in release mode"
command = "timeout"
args = [
"30s",
"cargo",
"build",
"--release",
"-p",
"ggen-cli-lib",
"--bin",
"ggen",
]
run_task = { name = "verify-binary" }
[tasks.verify-binary]
description = "Verify ggen binary was built"
workspace = false
script_runner = "@shell"
script = '''
#!/bin/bash
if [ -f "target/release/ggen" ]; then
echo "✅ Binary found: target/release/ggen"
ls -lh target/release/ggen
elif [ -f "target/debug/ggen" ]; then
echo "✅ Binary found: target/debug/ggen"
ls -lh target/debug/ggen
else
echo "❌ Binary not found in expected locations"
exit 1
fi
'''
[tasks.clean]
description = "Clean build artifacts"
command = "timeout"
args = ["5s", "cargo", "clean"]
[tasks.fmt]
description = "Format code"
command = "timeout"
args = ["5s", "cargo", "fmt", "--all"]
[tasks.lint]
description = "Run clippy with strict settings"
workspace = false
command = "timeout"
args = [
"5s",
"cargo",
"clippy",
"--all-targets",
"--all-features",
"--",
"-D",
"warnings",
]
[tasks.pre-commit]
description = "Run pre-commit validation checks (format, lint, test, hooks, docs)"
workspace = false
dependencies = [
"timeout-check",
"fmt",
"lint",
"test",
"test-doc",
"validate-docs",
"docs-check",
]
script_runner = "@shell"
script = '''
# Run git hook validation if available
if [ -f .git/hooks/pre-commit ]; then
echo "🔍 Running pre-commit hook validation..."
.git/hooks/pre-commit || {
echo "❌ Pre-commit hook validation failed"
echo " Fix all issues before committing"
exit 1
}
echo "✅ Pre-commit hook validation passed"
else
echo "⚠️ No pre-commit hook found, skipping hook validation"
echo " Run: scripts/install-git-hooks.sh to install hooks"
fi
'''
[tasks.test]
description = "Run all tests"
command = "timeout"
args = ["30s", "cargo", "test", "--workspace", "--no-default-features"]
workspace = false
[tasks.test-unit]
description = "Unit tests only"
workspace = false
command = "timeout"
args = ["10s", "cargo", "test", "--workspace", "--lib"]
[tasks.test-integration]
description = "Integration tests only"
workspace = false
command = "timeout"
args = ["30s", "cargo", "test", "--test"]
[tasks.test-ignored]
description = "Run ignored integration tests (long-running, requires Docker)"
workspace = false
command = "timeout"
args = [
"20m",
"cargo",
"test",
"--test",
"marketplace_nextjs_ontology_e2e",
"--",
"--ignored",
"--nocapture",
]
[tasks.test-doc]
description = "Run doctests (CRITICAL: Verifies all doctests compile and run)"
workspace = false
command = "timeout"
args = ["60s", "cargo", "test", "--doc", "--workspace"]
[tasks.test-timings]
description = "Run tests and generate timing report to identify slow tests"
workspace = false
command = "timeout"
args = [
"30s",
"cargo",
"test",
"--workspace",
"--",
"--test-threads",
"1",
"--nocapture",
"--report-time",
]
[tasks.test-single-threaded]
description = "Run tests in single-threaded mode for deterministic execution"
workspace = false
command = "timeout"
args = ["30s", "cargo", "test", "--workspace", "--", "--test-threads", "1"]
env = { "RUST_TEST_THREADS" = "1" }
[tasks.deterministic]
description = "Run deterministic tests with fixed seeds and single-threaded execution"
workspace = false
command = "timeout"
args = ["30s", "cargo", "test", "--workspace", "--", "--test-threads", "1"]
env = { "RUST_TEST_THREADS" = "1", "RNG_SEED" = "42" }
[tasks.validate-outputs]
description = "Validate deterministic outputs (runs deterministic tests)"
workspace = false
dependencies = ["deterministic"]
[tasks.validate-rdf]
description = "Validate RDF graphs, SPARQL queries, and ensure deterministic processing"
workspace = false
dependencies = ["timeout-check"]
script_runner = "@shell"
script = '''
#!/bin/bash
set -e
echo "🔍 Validating RDF graphs and SPARQL queries..."
echo ""
# Run RDF validation tests
echo "📋 Running RDF validation tests..."
timeout 30s cargo test --package ggen-core --lib rdf::validation -- --nocapture || {
echo "❌ RDF validation tests failed"
exit 1
}
# Run graph validation tests
echo ""
echo "📋 Running graph validation tests..."
timeout 30s cargo test --package ggen-core --lib graph -- --nocapture || {
echo "❌ Graph validation tests failed"
exit 1
}
# Run RDF integration tests if they exist
if timeout 5s cargo test --test rdf_validation_integration --no-run 2>/dev/null; then
echo ""
echo "📋 Running RDF integration tests..."
timeout 30s cargo test --test rdf_validation_integration -- --nocapture || {
echo "❌ RDF integration tests failed"
exit 1
}
fi
# Run graph E2E tests if they exist
if timeout 5s cargo test --test integration_graph_e2e --no-run 2>/dev/null; then
echo ""
echo "📋 Running graph E2E tests..."
timeout 30s cargo test --test integration_graph_e2e graph -- --nocapture || {
echo "⚠️ Some graph E2E tests failed (non-critical)"
}
fi
echo ""
echo "✅ RDF validation complete!"
echo ""
echo "Validation checklist:"
echo " ✓ RDF graph syntax validation"
echo " ✓ Graph consistency checks"
echo " ✓ SPARQL query syntax validation"
echo " ✓ Deterministic processing verification"
'''
[tasks.test-testcontainers]
description = "Run testcontainers production readiness validation tests"
command = "cargo"
args = ["test", "--package", "ggen-cli-lib", "--test", "integration"]
env = { "RUST_LOG" = "info" }
[tasks.test-cleanroom]
description = "Run cleanroom production tests with testcontainers"
workspace = false
command = "cargo"
args = [
"test",
"--package",
"ggen-cli-lib",
"--test",
"integration_tests",
"--",
"testcontainers_cleanroom",
]
env = { "RUST_LOG" = "info" }
[tasks.test-cleanroom-crate]
description = "Run tests for the cleanroom crate"
workspace = false
command = "cargo"
args = ["test", "--package", "cleanroom"]
env = { "RUST_LOG" = "info" }
[tasks.lint-cleanroom]
description = "Run clippy on cleanroom crate"
workspace = false
command = "cargo"
args = ["clippy", "--package", "cleanroom", "--", "-D", "warnings"]
[tasks.cleanroom-validate]
description = "Validate cleanroom implementation and integration"
workspace = false
dependencies = ["test-cleanroom-crate", "test-cleanroom", "lint-cleanroom"]
[tasks.cleanroom-slo-check]
description = "Check cleanroom performance SLOs"
workspace = false
command = "cargo"
args = [
"test",
"--package",
"cleanroom",
"--release",
"--",
"--nocapture",
"slo",
]
env = { "RUST_LOG" = "info" }
[tasks.cleanroom-profile]
description = "Profile cleanroom performance"
workspace = false
command = "cargo"
args = ["flamegraph", "--package", "cleanroom", "--bin", "cleanroom-bench"]
[tasks.production-readiness]
description = "Comprehensive production readiness validation with testcontainers"
workspace = false
dependencies = [
"test-testcontainers",
"test-cleanroom",
"cleanroom-validate",
"test-unit",
"test-integration",
"lint",
"build-release",
]
[tasks.production-readiness-script]
description = "Run production readiness validation script"
workspace = false
command = "./scripts/production-readiness-validation.sh"
args = ["--full"]
[tasks.test-live]
description = "Run tests with live LLM integrations (requires API keys)"
command = "cargo"
args = ["test", "--features", "live-llm-tests,all-integrations"]
[tasks.test-ollama]
description = "Run Ollama integration tests (requires Ollama running)"
command = "cargo"
args = [
"test",
"--features",
"ollama-integration",
"--test",
"ollama_integration",
"-p",
"ggen-ai",
]
[tasks.test-openai]
description = "Run OpenAI integration tests (requires OPENAI_API_KEY)"
command = "cargo"
args = ["test", "--features", "openai-integration,live-llm-tests"]
env = { "RUST_LOG" = "info" }
[tasks.test-anthropic]
description = "Run Anthropic integration tests (requires ANTHROPIC_API_KEY)"
command = "cargo"
args = ["test", "--features", "anthropic-integration,live-llm-tests"]
env = { "RUST_LOG" = "info" }
[tasks.test-ollama-performance]
description = "Run Ollama performance and stress tests"
workspace = false
command = "cargo"
args = [
"test",
"--package",
"ggen-ai",
"--features",
"ollama-integration",
"--test",
"ollama_performance",
]
[tasks.test-ollama-resilience]
description = "Run Ollama resilience and error recovery tests"
workspace = false
command = "cargo"
args = [
"test",
"--package",
"ggen-ai",
"--features",
"ollama-integration",
"--test",
"ollama_resilience",
]
[tasks.test-ollama-all]
description = "Run all Ollama integration tests (integration, performance, resilience)"
workspace = false
dependencies = [
"test-ollama",
"test-ollama-performance",
"test-ollama-resilience",
]
[tasks.validate-ollama]
description = "Validate Ollama integration (checks service, model, and runs tests)"
workspace = false
command = "./scripts/validate-ollama.sh"
[tasks.act]
description = "Run a GitHub Actions workflow locally with act (usage: cargo make act WORKFLOW=ci.yml JOB=fmt). Examples: 'cargo make act WORKFLOW=lint.yml JOB=lint', 'cargo make act WORKFLOW=ci.yml' (runs all jobs)"
workspace = false
script_runner = "@shell"
script = '''
#!/bin/bash
set -e
WORKFLOW="${WORKFLOW:-ci.yml}"
JOB="${JOB:-}"
if [ -z "$JOB" ]; then
echo "Running workflow: $WORKFLOW (all jobs)"
act \
--container-architecture "${ACT_CONTAINER_ARCH}" \
--platform "${ACT_PLATFORM}" \
-W ".github/workflows/${WORKFLOW}"
else
echo "Running workflow: $WORKFLOW, job: $JOB"
act \
--container-architecture "${ACT_CONTAINER_ARCH}" \
--platform "${ACT_PLATFORM}" \
-W ".github/workflows/${WORKFLOW}" \
-j "${JOB}"
fi
'''
[tasks.act-list]
description = "List available GitHub Actions workflows"
workspace = false
command = "act"
args = ["--list"]
[tasks.act-validate]
description = "Validate all workflows can be parsed by act (dry-run)"
workspace = false
script_runner = "@shell"
script = '''
#!/bin/bash
set -e
echo "🔍 Validating all GitHub Actions workflows with act..."
echo ""
ERRORS=0
WORKFLOWS=(
"ci.yml"
"test.yml"
"build.yml"
"lint.yml"
"marketplace-test.yml"
"marketplace.yml"
"security-audit.yml"
"quality-gates.yml"
"london-tdd-tests.yml"
"deploy-docs.yml"
"release.yml"
"homebrew-release.yml"
)
for workflow in "${WORKFLOWS[@]}"; do
if [ -f ".github/workflows/${workflow}" ]; then
echo "📋 Validating ${workflow}..."
if act --dryrun -W ".github/workflows/${workflow}" > /dev/null 2>&1; then
echo " ✅ ${workflow} is valid"
else
echo " ❌ ${workflow} has errors"
ERRORS=$((ERRORS + 1))
fi
else
echo " ⚠️ ${workflow} not found"
fi
done
echo ""
if [ $ERRORS -eq 0 ]; then
echo "✅ All workflows validated successfully"
exit 0
else
echo "❌ Found ${ERRORS} workflow(s) with errors"
exit 1
fi
'''
[tasks.act-status]
description = "Check act installation and Docker status"
workspace = false
script = '''
#!/bin/bash
set -e
echo "🔍 Checking act installation..."
if command -v act &> /dev/null; then
echo "✅ act is installed"
act --version
else
echo "❌ act is not installed"
echo ""
echo "📦 Installation instructions:"
echo " macOS: brew install act"
echo " Linux: curl https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash"
echo " Or: https://github.com/nektos/act/releases"
exit 1
fi
echo ""
echo "🐳 Checking Docker status..."
if docker ps > /dev/null 2>&1; then
echo "✅ Docker daemon is running"
docker --version
echo ""
echo "📊 Docker resource usage:"
docker system df
else
echo "❌ Docker daemon is not running"
echo " Start Docker Desktop or Docker daemon"
exit 1
fi
'''
[tasks.act-cleanup]
description = "Clean up act containers and images"
workspace = false
script = '''
echo "🧹 Cleaning up act containers..."
docker ps -a --filter "label=act" --format "table {{.ID}}\t{{.Status}}\t{{.Names}}" | grep act || true
docker container prune -f --filter "label=act" || true
docker image prune -f --filter "label=act" || true
echo "✅ Act cleanup complete"
'''
[tasks.test-bdd]
description = "Run BDD tests (Cucumber feature tests)"
workspace = false
command = "cargo"
args = ["test", "--test", "bdd"]
[tasks.test-bdd-feature]
description = "Run specific BDD feature (usage: cargo make test-bdd-feature FEATURE=graph)"
workspace = false
command = "cargo"
args = ["test", "--test", "bdd", "test_${FEATURE}_features"]
[tasks.test-bdd-verbose]
description = "Run BDD tests with verbose output"
workspace = false
command = "cargo"
args = ["test", "--test", "bdd", "--", "--nocapture"]
[tasks.audit]
description = "Security audit"
command = "cargo"
args = ["audit"]
workspace = false
[tasks.audit-outdated]
description = "Check for outdated dependencies"
command = "cargo"
args = ["outdated"]
workspace = false
[tasks.audit-unused]
description = "Check for unused dependencies (requires nightly)"
command = "cargo"
args = ["+nightly", "udeps"]
workspace = false
[tasks.check-dead-code]
description = "Check for dead code and unused items (waste detection)"
workspace = false
command = "timeout"
args = [
"10s",
"cargo",
"clippy",
"--workspace",
"--all-targets",
"--",
"-W",
"dead_code",
"-W",
"unused_imports",
"-W",
"unused_variables",
]
[tasks.check-unused-features]
description = "Check for unused feature flags (waste detection)"
workspace = false
command = "timeout"
args = ["10s", "cargo", "check", "--workspace", "--all-features"]
script_runner = "@shell"
script = '''
#!/bin/bash
# Check for feature flags that might be unused
echo "Checking for potentially unused features..."
echo "Review Cargo.toml files for features that are never enabled"
echo "Run: grep -r 'feature.*=' crates/*/Cargo.toml | grep -v 'default'"
'''
[tasks.validate-examples]
description = "Validate all examples compile (waste prevention)"
workspace = false
command = "timeout"
args = ["30s", "cargo", "check", "--workspace", "--examples"]
[tasks.audit-deny]
description = "Comprehensive dependency audit with cargo-deny"
command = "cargo"
args = ["deny", "check"]
workspace = false
[tasks.audit-all]
description = "Run all dependency audits"
dependencies = ["audit", "audit-outdated", "audit-deny"]
workspace = false
[tasks.format]
description = "Format code"
command = "cargo"
args = ["fmt", "--all"]
[tasks.clippy-ci-flow]
description = "Run clippy with CI-friendly settings"
command = "cargo"
args = ["clippy", "--all-targets", "--all-features", "--", "-D", "warnings"]
[tasks.test-verbose]
description = "Run tests with verbose output"
workspace = false
command = "cargo"
args = ["test", "--workspace", "--", "--nocapture"]
[tasks.test-proptest]
description = "Run property-based tests with proptest"
command = "cargo"
args = ["test", "--workspace", "--features", "proptest", "--", "--nocapture"]
[tasks.test-proptest-single]
description = "Run property-based tests for a single package"
command = "cargo"
args = [
"test",
"--package",
"${PACKAGE}",
"--features",
"proptest",
"--",
"--nocapture",
]
[tasks.test-proptest-parallel]
description = "Run property-based tests in parallel"
command = "cargo"
args = [
"test",
"--workspace",
"--features",
"proptest",
"--",
"--test-threads",
"4",
"--nocapture",
]
[tasks.docs-api]
description = "Build API documentation with rustdoc"
workspace = false
command = "timeout"
args = ["10s", "cargo", "doc", "--no-deps", "--open"]
[tasks.docs-check]
description = "Verify API documentation compiles without errors (for CI/pre-commit)"
workspace = false
env = { RUSTDOCFLAGS = "-D warnings" }
command = "timeout"
args = ["30s", "cargo", "doc", "--no-deps", "--all"]
[tasks.docs-build]
description = "Build documentation with mdbook"
workspace = false
command = "timeout"
args = ["30s", "mdbook", "build", "docs"]
[tasks.docs-serve]
description = "Serve documentation locally with mdbook"
workspace = false
command = "mdbook"
args = ["serve", "docs", "--open"]
[tasks.docs-watch]
description = "Watch and rebuild documentation on changes"
workspace = false
command = "mdbook"
args = ["watch", "docs"]
[tasks.docs-clean]
description = "Clean built documentation"
workspace = false
command = "rm"
args = ["-rf", "docs/book", "target/doc"]
[tasks.docs-test]
description = "Test documentation build"
workspace = false
dependencies = ["docs-build"]
command = "echo"
args = ["✅ Documentation built successfully"]
[tasks.docs]
description = "Build all documentation (API + guides)"
workspace = false
dependencies = ["docs-api", "docs-build"]
[tasks.docs-validate]
description = "Validate documentation structure and links"
workspace = false
dependencies = ["docs-build"]
command = "./scripts/docs-validate.sh"
[tasks.validate-docs]
description = "Validate documentation accuracy (FMEA-based checks: cargo commands, paths, macros)"
workspace = false
command = "./scripts/validate-docs.sh"
[tasks.docs-deploy]
description = "Build and validate documentation for deployment"
workspace = false
dependencies = ["docs-clean", "docs-build", "docs-validate"]
[tasks.gh-pages-status]
description = "Check GitHub Pages configuration and deployment status via API"
workspace = false
command = "./scripts/gh-pages-status.sh"
[tasks.gh-workflow-status]
description = "Check GitHub Actions workflow status for Pages deployment"
workspace = false
command = "./scripts/gh-workflow-status.sh"
[tasks.gh-pages-compare]
description = "Compare local docs build with deployed version"
workspace = false
dependencies = ["docs-build"]
command = "./scripts/gh-pages-compare.sh"
[tasks.gh-pages-trigger]
description = "Trigger GitHub Pages deployment workflow manually"
workspace = false
command = "./scripts/gh-pages-trigger.sh"
[tasks.gh-pages-logs]
description = "View logs from latest GitHub Pages deployment"
workspace = false
command = "./scripts/gh-pages-logs.sh"
[tasks.gh-pages-setup-check]
description = "Comprehensive GitHub Pages setup validation"
workspace = false
command = "./scripts/gh-pages-setup-check.sh"
[tasks.marketplace-validate]
description = "Validate all marketplace packages for production readiness"
workspace = false
command = "./marketplace/scripts/validate_all_packages.sh"
[tasks.marketplace-validate-update]
description = "Validate all packages and update production_ready flags"
workspace = false
command = "./marketplace/scripts/update_production_flags.sh"
[tasks.marketplace-report]
description = "Generate validation reports for all marketplace packages"
workspace = false
command = "./marketplace/scripts/generate_validation_report.sh"
[tasks.check-all-crates]
description = "Check all crates compile (prevents type mismatch errors)"
workspace = false
command = "cargo"
args = ["check", "--workspace", "--all-targets"]
[tasks.compile-validation]
description = "Validate all crates compile (root cause prevention)"
workspace = false
dependencies = ["check-all-crates"]
command = "echo"
args = ["✅ All crates compile successfully"]
[tasks.type-safety-check]
description = "Check for type safety issues (root cause prevention)"
workspace = false
command = "./scripts/check-type-safety.sh"
[tasks.ci]
description = "Run CI pipeline"
workspace = false
dependencies = [
"format",
"clippy-ci-flow",
"check-all-crates",
"detect-gaps",
"test",
"test-doc",
"audit-all",
"docs-test",
]
[tasks.release-validate-git-state]
description = "Validate git state is clean (FMEA: prevents release with uncommitted changes, RPN 504)"
workspace = false
command = "./scripts/release-validate-git-state.sh"
[tasks.release-validate-version]
description = "Validate version consistency across all crates (FMEA: prevents version mismatches, RPN 504)"
workspace = false
command = "./scripts/release-validate-version.sh"
[tasks.release-validate-artifacts]
description = "Validate all required release artifacts exist (FMEA: prevents missing artifacts, RPN 180)"
workspace = false
command = "./scripts/release-validate-artifacts.sh"
[tasks.release-validate-build]
description = "Validate release build succeeds (FMEA: prevents config-specific errors, RPN 432)"
workspace = false
dependencies = ["build-release"]
[tasks.release-validate-security]
description = "Validate security audit passes (FMEA: prevents vulnerabilities in release, RPN 360)"
workspace = false
dependencies = ["audit-all"]
[tasks.release-validate-changelog]
description = "Validate CHANGELOG has entry for release version (FMEA: prevents missing changelog, RPN 288)"
workspace = false
script_runner = "@shell"
script = '''
#!/bin/bash
root_version=$(grep '^version = ' Cargo.toml | head -1 | sed 's/.*version = "\(.*\)"/\1/' | tr -d '"')
if ! grep -q "^## \[$root_version\]" CHANGELOG.md; then
echo "❌ ERROR: CHANGELOG.md missing entry for version $root_version"
exit 1
fi
echo "✅ CHANGELOG.md has entry for $root_version"
'''
[tasks.release-validate-breaking-changes]
description = "Detect breaking changes requiring documentation (FMEA: prevents undocumented breaking changes, RPN 240)"
workspace = false
command = "./scripts/release-validate-breaking-changes.sh"
[tasks.release-validate-docs-sync]
description = "Validate documentation version sync (FMEA: prevents outdated version references, RPN 96)"
workspace = false
command = "./scripts/release-validate-docs-sync.sh"
[tasks.release-validate]
description = "Comprehensive release validation (all FMEA checks)"
workspace = false
dependencies = [
"release-validate-git-state",
"release-validate-version",
"release-validate-artifacts",
"release-validate-build",
"release-validate-security",
"release-validate-changelog",
"release-validate-breaking-changes",
"release-validate-docs-sync",
"test",
"lint",
]
[tasks.release]
description = "Create a release"
dependencies = ["release-validate", "ci", "docs-build"]
[tasks.brew-update-formula]
description = "Update Homebrew formula with SHA256 from latest release"
workspace = false
command = "./scripts/update-homebrew-formula.sh"
args = ["${1}"]
[tasks.brew-update]
alias = "brew-update-formula"
[tasks.release-brew]
description = "Complete release workflow with Homebrew update"
workspace = false
dependencies = ["ci", "docs-build"]
command = "./scripts/release-brew.sh"
[tasks.release-check]
description = "Check if release artifacts are ready"
workspace = false
command = "./scripts/release-check.sh"
args = ["${1}"]
[tasks.ci-check]
description = "Check GitHub Actions workflow health and report failures"
workspace = false
command = "./scripts/ci-health-check.sh"
[tasks.ci-health]
alias = "ci-check"
[tasks.detect-gaps]
description = "Detect missing tests and coverage gaps (80/20 focused)"
workspace = false
command = "./scripts/detect-test-gaps.sh"
[tasks.enforce-coverage]
description = "Enforce test coverage for changed files"
workspace = false
command = "./scripts/enforce-test-coverage.sh"
[tasks.install-hooks]
description = "Install git hooks with gap detection"
workspace = false
command = "./scripts/install-git-hooks.sh"
[tasks.gap-report]
description = "Generate comprehensive gap detection report"
workspace = false
dependencies = ["detect-gaps"]
script = '''
if [ -f target/gap-detection-report.json ]; then
echo "📊 Gap Detection Report:"
cat target/gap-detection-report.json | jq .
else
echo "❌ No report found. Run: cargo make detect-gaps"
fi
'''
[tasks.completions]
description = "Generate shell completion scripts"
command = "cargo"
args = [
"run",
"--bin",
"ggen",
"--",
"shell",
"completion",
"generate",
"--shell",
"${SHELL}",
"--output",
"${OUTPUT}",
]
[tasks.completions-install]
description = "Install shell completion scripts"
command = "cargo"
args = [
"run",
"--bin",
"ggen",
"--",
"shell",
"completion",
"install",
"--shell",
"${SHELL}",
"--force",
]
[tasks.completions-list]
description = "List supported shell completion types"
command = "cargo"
args = ["run", "--bin", "ggen", "--", "shell", "completion", "list"]
[tasks.node-build]
description = "Build Node N-API addon in debug"
workspace = false
script_runner = "@shell"
script = '''
cd node && (
command -v npx >/dev/null 2>&1 && npx --yes @napi-rs/cli@2.18.0 build || \
(command -v corepack >/dev/null 2>&1 && corepack pnpm dlx @napi-rs/cli@2.18.0 build) || \
(command -v yarn >/dev/null 2>&1 && yarn dlx @napi-rs/cli@2.18.0 build)
)
'''
[tasks.node-build-release]
description = "Build Node N-API addon in release"
workspace = false
script_runner = "@shell"
script = '''
cd node && (
command -v npx >/dev/null 2>&1 && npx --yes @napi-rs/cli@2.18.0 build --release || \
(command -v corepack >/dev/null 2>&1 && corepack pnpm dlx @napi-rs/cli@2.18.0 build --release) || \
(command -v yarn >/dev/null 2>&1 && yarn dlx @napi-rs/cli@2.18.0 build --release)
)
'''
[tasks.node-test]
description = "Run Node addon tests deterministically"
workspace = false
script_runner = "@shell"
script = '''
cd node && (
command -v npx >/dev/null 2>&1 && npx --yes vitest run --reporter=dot || \
(command -v corepack >/dev/null 2>&1 && corepack pnpm dlx vitest run --reporter=dot) || \
(command -v yarn >/dev/null 2>&1 && yarn dlx vitest run --reporter=dot)
)
'''
[tasks.node-prebuild]
description = "Create prebuilt binaries for common targets"
workspace = false
script_runner = "@shell"
script = '''
cd node && (
command -v npx >/dev/null 2>&1 && npx --yes @napi-rs/cli@2.18.0 prebuild -t x86_64-unknown-linux-gnu -t aarch64-apple-darwin -t x86_64-apple-darwin -t x86_64-pc-windows-msvc || \
(command -v corepack >/dev/null 2>&1 && corepack pnpm dlx @napi-rs/cli@2.18.0 prebuild -t x86_64-unknown-linux-gnu -t aarch64-apple-darwin -t x86_64-apple-darwin -t x86_64-pc-windows-msvc) || \
(command -v yarn >/dev/null 2>&1 && yarn dlx @napi-rs/cli@2.18.0 prebuild -t x86_64-unknown-linux-gnu -t aarch64-apple-darwin -t x86_64-apple-darwin -t x86_64-pc-windows-msvc)
)
'''