feat: add json.get to have sub variables

This commit is contained in:
egarette@silique.fr 2025-03-19 10:57:56 +01:00
parent 1ad5998930
commit 368cd17f33
2022 changed files with 2595 additions and 1976 deletions

View file

@ -56,11 +56,16 @@ class RougailOutputJson:
self.warnings = [] self.warnings = []
self.read_write = self.rougailconfig["json.read_write"] self.read_write = self.rougailconfig["json.read_write"]
self.is_mandatory = self.rougailconfig["json.mandatory"] self.is_mandatory = self.rougailconfig["json.mandatory"]
self.get = self.rougailconfig["json.get"]
self.dico = {} self.dico = {}
def run(self) -> None: def run(self) -> None:
ret = self.exporter() ret = self.exporter()
return ret, dumps(self.dico, ensure_ascii=False, indent=2) + '\n' if isinstance(self.dico, str):
value = self.dico
else:
value = dumps(self.dico, ensure_ascii=False, indent=2)
return ret, value
def print(self) -> str: def print(self) -> str:
ret, data = self.run() ret, data = self.run()
@ -70,14 +75,21 @@ class RougailOutputJson:
def exporter(self) -> None: def exporter(self) -> None:
self.config.property.read_write() self.config.property.read_write()
self.mandatory() self.mandatory()
self.manage_warnings()
self.config.property.read_only() self.config.property.read_only()
if self.manage_errors(): if self.manage_errors():
return False return False
self.manage_warnings()
if self.read_write: if self.read_write:
self.config.property.read_write() self.config.property.read_write()
if self.get:
config = self.config.option(self.get)
if not config.isoptiondescription():
self.dico = config.value.get()
return True
else:
config = self.config
self.parse_family( self.parse_family(
self.config, config,
self.dico, self.dico,
) )
return True return True
@ -126,6 +138,7 @@ class RougailOutputJson:
if not self.errors: if not self.errors:
return False return False
self.dico = {"_errors": self.errors} self.dico = {"_errors": self.errors}
self.manage_warnings()
return True return True
def parse_family( def parse_family(

View file

@ -17,29 +17,36 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
from pathlib import Path from pathlib import Path
from .i18n import _
def get_rougail_config( def get_rougail_config(
*, *,
backward_compatibility=True, backward_compatibility=True,
) -> dict: ) -> dict:
options = """ options = f"""
json: json:
description: Configuration rougail-json description: {_('configuration rougail-json')}
disabled: disabled:
type: jinja type: jinja
jinja: | jinja: |
{% if step.output != 'json' %} {{% if step.output is propertyerror or step.output != 'json' %}}
disabled disabled
{% endif %} {{% endif %}}
read_write: read_write:
description: Display variables available in read_write mode description: {_('display variables available in read_write mode')}
negative_description: Display variables available in read_only mode negative_description: {_('display variables available in read_only mode')}
default: false default: false
mandatory: mandatory:
description: Test mandatories variable before display in json description: {_('test mandatories variable before display in json')}
negative_description: Do not test mandatories variable before display in json negative_description: {_('do not test mandatories variable before display in json')}
default: true default: true
get:
description: {_('get value for a variable or a family')}
mandatory: false
""" """
return { return {
"name": "json", "name": "json",

View file

@ -1 +1 @@
{} {}

View file

@ -1,3 +1,3 @@
{ {
"version": "string1" "version": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"empty": "string1" "empty": "string1"
} }

View file

@ -5,4 +5,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -9,4 +9,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -7,4 +7,4 @@
"domain1.lan", "domain1.lan",
"domain2.lan" "domain2.lan"
] ]
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"without_type": "string1" "without_type": "string1"
} }

View file

@ -5,4 +5,4 @@
"var4": true, "var4": true,
"var5": true, "var5": true,
"var6": true "var6": true
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": true "variable": true
} }

View file

@ -5,4 +5,4 @@
"var4": null, "var4": null,
"var5": "a", "var5": "a",
"var6": 1 "var6": 1
} }

View file

@ -1,3 +1,3 @@
{ {
"var": 0 "var": 0
} }

View file

@ -5,4 +5,4 @@
"string3" "string3"
], ],
"var2": "string1" "var2": "string1"
} }

View file

@ -1,4 +1,4 @@
{ {
"custom1": "string1", "custom1": "string1",
"custom2": "string1" "custom2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "domain1.lan" "variable": "domain1.lan"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "domain1.lan" "variable": "domain1.lan"
} }

View file

@ -5,4 +5,4 @@
"var4": 1.1, "var4": 1.1,
"var5": 1.1, "var5": 1.1,
"var6": 1.1 "var6": 1.1
} }

View file

@ -5,4 +5,4 @@
"var4": 1, "var4": 1,
"var5": 1, "var5": 1,
"var6": 1 "var6": 1
} }

