Skip to content

Commit d5682ca

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

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

scripts/cli-reference-gen.py

+21-26
Original file line numberDiff line numberDiff line change
@@ -32,31 +32,26 @@ 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):
49-
if "action" in item:
50-
return "marker"
51-
text = item["type"]
52-
if text == "str":
53-
return "string"
54-
elif text == "int":
55-
return "integer"
56-
elif text == "bool":
57-
return "boolean"
58-
else:
59-
return "unknown"
35+
return item.get('required', False)
36+
37+
38+
def argument_type(spec):
39+
if isinstance(spec, dict) and ((regex := spec.get('regex')) is not None):
40+
return f"regex({regex})"
41+
42+
if spec == 'size':
43+
return "size"
44+
45+
if isinstance(spec, dict) and ((size := spec.get('size')) is not None):
46+
min = "utils.parse_size('{}')".format(size['min']) if 'min' in size else ''
47+
max = "utils.parse_size('{}')".format(size['max']) if 'max' in size else ''
48+
return f"size({min}..{max})"
49+
50+
if isinstance(spec, dict) and ((range := spec.get('range')) is not None):
51+
return f"range({range['min']}..{range['max']})"
52+
53+
return "unknown"
54+
6055

6156

6257
def arg_value(item):
@@ -108,7 +103,7 @@ def get_description(item):
108103
environment = jinja2.Environment(loader=templateLoader)
109104

110105
environment.filters["trim"] = trim
111-
environment.filters["data_type_name"] = data_type_name
106+
environment.filters["argument_type"] = argument_type
112107
environment.filters["arg_value"] = arg_value
113108
environment.filters["param_value"] = param_value
114109
environment.filters["required"] = required

scripts/templates/cli-reference-group.jinja2

+2-2
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)