kogral/justfiles/nickel.just
Jesús Pérez 9ea04852a8
Some checks failed
Rust CI / Security Audit (push) Has been cancelled
Rust CI / Check + Test + Lint (nightly) (push) Has been cancelled
Rust CI / Check + Test + Lint (stable) (push) Has been cancelled
Nickel Type Check / Nickel Type Checking (push) Has been cancelled
chore: add schemas and just recipes
2026-01-23 16:12:50 +00:00

185 lines
6.8 KiB
Plaintext

# ╔══════════════════════════════════════════════════════════════════════╗
# ║ NICKEL INTEGRATION ║
# ║ Schema validation and configuration export ║
# ╚══════════════════════════════════════════════════════════════════════╝
# === PATHS ===
SCHEMA_DIR := "schemas"
CONFIG_DIR := "config"
TYPEDIALOG_DIR := ".typedialog/kogral"
TYPEDIALOG_CORE := ".typedialog/kogral/core"
TYPEDIALOG_MODES := ".typedialog/kogral/modes"
TYPEDIALOG_SCRIPTS := ".typedialog/kogral/scripts"
# Help for Nickel module
help:
@echo "NICKEL MODULE"
@echo ""
@echo "Validation:"
@echo " just nickel::validate-all Validate all schemas (legacy)"
@echo " just nickel::validate-config Validate TypeDialog config schemas"
@echo " just nickel::validate FILE Validate specific schema"
@echo " just nickel::typecheck FILE Typecheck Nickel file"
@echo ""
@echo "Export:"
@echo " just nickel::export FILE Export config to JSON"
@echo " just nickel::export-all Export all example configs (legacy)"
@echo " just nickel::export-modes Export all TypeDialog modes to JSON"
@echo " just nickel::export-dev Export dev mode configuration"
@echo " just nickel::export-prod Export prod mode configuration"
@echo " just nickel::export-test Export test mode configuration"
@echo ""
@echo "Sync & Generate:"
@echo " just nickel::sync-to-schemas Sync .typedialog/kogral → schemas/kogral"
@echo " just nickel::generate-config Generate .kogral/config.json (default: dev mode)"
@echo ""
@echo "Linting:"
@echo " just nickel::lint Lint Nickel schemas"
@echo " just nickel::fmt FILE Format Nickel file"
@echo ""
@echo "Testing:"
@echo " just nickel::test Test schema examples"
# === VALIDATION ===
# Validate all Nickel schemas
[doc("Validate all Nickel schemas")]
validate-all:
@echo "=== Validating Nickel schemas ==="
@for file in {{ SCHEMA_DIR }}/*.ncl; do \
echo "Validating $$file..."; \
nickel typecheck "$$file" || exit 1; \
done
@echo "✓ All schemas valid"
# Validate specific Nickel file
[doc("Validate specific Nickel file")]
validate FILE:
@echo "=== Validating {{ FILE }} ==="
nickel typecheck "{{ FILE }}"
@echo "✓ {{ FILE }} is valid"
# Typecheck Nickel file
[doc("Typecheck Nickel file")]
typecheck FILE:
@nickel typecheck "{{ FILE }}"
# === EXPORT ===
# Export config file to JSON
[doc("Export Nickel config to JSON")]
export FILE:
@echo "=== Exporting {{ FILE }} to JSON ==="
@nickel export --format json "{{ FILE }}"
# Export all example configs
[doc("Export all example configs to JSON")]
export-all:
@echo "=== Exporting all configs ==="
@for file in {{ CONFIG_DIR }}/*.ncl; do \
output="$${file%.ncl}.json"; \
echo "Exporting $$file → $$output"; \
nickel export --format json "$$file" > "$$output"; \
done
@echo "✓ All configs exported"
# === LINTING ===
# Lint Nickel schemas (check formatting and style)
[doc("Lint Nickel schemas")]
lint:
@echo "=== Linting Nickel files ==="
@for file in {{ SCHEMA_DIR }}/*.ncl {{ CONFIG_DIR }}/*.ncl; do \
echo "Checking $$file..."; \
nickel typecheck "$$file" || exit 1; \
done
@echo "✓ Nickel lint passed"
# Format Nickel file
[doc("Format Nickel file")]
fmt FILE:
@echo "=== Formatting {{ FILE }} ==="
nickel format "{{ FILE }}"
# === TYPEDIALOG CONFIGURATION ===
# Validate TypeDialog config schemas
[doc("Validate TypeDialog config schemas (.typedialog/kogral/)")]
validate-config:
@echo "=== Validating TypeDialog config schemas ==="
nu {{justfile_directory()}}/.typedialog/kogral/scripts/validate-config.nu
# Export all TypeDialog modes to JSON
[doc("Export all TypeDialog modes to JSON")]
export-modes: export-dev export-prod export-test
@echo "✓ All modes exported"
# Export dev mode configuration
[doc("Export dev mode configuration")]
export-dev:
@mkdir -p .kogral && \
nickel export --format json .typedialog/kogral/modes/dev.ncl > .kogral/config.dev.json && \
echo " ✓ Exported: .kogral/config.dev.json"
# Export prod mode configuration
[doc("Export prod mode configuration")]
export-prod:
@mkdir -p .kogral && \
nickel export --format json .typedialog/kogral/modes/prod.ncl > .kogral/config.prod.json && \
echo " ✓ Exported: .kogral/config.prod.json"
# Export test mode configuration
[doc("Export test mode configuration")]
export-test:
@mkdir -p .kogral && \
nickel export --format json .typedialog/kogral/modes/test.ncl > .kogral/config.test.json && \
echo " ✓ Exported: .kogral/config.test.json"
# Sync .typedialog/kogral to schemas/kogral (source of truth)
[doc("Sync .typedialog/kogral → schemas/kogral")]
sync-to-schemas:
@echo "=== Syncing TypeDialog config to schemas ==="
@mkdir -p schemas/kogral
@echo " Copying core schemas..."
@cp {{ TYPEDIALOG_CORE }}/contracts.ncl schemas/kogral/
@cp {{ TYPEDIALOG_CORE }}/defaults.ncl schemas/kogral/
@cp {{ TYPEDIALOG_CORE }}/helpers.ncl schemas/kogral/
@mkdir -p schemas/kogral/modes
@echo " Copying mode overlays..."
@cp {{ TYPEDIALOG_MODES }}/dev.ncl schemas/kogral/modes/
@cp {{ TYPEDIALOG_MODES }}/prod.ncl schemas/kogral/modes/
@cp {{ TYPEDIALOG_MODES }}/test.ncl schemas/kogral/modes/
@echo "✓ Sync completed"
# Generate .kogral/config.json for CLI/MCP (default: dev mode)
[doc("Generate .kogral/config.json (default: dev mode)")]
generate-config MODE="dev":
@echo "=== Generating config from {{ MODE }} mode ==="
@if [ "{{ MODE }}" != "dev" ] && [ "{{ MODE }}" != "prod" ] && [ "{{ MODE }}" != "test" ]; then \
echo "Error: Invalid mode. Must be dev, prod, or test"; \
exit 1; \
fi
@mkdir -p .kogral
nu {{justfile_directory()}}/.typedialog/kogral/scripts/generate-configs.nu --mode {{ MODE }} --output .kogral
@echo "✓ Configuration generated at .kogral/config.json"
# === TESTING ===
# Test schema examples
[doc("Test schema examples")]
test:
@echo "=== Testing Nickel schemas ==="
@just nickel::validate-all
@just nickel::export-all
@echo "✓ Schema tests passed"
# Test TypeDialog configuration pipeline
[doc("Test TypeDialog configuration pipeline")]
test-config:
@echo "=== Testing TypeDialog config pipeline ==="
@just nickel::validate-config
@just nickel::export-modes
@just nickel::sync-to-schemas
@just nickel::generate-config dev
@echo "✓ TypeDialog config pipeline tests passed"