185 lines
6.8 KiB
Plaintext
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"
|