Skip to content

Commit f94df13

Browse files
committed
don't error out on new I/O options; add prompts for failed assertions
This is just some future proofing. The GH warning-annotations will notify new contributions that certain fields are missing. In a way, this kind of lints action.yml and docs/action.yml (specifically for our usage).
1 parent a7555dd commit f94df13

File tree

1 file changed

+47
-15
lines changed

1 file changed

+47
-15
lines changed

docs/gen_io_doc.py

+47-15
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,22 @@
1515
for info_key in b_dict:
1616
assert info_key in a_dict and isinstance(a_dict[info_key], dict)
1717
for k, v in a_dict[info_key].items():
18+
if k not in b_dict[info_key]:
19+
print(
20+
"::error file=docs/action.yml,title={title}::{message}".format(
21+
title=f"Undocumented {info_key} field `{k}` in actions.yml",
22+
message=(
23+
f"Field '{k}' not found in docs/action.yml mapping:"
24+
),
25+
),
26+
info_key
27+
)
28+
continue
1829
b_dict[info_key][k].update(v)
1930

2031
doc = "".join(
2132
[
22-
"---\ntitle: Inputs and Outputs\n---\n\n"
23-
"<!--\n",
33+
"---\ntitle: Inputs and Outputs\n---\n\n" "<!--\n",
2434
" this page was generated from action.yml ",
2535
"using the gen_io_doc.py script.\n",
2636
" CHANGES TO inputs-outputs.md WILL BE LOST & OVERWRITTEN\n-->\n\n",
@@ -31,14 +41,24 @@
3141
assert "inputs" in b_dict
3242
doc += "\n## Inputs\n"
3343
for action_input, input_metadata in b_dict["inputs"].items():
34-
3544
doc += f"### `{action_input}`\n\n"
3645

37-
assert "minimum-version" in input_metadata
38-
min_ver = input_metadata["minimum-version"]
39-
doc += f"<!-- md:version {min_ver} -->\n"
40-
41-
assert "default" in input_metadata
46+
if "minimum-version" not in input_metadata:
47+
print(
48+
"\n::warning file={name}title={title}::{message}".format(
49+
name="docs/action.yml",
50+
title="Input's minimum-version not found",
51+
message="minimum-version not set for input:",
52+
),
53+
action_input,
54+
)
55+
else:
56+
min_ver = input_metadata["minimum-version"]
57+
doc += f"<!-- md:version {min_ver} -->\n"
58+
59+
assert (
60+
"default" in input_metadata
61+
), f"default value for `{action_input}` not set in action.yml"
4262
default: Union[str, bool] = input_metadata["default"]
4363
if isinstance(default, bool):
4464
default = str(default).lower()
@@ -53,7 +73,9 @@
5373
permission = input_metadata["required-permission"]
5474
doc += f"<!-- md:permission {permission} -->\n"
5575

56-
assert "description" in input_metadata
76+
assert (
77+
"description" in input_metadata
78+
), f"`{action_input}` description not found in action.yml"
5779
doc += "\n" + input_metadata["description"] + "\n"
5880

5981
assert "outputs" in b_dict
@@ -66,12 +88,22 @@
6688
for action_output, output_metadata in b_dict["outputs"].items():
6789
doc += f"\n### `{action_output}`\n\n"
6890

69-
assert "minimum-version" in output_metadata
70-
min_ver = output_metadata["minimum-version"]
71-
doc += f"<!-- md:version {min_ver} -->\n"
72-
73-
74-
assert "description" in output_metadata
91+
if "minimum-version" not in output_metadata:
92+
print(
93+
"\n::warning file={name}title={title}::{message}".format(
94+
name="docs/action.yml",
95+
title="Output's minimum-version not found",
96+
message="minimum-version not set for output:",
97+
),
98+
action_output,
99+
)
100+
else:
101+
min_ver = output_metadata["minimum-version"]
102+
doc += f"<!-- md:version {min_ver} -->\n"
103+
104+
assert (
105+
"description" in output_metadata
106+
), f"`{action_output}` description not found in action.yml"
75107
doc += "\n" + output_metadata["description"] + "\n"
76108

77109
print(doc, file=io_doc)

0 commit comments

Comments
 (0)