#!/usr/bin/env nu # .ontoref/gen-registry.nu # Reads registry.ncl, validates project paths, and writes registry.toml. # registry.ncl is the source of truth; registry.toml is derived — do not edit it by hand. def main [] { let script_dir = ($env.CURRENT_FILE | path dirname) let ncl_file = $"($script_dir)/registry.ncl" let toml_file = $"($script_dir)/registry.toml" let result = (do { ^nickel export --format json $ncl_file } | complete) if $result.exit_code != 0 { error make { msg: $"nickel export failed:\n($result.stderr)" } } let registry = ($result.stdout | from json) let valid_projects = ($registry.projects | each { |p| if ($p.root | path exists) { $p } else { print $" (ansi yellow)WARN(ansi reset) project '($p.slug)': root not found at ($p.root) — skipping" null } } | compact) let skipped = ($registry.projects | length) - ($valid_projects | length) if $skipped > 0 { print $" (ansi yellow)($skipped) project(s) skipped due to missing paths(ansi reset)" } { projects: $valid_projects } | to toml | save -f $toml_file print $" (ansi green)OK(ansi reset) ($valid_projects | length) project\(s\) written to ($toml_file)" }