View file

@ -2,4 +2,4 @@
"variable1": "80", "variable1": "80",
"variable2": "80", "variable2": "80",
"variable3": "80" "variable3": "80"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "#b1b1b1" "var": "#b1b1b1"
} }

View file

@ -1,4 +1,4 @@
{ {
"secret1": "string1", "secret1": "string1",
"secret2": "string1" "secret2": "string1"
} }

View file

@ -5,4 +5,4 @@
"var4": "string1", "var4": "string1",
"var5": "string1", "var5": "string1",
"var6": "string1" "var6": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "quote'" "var": "quote'"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -8,4 +8,4 @@
"test1", "test1",
"test2" "test2"
] ]
} }

View file

@ -7,4 +7,4 @@
"val1", "val1",
"val2" "val2"
] ]
} }

View file

@ -2,4 +2,4 @@
"source_variable_1": "string1", "source_variable_1": "string1",
"source_variable_2": "string1", "source_variable_2": "string1",
"my_variable": "string1" "my_variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "string1" "var": "string1"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -5,4 +5,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -5,4 +5,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -9,4 +9,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": 0 "var": 0
} }

View file

@ -23,4 +23,4 @@
"var8": [ "var8": [
true true
] ]
} }

View file

@ -9,4 +9,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -39,4 +39,4 @@
2.2, 2.2,
3.3 3.3
] ]
} }

View file

@ -39,4 +39,4 @@
2, 2,
3 3
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -39,4 +39,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -5,4 +5,4 @@
"string3" "string3"
], ],
"variable2": "string1" "variable2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"int": 1 "int": 1
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "no" "variable": "no"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "no" "var2": "no"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "yes" "var2": "yes"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "yes" "var": "yes"
} }

View file

@ -2,4 +2,4 @@
"var1": "string1", "var1": "string1",
"var2": "string1", "var2": "string1",
"var3": "string1" "var3": "string1"
} }

View file

@ -2,4 +2,4 @@
"var1": "string1", "var1": "string1",
"var2": "string1", "var2": "string1",
"var3": "string1" "var3": "string1"
} }

View file

@ -2,4 +2,4 @@
"condition": "string1", "condition": "string1",
"var1": null, "var1": null,
"var2": "string1" "var2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"condition": true "condition": true
} }

View file

@ -1,3 +1,3 @@
{ {
"condition": true "condition": true
} }

View file

@ -1,4 +1,4 @@
{ {
"condition": "string1", "condition": "string1",
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"condition": "string1" "condition": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"condition": true "condition": true
} }

View file

@ -0,0 +1,12 @@
{
"condition": [
"string1",
"string2",
"string3"
],
"variable": [
"string1",
"string2",
"string3"
]
}

View file

@ -0,0 +1,12 @@
{
"condition": [
"string1",
"string2",
"string3"
],
"variable": [
"string1",
"string2",
"string3"
]
}

View file

@ -1,3 +1,3 @@
{ {
"int": 1 "int": 1
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "another_value", "var1": "another_value",
"var2": "string1" "var2": "string1"
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -3,4 +3,4 @@
"val1", "val1",
"val2" "val2"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "no" "var": "no"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "string1" "var": "string1"
} }

View file

@ -1,4 +1,4 @@
{ {
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"var1": "yes" "var1": "yes"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "a" "variable": "a"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "string1" "variable": "string1"
} }

View file

@ -2,4 +2,4 @@
"family": { "family": {
"variable": "string1" "variable": "string1"
} }
} }

View file

@ -2,4 +2,4 @@
"family": { "family": {
"variable": "string1" "variable": "string1"
} }
} }

View file

@ -1,3 +1,3 @@
{ {
"variable": "no" "variable": "no"
} }

View file

@ -4,4 +4,4 @@
"string2", "string2",
"string3" "string3"
] ]
} }

View file

@ -1,4 +1,4 @@
{ {
"condition": "string1", "condition": "string1",
"variable": "string1" "variable": "string1"
} }

View file

@ -2,4 +2,4 @@
"var1": "test1", "var1": "test1",
"var2": "test1", "var2": "test1",
"var3": "string1" "var3": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "a" "var": "a"
} }

View file

@ -1 +1 @@
{} {}

View file

@ -5,4 +5,4 @@
"family2": { "family2": {
"variable2": "string1" "variable2": "string1"
} }
} }

View file

@ -1,3 +1,3 @@
{ {
"var": "string1" "var": "string1"
} }

View file

@ -1,3 +1,3 @@
{ {
"leader": [] "leader": []
} }

View file

@ -1 +1 @@
{} {}

View file

@ -3,4 +3,4 @@
"var1": "string1", "var1": "string1",
"var2": "string1" "var2": "string1"
} }
} }

Some files were not shown because too many files have changed in this diff Show more