fix(ci): move patches to a patch file
This commit is contained in:
parent
3e1f8036ee
commit
02df6ba049
2 changed files with 154 additions and 155 deletions
.forgejo/workflows
153
.forgejo/workflows/aardoc.patch
Normal file
153
.forgejo/workflows/aardoc.patch
Normal file
|
@ -0,0 +1,153 @@
|
|||
--- aar_doc/defaults.py
|
||||
+++ aar_doc/defaults.py
|
||||
@@ -15,7 +15,7 @@
|
||||
from ruamel.yaml.scalarstring import LiteralScalarString, SingleQuotedScalarString
|
||||
|
||||
yaml = YAML()
|
||||
-yaml.indent(mapping=2, sequence=2, offset=2)
|
||||
+yaml.indent(mapping=2, sequence=4, offset=2)
|
||||
yaml.encoding = "utf-8"
|
||||
yaml.allow_unicode = True
|
||||
|
||||
--- aar_doc/defaults.py
|
||||
+++ aar_doc/defaults.py
|
||||
@@ -73,18 +73,27 @@ def add_default(
|
||||
else:
|
||||
self._defaults.setdefault(name, RoleDefault(name, value, description))
|
||||
|
||||
+ def safe_quote_recursive(self, value):
|
||||
+ if isinstance(value, list):
|
||||
+ return [self.safe_quote_recursive(v) for v in value]
|
||||
+ elif isinstance(value, dict):
|
||||
+ return {k: self.safe_quote_recursive(v) for k, v in value.items()}
|
||||
+ elif isinstance(value, str):
|
||||
+ if value in ("yes", "no"):
|
||||
+ return SingleQuotedScalarString(value)
|
||||
+ elif "\n" in value:
|
||||
+ return LiteralScalarString(value)
|
||||
+ elif ":" in value:
|
||||
+ return SingleQuotedScalarString(value)
|
||||
+ return value
|
||||
+
|
||||
def to_commented_map(self) -> CommentedMap:
|
||||
"""
|
||||
Returns all tracked defaults as a CommentedMap.
|
||||
"""
|
||||
commented_defaults = CommentedMap()
|
||||
for role_default in self.defaults:
|
||||
- value = role_default.value
|
||||
- if isinstance(value, str):
|
||||
- if value in ("yes", "no"):
|
||||
- value = SingleQuotedScalarString(value)
|
||||
- if "\n" in value:
|
||||
- value = LiteralScalarString(value)
|
||||
+ value = self.safe_quote_recursive(role_default.value)
|
||||
commented_defaults[role_default.name] = value
|
||||
description_items = (
|
||||
role_default.description
|
||||
--- aar_doc/core.py
|
||||
+++ aar_doc/core.py
|
||||
@@ -7,6 +7,7 @@ and rendering jinja2 templates from processing data.
|
||||
|
||||
import json
|
||||
import pathlib
|
||||
+import re
|
||||
from enum import Enum
|
||||
|
||||
import jinja2
|
||||
@@ -21,6 +22,24 @@ yaml.encoding = "utf-8"
|
||||
yaml.allow_unicode = True
|
||||
|
||||
|
||||
+def ansible_doc_markup(text):
|
||||
+ # Regular expressions copied from ansible-doc:
|
||||
+ # https://github.com/ansible/ansible/blob/devel/lib/ansible/cli/doc.py#L436
|
||||
+ out = re.sub(r'\bI\(([^)]+)\)', r'*\1*', text) # I(text) -> *text*
|
||||
+ out = re.sub(r'\bB\(([^)]+)\)', r'**\1**', out) # B(text) -> **text**
|
||||
+ out = re.sub(r'\bC\(([^)]+)\)', r'`\1`', out) # C(text) -> `text`
|
||||
+ out = re.sub(r'\bM\(([^)]+)\)', r'`\1`', out) # M(module) -> `module`
|
||||
+ out = re.sub(r'\bO\(((?:[^\\)]+|\\.)+)\)', r'`\1`', out) # O(option) -> `option`
|
||||
+ out = re.sub(r'\bV\(((?:[^\\)]+|\\.)+)\)', r'`\1`', out) # V(value) -> `value`
|
||||
+ out = re.sub(r'\bV\(((?:[^\\)]+|\\.)+)\)', r'`\1`', out) # E(env) -> `env`
|
||||
+ out = re.sub(r'\bV\(((?:[^\\)]+|\\.)+)\)', r'`\1`', out) # RV(retval) -> `retval`
|
||||
+ out = re.sub(r'\bU\(([^)]+)\)', r'[\1]', out) # U(url) -> [url]
|
||||
+ out = re.sub(r'\bL\(([^)]+), *([^)]+)\)', r'[\1](\2)', out) # L(text,url) -> [text](url)
|
||||
+ out = re.sub(r'\bR\(([^)]+), *([^)]+)\)', r'[\1](#\2)', out) # R(text,frag) -> [text](#frag)
|
||||
+ out = re.sub(r'\bHORIZONTALLINE\b', r'\n\n---\n', out) # HORIZONTALLINE -> ---
|
||||
+ return out
|
||||
+
|
||||
+
|
||||
class OutputMode(Enum):
|
||||
"""
|
||||
Defines the options for the output mode.
|
||||
@@ -240,6 +259,7 @@ def render_content(ctx: typer.Context, content_template: str) -> str:
|
||||
autoescape=jinja2.select_autoescape(),
|
||||
undefined=jinja2.StrictUndefined,
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
|
||||
role = ctx.obj["config"]["role"]
|
||||
metadata = ctx.obj["data"]["metadata"]
|
||||
@@ -270,12 +290,14 @@ def render_content(ctx: typer.Context, content_template: str) -> str:
|
||||
keep_trailing_newline=True,
|
||||
loader=jinja2.FileSystemLoader([role_path, output_template_file.parent]),
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
template = env.get_template(output_template_file.name)
|
||||
except (FileNotFoundError, OSError):
|
||||
env = jinja2.Environment(
|
||||
keep_trailing_newline=True,
|
||||
loader=jinja2.FileSystemLoader(role_path),
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
template = env.from_string(source=output_template)
|
||||
|
||||
return template.render(
|
||||
--- aar_doc/templates/markdown.j2
|
||||
+++ aar_doc/templates/markdown.j2
|
||||
@@ -3,7 +3,7 @@
|
||||
{%- if "version" in galaxy_collection %}
|
||||
Version: {{ galaxy_collection.version }}
|
||||
{% endif %}
|
||||
-{{ metadata.galaxy_info.description }}
|
||||
+{{ metadata.galaxy_info.description | ansible_doc_markup }}
|
||||
{% if ("galaxy_tags" in metadata.galaxy_info) and (metadata.galaxy_info.galaxy_tags | length > 0) %}
|
||||
Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
{%- endif %}
|
||||
@@ -22,14 +22,15 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|
||||
### Entrypoint: {{ entrypoint }}
|
||||
|
||||
-{{ argument_specs[entrypoint].short_description }}
|
||||
+{{ argument_specs[entrypoint].short_description | ansible_doc_markup }}
|
||||
|
||||
{% if "description" in argument_specs[entrypoint] %}
|
||||
{%- if argument_specs[entrypoint].description is string -%}
|
||||
-{{ argument_specs[entrypoint].description }}
|
||||
+{{ argument_specs[entrypoint].description | ansible_doc_markup }}
|
||||
{% else %}
|
||||
{%- for line in argument_specs[entrypoint].description -%}
|
||||
-{{ line }}
|
||||
+{{ line | ansible_doc_markup }}
|
||||
+
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% endif -%}
|
||||
@@ -39,7 +40,7 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|Option|Description|Type|Required|Default|
|
||||
|---|---|---|---|---|
|
||||
{%- for name, details in options.items() %}
|
||||
-| {{ name }} | {{ details.display_description }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
+| {{ name }} | {{ details.display_description | ansible_doc_markup }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
{%- endfor %}
|
||||
|
||||
{% if entrypoint_options[entrypoint] | length > 1 -%}
|
||||
@@ -49,7 +50,7 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|Option|Description|Type|Required|Default|
|
||||
|---|---|---|---|---|
|
||||
{%- for name, details in options.items() %}
|
||||
-| {{ name }} | {{ details.display_description }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
+| {{ name }} | {{ details.display_description | ansible_doc_markup }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
{%- endfor %}
|
||||
|
||||
{% endfor -%}
|
|
@ -22,161 +22,7 @@ jobs:
|
|||
- name: Patch aar-doc
|
||||
run: |
|
||||
cd /usr/local/lib/python3.*/dist-packages/
|
||||
patch -p1 <<EOF
|
||||
--- a/aar_doc/defaults.py
|
||||
+++ b/aar_doc/defaults.py
|
||||
@@ -15,7 +15,7 @@
|
||||
from ruamel.yaml.scalarstring import LiteralScalarString, SingleQuotedScalarString
|
||||
|
||||
yaml = YAML()
|
||||
-yaml.indent(mapping=2, sequence=2, offset=2)
|
||||
+yaml.indent(mapping=2, sequence=4, offset=2)
|
||||
yaml.encoding = "utf-8"
|
||||
yaml.allow_unicode = True
|
||||
|
||||
--- a/aar_doc/defaults.py
|
||||
+++ b/aar_doc/defaults.py
|
||||
@@ -73,18 +73,27 @@ def add_default(
|
||||
else:
|
||||
self._defaults.setdefault(name, RoleDefault(name, value, description))
|
||||
|
||||
+ def safe_quote_recursive(self, value):
|
||||
+ if isinstance(value, list):
|
||||
+ return [self.safe_quote_recursive(v) for v in value]
|
||||
+ elif isinstance(value, dict):
|
||||
+ return {k: self.safe_quote_recursive(v) for k, v in value.items()}
|
||||
+ elif isinstance(value, str):
|
||||
+ if value in ("yes", "no"):
|
||||
+ return SingleQuotedScalarString(value)
|
||||
+ elif "\\n" in value:
|
||||
+ return LiteralScalarString(value)
|
||||
+ elif ":" in value:
|
||||
+ return SingleQuotedScalarString(value)
|
||||
+ return value
|
||||
+
|
||||
def to_commented_map(self) -> CommentedMap:
|
||||
"""
|
||||
Returns all tracked defaults as a CommentedMap.
|
||||
"""
|
||||
commented_defaults = CommentedMap()
|
||||
for role_default in self.defaults:
|
||||
- value = role_default.value
|
||||
- if isinstance(value, str):
|
||||
- if value in ("yes", "no"):
|
||||
- value = SingleQuotedScalarString(value)
|
||||
- if "\\n" in value:
|
||||
- value = LiteralScalarString(value)
|
||||
+ value = self.safe_quote_recursive(role_default.value)
|
||||
commented_defaults[role_default.name] = value
|
||||
description_items = (
|
||||
role_default.description
|
||||
--- a/aar_doc/core.py
|
||||
+++ b/aar_doc/core.py
|
||||
@@ -7,6 +7,7 @@ and rendering jinja2 templates from processing data.
|
||||
|
||||
import json
|
||||
import pathlib
|
||||
+import re
|
||||
from enum import Enum
|
||||
|
||||
import jinja2
|
||||
@@ -21,6 +22,24 @@ yaml.encoding = "utf-8"
|
||||
yaml.allow_unicode = True
|
||||
|
||||
|
||||
+def ansible_doc_markup(text):
|
||||
+ # Regular expressions copied from ansible-doc:
|
||||
+ # https://github.com/ansible/ansible/blob/devel/lib/ansible/cli/doc.py#L436
|
||||
+ out = re.sub(r'\\bI\\(([^)]+)\\)', r'*\\1*', text) # I(text) -> *text*
|
||||
+ out = re.sub(r'\\bB\\(([^)]+)\\)', r'**\\1**', out) # B(text) -> **text**
|
||||
+ out = re.sub(r'\\bC\\(([^)]+)\\)', r'`\\1`', out) # C(text) -> `text`
|
||||
+ out = re.sub(r'\\bM\\(([^)]+)\\)', r'`\\1`', out) # M(module) -> `module`
|
||||
+ out = re.sub(r'\\bO\\(((?:[^\\\\)]+|\\\\.)+)\\)', r'`\\1`', out) # O(option) -> `option`
|
||||
+ out = re.sub(r'\\bV\\(((?:[^\\\\)]+|\\\\.)+)\\)', r'`\\1`', out) # V(value) -> `value`
|
||||
+ out = re.sub(r'\\bV\\(((?:[^\\\\)]+|\\\\.)+)\\)', r'`\\1`', out) # E(env) -> `env`
|
||||
+ out = re.sub(r'\\bV\\(((?:[^\\\\)]+|\\\\.)+)\\)', r'`\\1`', out) # RV(retval) -> `retval`
|
||||
+ out = re.sub(r'\\bU\\(([^)]+)\\)', r'[\\1]', out) # U(url) -> [url]
|
||||
+ out = re.sub(r'\\bL\\(([^)]+), *([^)]+)\\)', r'[\\1](\\2)', out) # L(text,url) -> [text](url)
|
||||
+ out = re.sub(r'\\bR\\(([^)]+), *([^)]+)\\)', r'[\\1](#\\2)', out) # R(text,frag) -> [text](#frag)
|
||||
+ out = re.sub(r'\\bHORIZONTALLINE\\b', r'\\n\\n---\\n', out) # HORIZONTALLINE -> ---
|
||||
+ return out
|
||||
+
|
||||
+
|
||||
class OutputMode(Enum):
|
||||
"""
|
||||
Defines the options for the output mode.
|
||||
@@ -240,6 +259,7 @@ def render_content(ctx: typer.Context, content_template: str) -> str:
|
||||
autoescape=jinja2.select_autoescape(),
|
||||
undefined=jinja2.StrictUndefined,
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
|
||||
role = ctx.obj["config"]["role"]
|
||||
metadata = ctx.obj["data"]["metadata"]
|
||||
@@ -270,12 +290,14 @@ def render_content(ctx: typer.Context, content_template: str) -> str:
|
||||
keep_trailing_newline=True,
|
||||
loader=jinja2.FileSystemLoader([role_path, output_template_file.parent]),
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
template = env.get_template(output_template_file.name)
|
||||
except (FileNotFoundError, OSError):
|
||||
env = jinja2.Environment(
|
||||
keep_trailing_newline=True,
|
||||
loader=jinja2.FileSystemLoader(role_path),
|
||||
)
|
||||
+ env.filters['ansible_doc_markup'] = ansible_doc_markup
|
||||
template = env.from_string(source=output_template)
|
||||
|
||||
return template.render(
|
||||
--- a/aar_doc/templates/markdown.j2
|
||||
+++ b/aar_doc/templates/markdown.j2
|
||||
@@ -3,7 +3,7 @@
|
||||
{%- if "version" in galaxy_collection %}
|
||||
Version: {{ galaxy_collection.version }}
|
||||
{% endif %}
|
||||
-{{ metadata.galaxy_info.description }}
|
||||
+{{ metadata.galaxy_info.description | ansible_doc_markup }}
|
||||
{% if ("galaxy_tags" in metadata.galaxy_info) and (metadata.galaxy_info.galaxy_tags | length > 0) %}
|
||||
Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
{%- endif %}
|
||||
@@ -22,14 +22,15 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|
||||
### Entrypoint: {{ entrypoint }}
|
||||
|
||||
-{{ argument_specs[entrypoint].short_description }}
|
||||
+{{ argument_specs[entrypoint].short_description | ansible_doc_markup }}
|
||||
|
||||
{% if "description" in argument_specs[entrypoint] %}
|
||||
{%- if argument_specs[entrypoint].description is string -%}
|
||||
-{{ argument_specs[entrypoint].description }}
|
||||
+{{ argument_specs[entrypoint].description | ansible_doc_markup }}
|
||||
{% else %}
|
||||
{%- for line in argument_specs[entrypoint].description -%}
|
||||
-{{ line }}
|
||||
+{{ line | ansible_doc_markup }}
|
||||
+
|
||||
{% endfor -%}
|
||||
{% endif -%}
|
||||
{% endif -%}
|
||||
@@ -39,7 +40,7 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|Option|Description|Type|Required|Default|
|
||||
|---|---|---|---|---|
|
||||
{%- for name, details in options.items() %}
|
||||
-| {{ name }} | {{ details.display_description }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
+| {{ name }} | {{ details.display_description | ansible_doc_markup }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
{%- endfor %}
|
||||
|
||||
{% if entrypoint_options[entrypoint] | length > 1 -%}
|
||||
@@ -49,7 +50,7 @@ Tags: {{ metadata.galaxy_info.galaxy_tags | join(', ') }}
|
||||
|Option|Description|Type|Required|Default|
|
||||
|---|---|---|---|---|
|
||||
{%- for name, details in options.items() %}
|
||||
-| {{ name }} | {{ details.display_description }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
+| {{ name }} | {{ details.display_description | ansible_doc_markup }} | {{ details.display_type }} | {{ details.display_required }} | {{ details.display_default }} |
|
||||
{%- endfor %}
|
||||
|
||||
{% endfor -%}
|
||||
EOF
|
||||
patch -p1 < $OLDPWD/.forgejo/workflows/aardoc.patch
|
||||
|
||||
- name: Set version in galaxy.yml
|
||||
run: |
|
||||
|
|
Loading…
Add table
Reference in a new issue