# Module: Command Registry # Purpose: Parse and query the commands registry Nickel file for command metadata use ./nickel_processor.nu [ncl-eval] # Parse commands registry Nickel file via JSON export # Returns array of records with command metadata def parse_registry [] { let registry_file = ( if ($env.PROVISIONING? | is-not-empty) { $env.PROVISIONING | path join "core" "nulib" "commands-registry.ncl" } else { "./provisioning/core/nulib/commands-registry.ncl" } ) if not ($registry_file | path exists) { error make {msg: $"Registry file not found: ($registry_file)"} } (ncl-eval $registry_file []) | .commands } # Get help category for a command (for commands requiring args) export def get_help_category_for_command [command: string] { let registry = (parse_registry) let entry = ($registry | where { |r| ($r.command == $command) or ($r.aliases | any { |a| $a == $command }) } | first) if ($entry | is-not-empty) and ($entry.requires_args == true) { $entry.help_category } else { "" } } # Check if command requires arguments export def command_requires_args [command: string] { let registry = (parse_registry) let entry = ($registry | where { |r| ($r.command == $command) or ($r.aliases | any { |a| $a == $command }) } | first) if ($entry | is-not-empty) { $entry.requires_args == true } else { false } } # Get all commands that require arguments with their help categories export def get_commands_requiring_args [] { let registry = (parse_registry) $registry | where { |r| $r.requires_args == true and ($r.help_category | is-not-empty) } | each { |r| { command: $r.command help_category: $r.help_category } } }