43 lines
1.6 KiB
Plaintext
Raw Normal View History

2026-03-13 00:21:04 +00:00
# Requirements schema — contract types for tool declarations and execution contexts.
# Imported by: reflection/requirements/base.ncl, reflection/requirements/contexts.ncl
#
# NOTE: This file is a contract library — do not `nickel export` it directly.
# Export base.ncl or contexts.ncl instead.
let severity_type = [| 'Hard, 'Soft |] in
# A tool or external dependency that operations in this project require.
let tool_type = {
id | String | default = "",
binary | String | default = "",
description | String | default = "",
version_min | String | default = "0.0.0",
check_cmd | String | default = "",
version_extract | String | default = "(\\d+\\.\\d+\\.\\d+)",
install_hint | String | default = "",
docs_url | String | optional,
severity | severity_type | default = 'Soft,
contexts | Array String | default = [],
used_by_forms | Array String | default = [],
used_by_modes | Array String | default = [],
config_check | String | optional,
config_hint | String | optional,
# When set, presence is checked via `plugin list` instead of `which`.
# The check_cmd is still run to extract version from `plugin list` output.
plugin_name | String | optional,
} in
# A named execution context with a subset of required tools.
let context_type = {
id | String | default = "",
description | String | default = "",
requires | Array String | default = [],
note | String | optional,
} in
{
Tool = tool_type,
Context = context_type,
Severity = severity_type,
}