diff options
| author | John Estabrook <jestabro@vyos.io> | 2026-08-19 16:12:16 -0500 |
|---|---|---|
| committer | John Estabrook <jestabro@vyos.io> | 2026-08-25 14:10:26 -0500 |
| commit | 7791e2874e1b613385210325faadc9eea0e48cba (patch) | |
| tree | 60e5064462d1815f03196d1cdaac92699830bb63 /src/reference_tree.ml | |
| parent | fb1d919016afc5b5e61b9bf037e209512ca4c820 (diff) | |
| download | vyos1x-config-7791e2874e1b613385210325faadc9eea0e48cba.tar.gz vyos1x-config-7791e2874e1b613385210325faadc9eea0e48cba.zip | |
T9231: add support for kind and dependency elements
Diffstat (limited to 'src/reference_tree.ml')
| -rw-r--r-- | src/reference_tree.ml | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/reference_tree.ml b/src/reference_tree.ml index dead1be..3e22d83 100644 --- a/src/reference_tree.ml +++ b/src/reference_tree.ml @@ -45,6 +45,11 @@ type docs = { hints: doc_hints list; } [@@deriving yojson] +type dependency_type = { + kind: string; + alert: string; +} [@@deriving yojson] + type ref_node_data = { node_type: node_type; constraints: Value_checker.value_constraint list; @@ -61,6 +66,8 @@ type ref_node_data = { default_value: string option; hidden: bool; secret: bool; + kind: string list; + dependency: dependency_type option; docs: docs; } [@@deriving yojson] @@ -86,6 +93,8 @@ let default_data = { default_value = None; hidden = false; secret = false; + kind = []; + dependency = None; docs = { headline = ""; text = ""; @@ -219,6 +228,12 @@ let load_docs_from_xml d x = | _ -> d (* Ignore unknown elements instead of raising an error *) in Xml.fold aux d x +let load_dependency_from_xml d x = + try + let k, a = Xml.attrib x "kind", Xml.attrib x "alert" in + {d with dependency=Some { kind=k; alert=a }} + with _ -> {d with dependency=None} + let data_from_xml d x = let aux d x = match x with @@ -237,6 +252,8 @@ let data_from_xml d x = {d with priority=Some i} | Xml.Element ("hidden", _, _) -> {d with hidden=true} | Xml.Element ("secret", _, _) -> {d with secret=true} + | Xml.Element ("kind", _, [Xml.PCData k]) -> {d with kind=k::d.kind} + | Xml.Element ("dependency", _, _) -> load_dependency_from_xml d x | Xml.Element ("docs", _, _) -> load_docs_from_xml d x | _ -> raise (Bad_interface_definition ("Malformed property tag: " ^ Xml.to_string x)) in Xml.fold aux d x |
