# CI/CD Just Recipes # Generated by dev-system/ci - Dynamic template # Provides `just` recipes for running CI checks locally # Based on detected languages and enabled tools # Show CI help [doc("Show ci help")] help: @echo "CI/CD Just Recipes" @echo "" @echo "Main Commands:" @echo " just ci-full - Run all CI checks" @echo " just ci-fmt - Format code" @echo " just ci-lint - Run all linting checks" @echo " just ci-test - Run all tests" @echo " just ci-audit - Run security audits" @echo "" @echo "Language-Specific:" @echo " just ci-lint-rust - Lint Rust (clippy)" @echo " just ci-fmt-toml - Check TOML formatting" @echo " just ci-lint-toml - Lint TOML files (taplo)" @echo " just ci-lint-nickel - Type check Nickel" @echo " just ci-lint-markdown - Lint Markdown (markdownlint-cli2)" @echo " just ci-lint-prose - Lint prose (Vale)" @echo "" @echo "Other:" @echo " just ci-sbom - Generate SBOM" @echo " just ci-test-coverage - Run tests with coverage" @echo " just setup-hooks - Install pre-commit hooks" @echo " just hooks-run-all - Run pre-commit on all files" @echo " just clean - Clean build artifacts" # Run all CI checks ci-full: ci-lint-rust ci-fmt-toml ci-lint-toml ci-lint-nickel ci-lint-markdown ci-lint-prose ci-test ci-audit @echo "โœ… All CI checks passed!" # ============================================================================== # Formatting Checks # ============================================================================== # Check Rust code formatting ci-fmt: @echo "๐Ÿ“ Checking Rust code formatting..." cargo +nightly fmt --all -- --check # Check TOML file formatting ci-fmt-toml: @echo "๐Ÿ“ Checking TOML formatting..." @command -v taplo >/dev/null || (echo "โŒ taplo not installed: cargo install taplo-cli"; exit 1) taplo format --check # Format all code fmt: @echo "๐ŸŽจ Formatting code..." cargo +nightly fmt --all just fmt-toml # Format TOML files fmt-toml: @echo "๐ŸŽจ Formatting TOML files..." @command -v taplo >/dev/null || (echo "โŒ taplo not installed: cargo install taplo-cli"; exit 1) taplo format # ============================================================================== # Linting # ============================================================================== # Run all linting checks ci-lint: ci-lint-rust ci-lint-toml ci-lint-nickel ci-lint-markdown ci-lint-prose @echo "โœ… All lint checks passed!" # Lint Rust code ci-lint-rust: @echo "๐Ÿ” Linting Rust (clippy)..." cargo clippy --all-targets --all-features -- -D warnings # Lint TOML files ci-lint-toml: @echo "๐Ÿ” Linting TOML files..." @command -v taplo >/dev/null || (echo "โŒ taplo not installed: cargo install taplo-cli"; exit 1) taplo lint # Lint Nickel schemas ci-lint-nickel: #!/usr/bin/env bash echo "๐Ÿ” Type checking Nickel..." SCHEMAS=$(find . -name "*.ncl" -type f \ ! -path "./target/*" \ ! -path "./.git/*" \ ! -path "./node_modules/*" \ | head -20) if [ -z "$SCHEMAS" ]; then echo " โ„น๏ธ No Nickel schemas found" exit 0 fi export NICKEL_IMPORT_PATH="/Users/Akasha/Tools/dev-system/ci/schemas:/Users/Akasha/Tools/dev-system/ci/validators:/Users/Akasha/Tools/dev-system/ci/defaults:." for schema in $SCHEMAS; do echo " Checking: $schema" nickel typecheck "$schema" || exit 1 done echo " โœ“ All Nickel schemas valid" # Lint Markdown files ci-lint-markdown: @echo "๐Ÿ” Linting Markdown files..." @command -v markdownlint-cli2 >/dev/null || (echo "โŒ markdownlint-cli2 not installed: npm install markdownlint-cli2"; exit 1) markdownlint-cli2 "**/*.md" "#node_modules" "#.git" # Lint prose/documentation ci-lint-prose: @echo "๐Ÿ” Linting prose with Vale..." @command -v vale >/dev/null || (echo "โŒ vale not installed: brew install vale"; exit 1) vale sync vale . # ============================================================================== # Testing # ============================================================================== # Run all tests ci-test: @echo "๐Ÿงช Running tests..." cargo test --workspace --all-features # Run tests with coverage (requires cargo-llvm-cov) ci-test-coverage: @echo "๐Ÿ“Š Running tests with coverage..." cargo llvm-cov --all-features --lcov --output-path lcov.info # ============================================================================== # Security Auditing # ============================================================================== # Run all security audits ci-audit: ci-audit-rust @echo "โœ… All security audits passed!" # Audit Rust dependencies ci-audit-rust: @echo "๐Ÿ”’ Auditing Rust dependencies..." cargo audit cargo deny check licenses cargo deny check advisories # Generate SBOM ci-sbom: @echo "๐Ÿ“ฆ Generating Software Bill of Materials..." cargo sbom > sbom.json @echo "โœ“ SBOM generated: sbom.json" # ============================================================================== # Documentation # ============================================================================== # Generate documentation docs: @echo "๐Ÿ“š Generating documentation..." cargo doc --no-deps --open # Check documentation ci-docs: @echo "๐Ÿ“š Checking documentation..." cargo doc --no-deps --document-private-items 2>&1 | grep -i "warning:" && exit 1 || true @echo "โœ“ Documentation check passed" # ============================================================================== # Pre-commit Setup # ============================================================================== # Install pre-commit hooks setup-hooks: @echo "๐Ÿช Installing pre-commit hooks..." @if command -v pre-commit &> /dev/null; then \ pre-commit install && pre-commit install --hook-type pre-push; \ echo "โœ“ Pre-commit hooks installed"; \ else \ echo "โŒ pre-commit not found. Install with: pip install pre-commit"; \ exit 1; \ fi # Run pre-commit on all files hooks-run-all: @echo "๐Ÿช Running pre-commit on all files..." pre-commit run --all-files # ============================================================================== # Utility Commands # ============================================================================== # Clean build artifacts clean: @echo "๐Ÿงน Cleaning..." cargo clean rm -rf target/ rm -f sbom.json lcov.info