Skip to content

Commit f0936c6

Browse files
committed
Aligned generator with simplyblock-io/sbcli#246
1 parent 7dce4d2 commit f0936c6

File tree

2 files changed

+29
-24
lines changed

2 files changed

+29
-24
lines changed

scripts/cli-reference-gen.py

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -32,31 +32,36 @@ def trim(text):
3232

3333

3434
def required(item):
35-
if "action" in item:
36-
return False
37-
elif "default" in item:
38-
return False
39-
elif "private" in item and item["private"]:
40-
return False
41-
elif "required" in item and item["required"]:
42-
return True
43-
elif not item["name"].startswith("--"):
44-
return True
45-
return False
46-
47-
48-
def data_type_name(item):
35+
return item.get('required', False)
36+
37+
38+
def argument_type(item):
4939
if "action" in item:
5040
return "marker"
51-
text = item["type"]
52-
if text == "str":
41+
42+
spec = item["type"]
43+
if isinstance(spec, dict) and ((regex := spec.get('regex')) is not None):
44+
return f"regex({regex})"
45+
46+
if isinstance(spec, dict) and ((size := spec.get('size')) is not None):
47+
min = "utils.parse_size('{}')".format(size['min']) if 'min' in size else ''
48+
max = "utils.parse_size('{}')".format(size['max']) if 'max' in size else ''
49+
return f"size({min}..{max})"
50+
51+
if isinstance(spec, dict) and ((range := spec.get('range')) is not None):
52+
return f"range({range['min']}..{range['max']})"
53+
54+
if spec == 'size':
55+
return "size"
56+
elif spec == "str":
5357
return "string"
54-
elif text == "int":
55-
return "integer"
56-
elif text == "bool":
58+
elif spec == "bool":
5759
return "boolean"
58-
else:
59-
return "unknown"
60+
elif spec == "int":
61+
return "integer"
62+
63+
return "unknown"
64+
6065

6166

6267
def arg_value(item):
@@ -108,7 +113,7 @@ def get_description(item):
108113
environment = jinja2.Environment(loader=templateLoader)
109114

110115
environment.filters["trim"] = trim
111-
environment.filters["data_type_name"] = data_type_name
116+
environment.filters["argument_type"] = argument_type
112117
environment.filters["arg_value"] = arg_value
113118
environment.filters["param_value"] = param_value
114119
environment.filters["required"] = required

scripts/templates/cli-reference-group.jinja2

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ sbcli {{ command.name }} {{ subcommand.name }}
3838
| -------- | ----------- | --------- | -------- |
3939
{% for argument in subcommand.arguments -%}
4040
{% if not argument.private -%}
41-
| {{ argument.name | upper }} | {{ argument | get_description | trim }} | {{ argument | data_type_name }} | {{ argument | required }} |
41+
| {{ argument.name | upper }} | {{ argument | get_description | trim }} | {{ argument | argument_type }} | {{ argument | required }} |
4242
{% endif -%}
4343
{% endfor -%}
4444
{% endif -%}
@@ -56,7 +56,7 @@ sbcli {{ command.name }} {{ subcommand.name }}
5656
{%- endif -%}
5757
| {{ parameter | get_description | trim }}
5858
{%- if parameter.choices %}<br/><br/>Available Options:{% for choice in parameter.choices %}<br/>- {{ choice }}{% endfor %}{% endif %}
59-
{%- if parameter.value_range %}<br/><br/>Available Value Range: {{ parameter.value_range }}{% endif %} | {{ parameter | data_type_name }} | {{ parameter | required }} | {{ parameter.default | default("-") }} |
59+
{%- if parameter.value_range %}<br/><br/>Available Value Range: {{ parameter.value_range }}{% endif %} | {{ parameter | argument_type }} | {{ parameter | required }} | {{ parameter.default | default("-") }} |
6060
{% endif -%}
6161
{% endfor -%}
6262
{% endif -%}

0 commit comments

Comments
 (0)