releasehx 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.adoc +1 -1
- data/lib/releasehx/generated.rb +1 -1
- data/lib/releasehx/rhyml/templates/changelog.adoc.liquid +14 -0
- data/lib/releasehx/rhyml/templates/changelog.html.liquid +14 -0
- data/lib/releasehx/rhyml/templates/changelog.md.liquid +11 -0
- data/lib/releasehx/rhyml/templates/changes-sorter.liquid +64 -0
- data/lib/releasehx/rhyml/templates/config-cascade.liquid +61 -0
- data/lib/releasehx/rhyml/templates/entry.adoc.liquid +26 -0
- data/lib/releasehx/rhyml/templates/entry.html.liquid +38 -0
- data/lib/releasehx/rhyml/templates/entry.md.liquid +25 -0
- data/lib/releasehx/rhyml/templates/groupby.liquid +12 -0
- data/lib/releasehx/rhyml/templates/groupings.liquid +97 -0
- data/lib/releasehx/rhyml/templates/groups-parser.liquid +60 -0
- data/lib/releasehx/rhyml/templates/head-parser.liquid +34 -0
- data/lib/releasehx/rhyml/templates/header.liquid +17 -0
- data/lib/releasehx/rhyml/templates/history.adoc.liquid +11 -0
- data/lib/releasehx/rhyml/templates/history.html.liquid +54 -0
- data/lib/releasehx/rhyml/templates/history.md.liquid +16 -0
- data/lib/releasehx/rhyml/templates/item.liquid +35 -0
- data/lib/releasehx/rhyml/templates/metadata-entry.adoc.liquid +56 -0
- data/lib/releasehx/rhyml/templates/metadata-entry.html.liquid +2 -0
- data/lib/releasehx/rhyml/templates/metadata-entry.md.liquid +130 -0
- data/lib/releasehx/rhyml/templates/metadata-note.adoc.liquid +56 -0
- data/lib/releasehx/rhyml/templates/metadata-note.html.liquid +36 -0
- data/lib/releasehx/rhyml/templates/metadata-note.md.liquid +30 -0
- data/lib/releasehx/rhyml/templates/note.adoc.liquid +52 -0
- data/lib/releasehx/rhyml/templates/note.html.liquid +25 -0
- data/lib/releasehx/rhyml/templates/note.md.liquid +37 -0
- data/lib/releasehx/rhyml/templates/parts-listing.liquid +61 -0
- data/lib/releasehx/rhyml/templates/release-notes.adoc.liquid +14 -0
- data/lib/releasehx/rhyml/templates/release-notes.html.liquid +14 -0
- data/lib/releasehx/rhyml/templates/release-notes.md.liquid +14 -0
- data/lib/releasehx/rhyml/templates/release.adoc.liquid +16 -0
- data/lib/releasehx/rhyml/templates/release.html.liquid +20 -0
- data/lib/releasehx/rhyml/templates/release.md.liquid +20 -0
- data/lib/releasehx/rhyml/templates/rhyml-change-append.yaml.liquid +7 -0
- data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +39 -0
- data/lib/releasehx/rhyml/templates/rhyml.yaml.liquid +14 -0
- data/lib/releasehx/rhyml/templates/section-text.liquid +9 -0
- data/lib/releasehx/rhyml/templates/sections.liquid +47 -0
- data/lib/releasehx/rhyml/templates/tags-listing.liquid +61 -0
- metadata +40 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d59a2e7cb45f862e4b5c39d17673854ca6741fe23d113e1cfb8a74a50e381fb7
|
|
4
|
+
data.tar.gz: ebf24c9f7f7f2b388494ea934cd34c18d7469c07c693fd1e19faceaa3bd09810
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5224482fa39c6423e95c8d386720ba165d79ecdc019471581509904ad147d893bc2a66c7f57681a1eca4679fbc80b84d87937dcd4f75ac0b197839a994a806bd
|
|
7
|
+
data.tar.gz: 38bbad9012e98c1dadbade6df3b5b719c9eb77fe61c72e6cdd2e971437536d004c5df2581db2ccf92f58abd93a059a199483ed45e113ddb5b8281438f45a69f0
|
data/README.adoc
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
:this_prod_vrsn_major: 0
|
|
16
16
|
:this_prod_vrsn_minor: 1
|
|
17
17
|
:this_prod_vrsn_major-minor: {this_prod_vrsn_major}.{this_prod_vrsn_minor}
|
|
18
|
-
:this_prod_vrsn_patch:
|
|
18
|
+
:this_prod_vrsn_patch: 1
|
|
19
19
|
:this_prod_vrsn: {this_prod_vrsn_major-minor}.{this_prod_vrsn_patch}
|
|
20
20
|
:next_prod_vrsn: 0.2.0
|
|
21
21
|
:tagline: Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.
|
data/lib/releasehx/generated.rb
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Auto-generated by Sourcerer::Builder
|
|
3
3
|
|
|
4
4
|
module ReleaseHx
|
|
5
|
-
ATTRIBUTES = {:globals=>{"attribute-undefined"=>"drop-line", "attribute-missing"=>"skip", "appendix-caption"=>"Appendix", "appendix-refsig"=>"Appendix", "caution-caption"=>"Caution", "chapter-refsig"=>"Chapter", "example-caption"=>"Example", "figure-caption"=>"Figure", "important-caption"=>"Important", "last-update-label"=>"Last updated", "note-caption"=>"Note", "part-refsig"=>"Part", "prewrap"=>"", "sectids"=>"", "section-refsig"=>"Section", "table-caption"=>"Table", "tip-caption"=>"Tip", "toc-placement"=>"macro", "toc-title"=>"Table of Contents", "untitled-label"=>"Untitled", "version-label"=>"Version", "warning-caption"=>"Warning", "notitle"=>"", "docfile"=>"/home/brian/Documents/work/releasehx/README.adoc", "docdir"=>"/home/brian/Documents/work/releasehx", "docfilesuffix"=>".adoc", "docname"=>"README", "embedded"=>"", "asciidoctor"=>"", "asciidoctor-version"=>"2.0.23", "safe-mode-name"=>"unsafe", "safe-mode-unsafe"=>"", "safe-mode-level"=>0, "max-include-depth"=>64, "user-home"=>"/home/brian", "doctype"=>"article", "htmlsyntax"=>"html", "backend-html5-doctype-article"=>"", "doctype-article"=>"", "backend-html5"=>"", "backend"=>"html5", "outfilesuffix"=>".html", "filetype"=>"html", "filetype-html"=>"", "basebackend-html-doctype-article"=>"", "basebackend-html"=>"", "basebackend"=>"html", "stylesdir"=>".", "iconsdir"=>"./images/icons", "localdate"=>"2026-01-01", "localyear"=>"2026", "localtime"=>"13:
|
|
5
|
+
ATTRIBUTES = {:globals=>{"attribute-undefined"=>"drop-line", "attribute-missing"=>"skip", "appendix-caption"=>"Appendix", "appendix-refsig"=>"Appendix", "caution-caption"=>"Caution", "chapter-refsig"=>"Chapter", "example-caption"=>"Example", "figure-caption"=>"Figure", "important-caption"=>"Important", "last-update-label"=>"Last updated", "note-caption"=>"Note", "part-refsig"=>"Part", "prewrap"=>"", "sectids"=>"", "section-refsig"=>"Section", "table-caption"=>"Table", "tip-caption"=>"Tip", "toc-placement"=>"macro", "toc-title"=>"Table of Contents", "untitled-label"=>"Untitled", "version-label"=>"Version", "warning-caption"=>"Warning", "notitle"=>"", "docfile"=>"/home/brian/Documents/work/releasehx/README.adoc", "docdir"=>"/home/brian/Documents/work/releasehx", "docfilesuffix"=>".adoc", "docname"=>"README", "embedded"=>"", "asciidoctor"=>"", "asciidoctor-version"=>"2.0.23", "safe-mode-name"=>"unsafe", "safe-mode-unsafe"=>"", "safe-mode-level"=>0, "max-include-depth"=>64, "user-home"=>"/home/brian", "doctype"=>"article", "htmlsyntax"=>"html", "backend-html5-doctype-article"=>"", "doctype-article"=>"", "backend-html5"=>"", "backend"=>"html5", "outfilesuffix"=>".html", "filetype"=>"html", "filetype-html"=>"", "basebackend-html-doctype-article"=>"", "basebackend-html"=>"", "basebackend"=>"html", "stylesdir"=>".", "iconsdir"=>"./images/icons", "localdate"=>"2026-01-01", "localyear"=>"2026", "localtime"=>"13:42:59 -0500", "localdatetime"=>"2026-01-01 13:42:59 -0500", "docdate"=>"2026-01-01", "docyear"=>"2026", "doctime"=>"13:41:27 -0500", "docdatetime"=>"2026-01-01 13:41:27 -0500", "page-layout"=>"default", "page-permalink"=>"/docs", "page-nav_order"=>"1", "doctitle"=>"ReleaseHx", "docopslab_git_www"=>"https://github.com/DocOps", "this_prod_slug"=>"releasehx", "releasehx_prod_repo"=>"https://github.com/DocOps/releasehx", "releasehx_demo_repo"=>"https://github.com/DocOps/releasehx-demo", "this_prod_repo"=>"https://github.com/DocOps/releasehx", "this_prod_vrsn_major"=>"0", "this_prod_vrsn_minor"=>"1", "this_prod_vrsn_major-minor"=>"0.1", "this_prod_vrsn_patch"=>"1", "this_prod_vrsn"=>"0.1.1", "next_prod_vrsn"=>"0.2.0", "tagline"=>"Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.", "description"=>"CLI utility and Ruby API for generating structured release notes and changelog documents from various issue-tracking platforms or YAML definitions into plaintext drafts (<strong>AsciiDoc</strong>, <strong>Markdown</strong>, <strong>YAML</strong>) and rich-text output (<strong>HTML</strong> and <strong>PDF</strong>).", "gem_config_definition_path"=>"./specs/data/config-def.yml", "app_default_config_path"=>"./.releasehx.yml", "default_markup"=>"markdown", "default_slug_type"=>"kebab", "default_tplt_lang"=>"liquid", "default_drafts_dir"=>"_drafts", "default_enrich_dir"=>"_publish", "default_output_dir"=>".", "default_payloads_dir"=>"_payloads", "default_templates_dir"=>"_templates", "default_mappings_dir"=>"_mappings", "default_api_clients_dir"=>"_apis", "default_cache_dir"=>".releasehx/cache", "default_api_cred_env"=>"RELEASEHX_API_CRED", "default_api_key_env"=>"RELEASEHX_API_KEY", "default_api_user_env"=>"RELEASEHX_API_USER", "default_api_org_env"=>"RELEASEHX_API_ORG", "markdown_extensions"=>".md, .markdown", "asciidoc_extensions"=>".adoc, .ad, .asciidoc", "yaml_extensions"=>".yml, .yaml, .rhyml", "draft_source_file_types"=>"AsciiDoc, Markdown, YAML", "draft_source_extensions"=>".md, .markdown, .adoc, .ad, .asciidoc, .yml, .yaml, .rhyml", "enrich_file_types"=>"HTML, PDF", "enrich_extensions"=>".html, .pdf", "docker_base_command"=>"docker run -it --rm --user $(id -u):$(id -g) -v $(pwd):/workdir docopslab/releasehx rhx", "this_prod_repo_branch"=>"https://github.com/DocOps/releasehx/tree/release/0.1", "docs_extn"=>"", "toc"=>"", "toclevels"=>"3", "authorcount"=>0, "toc-position"=>"content"}}
|
|
6
6
|
|
|
7
7
|
SNIPPET_LOOKUP = {"helpscreen"=>"helpscreen.txt"}
|
|
8
8
|
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{%- assign content_config = config.changelog %}
|
|
2
|
+
{%- assign section_type = "changelog" %}
|
|
3
|
+
{%- embed config-cascade.liquid %}
|
|
4
|
+
{%- embed changes-sorter.liquid %}
|
|
5
|
+
{%- assign level = content_config.htag | replace: "h", "" | default: dflt_next_header_level | plus: 0 %}
|
|
6
|
+
{%- capture header_chars %}
|
|
7
|
+
{%- for i in (1..level) %}{{ header_char }}{% endfor %}
|
|
8
|
+
{%- endcapture %}
|
|
9
|
+
{%- include header.liquid format=format level=level text=content_config.head %}
|
|
10
|
+
{%- assign dflt_next_header_level = level | plus: 1 -%}
|
|
11
|
+
{%- assign item_count = 0 %}
|
|
12
|
+
{%- embed section-text.liquid %}
|
|
13
|
+
|
|
14
|
+
{%- embed groupings.liquid %}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{%- assign content_config = config.changelog %}
|
|
2
|
+
{%- embed changes-sorter.liquid %}
|
|
3
|
+
{%- assign level = content_config.htag | replace: "h", "" | default: dflt_next_header_level | plus: 0 %}
|
|
4
|
+
{%- assign dflt_next_header_level = level | plus: 1 -%}
|
|
5
|
+
{%- assign item_count = 0 %}
|
|
6
|
+
|
|
7
|
+
<div class="changelog-section">
|
|
8
|
+
{%- include header.liquid format=format level=level text=content_config.head %}
|
|
9
|
+
|
|
10
|
+
{%- embed section-text.liquid %}
|
|
11
|
+
|
|
12
|
+
{%- embed groupings.liquid %}
|
|
13
|
+
</div>
|
|
14
|
+
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{%- assign content_config = config.changelog %}
|
|
2
|
+
{%- assign section_type = "changelog" %}
|
|
3
|
+
{%- embed config-cascade.liquid %}
|
|
4
|
+
{% embed changes-sorter.liquid %}
|
|
5
|
+
{%- assign level = content_config.htag | replace: "h", "" | default: dflt_next_header_level | plus: 0 %}
|
|
6
|
+
{%- include header.liquid format=format level=level text=content_config.head %}
|
|
7
|
+
{%- assign dflt_next_header_level = level | plus: 1 -%}
|
|
8
|
+
{%- assign item_count = 0 %}
|
|
9
|
+
{%- embed section-text.liquid %}
|
|
10
|
+
|
|
11
|
+
{%- embed groupings.liquid %}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{%- assign groups = '' | split: ',' %}
|
|
2
|
+
{%- assign grouping1 = '' | split: ',' %}
|
|
3
|
+
{%- assign grouping2 = '' | split: ',' %}
|
|
4
|
+
|
|
5
|
+
{%- for group_expr in content_config.sort %}
|
|
6
|
+
{%- assign kind = group_expr | split: ':' | first %}
|
|
7
|
+
{%- assign target = group_expr | split: ':' | last %}
|
|
8
|
+
|
|
9
|
+
{%- if kind == 'tag' or kind == 'tags' %}
|
|
10
|
+
{%- for tag_entry in config.tags %}
|
|
11
|
+
{%- assign tag_name = tag_entry[0] %}
|
|
12
|
+
{%- if tag_name == '_include' or tag_name == '_exclude' %}
|
|
13
|
+
{%- continue %}
|
|
14
|
+
{%- endif %}
|
|
15
|
+
{%- assign group = 'tag:' | append: tag_name %}
|
|
16
|
+
{%- assign group = group | split: ',' %}
|
|
17
|
+
{%- if target == 'grouping1' %}
|
|
18
|
+
{%- assign grouping1 = grouping1 | concat: group %}
|
|
19
|
+
{%- elsif target == 'grouping2' %}
|
|
20
|
+
{%- assign grouping2 = grouping2 | concat: group %}
|
|
21
|
+
{%- endif %}
|
|
22
|
+
{%- endfor %}
|
|
23
|
+
|
|
24
|
+
{%- elsif kind == 'type' %}
|
|
25
|
+
{%- for type_entry in config.types %}
|
|
26
|
+
{%- assign type_name = type_entry[0] %}
|
|
27
|
+
{%- if type_name contains "<" %}
|
|
28
|
+
{%- continue %}
|
|
29
|
+
{%- endif %}
|
|
30
|
+
{%- assign group = 'type:' | append: type_name | split: ',' %}
|
|
31
|
+
{%- if target == 'grouping1' %}
|
|
32
|
+
{%- assign grouping1 = grouping1 | concat: group %}
|
|
33
|
+
{%- elsif target == 'grouping2' %}
|
|
34
|
+
{%- assign grouping2 = grouping2 | concat: group %}
|
|
35
|
+
{%- endif %}
|
|
36
|
+
{%- endfor %}
|
|
37
|
+
|
|
38
|
+
{%- elsif kind == 'part' %}
|
|
39
|
+
{%- for part_entry in config.parts %}
|
|
40
|
+
{%- assign part_name = part_entry[0] %}
|
|
41
|
+
{%- if part_name contains "<" or part_name == 'label_prefix' %}
|
|
42
|
+
{%- continue %}
|
|
43
|
+
{%- endif %}
|
|
44
|
+
{%- assign group = 'part:' | append: part_name | split: ',' %}
|
|
45
|
+
{%- if target == 'grouping1' %}
|
|
46
|
+
{%- assign grouping1 = grouping1 | concat: group %}
|
|
47
|
+
{%- elsif target == 'grouping2' %}
|
|
48
|
+
{%- assign grouping2 = grouping2 | concat: group %}
|
|
49
|
+
{%- endif %}
|
|
50
|
+
{%- endfor %}
|
|
51
|
+
|
|
52
|
+
{%- else %}
|
|
53
|
+
{%- assign group = 'tag:' | append: kind | split: ',' %}
|
|
54
|
+
{%- if target == 'grouping1' %}
|
|
55
|
+
{%- assign grouping1 = grouping1 | concat: group %}
|
|
56
|
+
{%- elsif target == 'grouping2' %}
|
|
57
|
+
{%- assign grouping2 = grouping2 | concat: group %}
|
|
58
|
+
{%- endif %}
|
|
59
|
+
{%- endif %}
|
|
60
|
+
{%- endfor %}
|
|
61
|
+
|
|
62
|
+
{%- if grouping2.size > 0 and grouping1 == empty %}
|
|
63
|
+
Invalid sort: cannot define grouping2 without grouping1
|
|
64
|
+
{%- endif %}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
Configuration cascade logic that handles inheritance from config.history.items
|
|
3
|
+
to config.changelog.items and config.notes.items.
|
|
4
|
+
|
|
5
|
+
This template should be embedded early in the template chain to set up
|
|
6
|
+
simplified variables that can be used throughout the templates.
|
|
7
|
+
{%- endcomment -%}
|
|
8
|
+
|
|
9
|
+
{%- comment -%} Base configuration from config.history.items {%- endcomment -%}
|
|
10
|
+
{%- assign base_config = config.history.items -%}
|
|
11
|
+
|
|
12
|
+
{%- comment -%} Apply cascade logic based on section type {%- endcomment -%}
|
|
13
|
+
{%- if section_type == "changelog" -%}
|
|
14
|
+
{%- assign effective_config = config.changelog.items -%}
|
|
15
|
+
{%- elsif section_type == "notes" -%}
|
|
16
|
+
{%- assign effective_config = config.notes.items -%}
|
|
17
|
+
{%- else -%}
|
|
18
|
+
{%- assign effective_config = base_config -%}
|
|
19
|
+
{%- endif -%}
|
|
20
|
+
|
|
21
|
+
{%- comment -%} Create cascaded configuration variables {%- endcomment -%}
|
|
22
|
+
{%- assign entry_show_lead = effective_config.show_lead | default: base_config.show_lead -%}
|
|
23
|
+
{%- assign note_show_lead = effective_config.show_lead | default: base_config.show_lead -%}
|
|
24
|
+
{%- assign entry_show_issue_links = effective_config.show_issue_links | default: base_config.show_issue_links -%}
|
|
25
|
+
{%- assign note_show_issue_links = effective_config.show_issue_links | default: base_config.show_issue_links -%}
|
|
26
|
+
{%- assign entry_show_git_links = effective_config.show_git_links | default: base_config.show_git_links -%}
|
|
27
|
+
{%- assign note_show_git_links = effective_config.show_git_links | default: base_config.show_git_links -%}
|
|
28
|
+
{%- assign entry_metadata_labels = effective_config.metadata_labels | default: base_config.metadata_labels -%}
|
|
29
|
+
{%- assign note_metadata_labels = effective_config.metadata_labels | default: base_config.metadata_labels -%}
|
|
30
|
+
{%- assign entry_metadata_icons = effective_config.metadata_icons | default: base_config.metadata_icons -%}
|
|
31
|
+
{%- assign note_metadata_icons = effective_config.metadata_icons | default: base_config.metadata_icons -%}
|
|
32
|
+
{%- assign entry_allow_redundant = effective_config.allow_redundant | default: base_config.allow_redundant -%}
|
|
33
|
+
{%- assign note_allow_redundant = effective_config.allow_redundant | default: base_config.allow_redundant -%}
|
|
34
|
+
|
|
35
|
+
{%- comment -%} New label display control variables {%- endcomment -%}
|
|
36
|
+
{%- assign entry_show_type_label = effective_config.show_type_label | default: base_config.show_type_label -%}
|
|
37
|
+
{%- assign note_show_type_label = effective_config.show_type_label | default: base_config.show_type_label -%}
|
|
38
|
+
{%- assign entry_show_parts_label = effective_config.show_parts_label | default: base_config.show_parts_label -%}
|
|
39
|
+
{%- assign note_show_parts_label = effective_config.show_parts_label | default: base_config.show_parts_label -%}
|
|
40
|
+
{%- assign entry_show_tags_label = effective_config.show_tags_label | default: base_config.show_tags_label -%}
|
|
41
|
+
{%- assign note_show_tags_label = effective_config.show_tags_label | default: base_config.show_tags_label -%}
|
|
42
|
+
{%- assign entry_show_lead_label = effective_config.show_lead_label | default: base_config.show_lead_label -%}
|
|
43
|
+
{%- assign note_show_lead_label = effective_config.show_lead_label | default: base_config.show_lead_label -%}
|
|
44
|
+
{%- assign entry_show_auths_label = effective_config.show_auths_label | default: base_config.show_auths_label -%}
|
|
45
|
+
{%- assign note_show_auths_label = effective_config.show_auths_label | default: base_config.show_auths_label -%}
|
|
46
|
+
|
|
47
|
+
{%- comment -%} User link template for bio/homepage links {%- endcomment -%}
|
|
48
|
+
{%- assign entry_user_link_template = config.links.user.href -%}
|
|
49
|
+
{%- assign note_user_link_template = config.links.user.href -%}
|
|
50
|
+
|
|
51
|
+
{%- comment -%} Labeling configuration variables {%- endcomment -%}
|
|
52
|
+
{%- assign labeling_singularize_labels = config.history.labeling.singularize_labels -%}
|
|
53
|
+
{%- assign labeling_type_label = config.history.labeling.type_label -%}
|
|
54
|
+
{%- assign labeling_parts_label = config.history.labeling.parts_label -%}
|
|
55
|
+
{%- assign labeling_part_label = config.history.labeling.part_label -%}
|
|
56
|
+
{%- assign labeling_tags_label = config.history.labeling.tags_label -%}
|
|
57
|
+
{%- assign labeling_tag_label = config.history.labeling.tag_label -%}
|
|
58
|
+
{%- assign labeling_lead_label = config.history.labeling.lead_label -%}
|
|
59
|
+
{%- assign labeling_auths_label = config.history.labeling.auths_label -%}
|
|
60
|
+
{%- assign labeling_auth_label = config.history.labeling.auth_label -%}
|
|
61
|
+
{%- assign labeling_join_string = config.history.labeling.join_string -%}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{%- embed metadata-entry.adoc.liquid -%}
|
|
2
|
+
{%- assign frame = content_config.items.frame %}
|
|
3
|
+
{%- assign summ = change.summ %}
|
|
4
|
+
{%- case frame %}
|
|
5
|
+
{%- when "unordered" %}
|
|
6
|
+
{%- assign bullet = "* " %}
|
|
7
|
+
{%- when "ordered" %}
|
|
8
|
+
{%- assign bullet = ". " %}
|
|
9
|
+
{%- else %}
|
|
10
|
+
{%- assign bullet = "" %}
|
|
11
|
+
{%- endcase %}
|
|
12
|
+
|
|
13
|
+
{% unless changes_listed contains change.chid -%}
|
|
14
|
+
[[entry-{{ change.chid }}]]
|
|
15
|
+
{%- endunless %}
|
|
16
|
+
{%- if frame == "ordered" %}
|
|
17
|
+
[start={{ item_count }}]
|
|
18
|
+
{%- endif %}
|
|
19
|
+
{{ bullet -}}
|
|
20
|
+
{{ change.summ | trim }} +
|
|
21
|
+
{%- if change_metadata != "" -%}
|
|
22
|
+
{{ change_metadata | trim }}
|
|
23
|
+
{%- endif %}
|
|
24
|
+
{%- if change.note %}
|
|
25
|
+
xref:note-{{ change.chid }}[icon:sticky-note[]NOTE]
|
|
26
|
+
{%- endif %}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{%- embed metadata-entry.html.liquid -%}
|
|
2
|
+
{%- assign frame = frame %}
|
|
3
|
+
{%- case frame %}
|
|
4
|
+
{%- when "unordered" %}
|
|
5
|
+
{%- assign list_class = "list-unstyled" %}
|
|
6
|
+
{%- assign item_class = "mb-2" %}
|
|
7
|
+
{%- assign bullet = "• " %}
|
|
8
|
+
{%- when "ordered" %}
|
|
9
|
+
{%- assign list_class = "list-group list-group-numbered" %}
|
|
10
|
+
{%- assign item_class = "list-group-item border-0 px-0" %}
|
|
11
|
+
{%- assign bullet = "" %}
|
|
12
|
+
{%- else %}
|
|
13
|
+
{%- assign list_class = "list-unstyled" %}
|
|
14
|
+
{%- assign item_class = "mb-2" %}
|
|
15
|
+
{%- assign bullet = "" %}
|
|
16
|
+
{%- endcase %}
|
|
17
|
+
|
|
18
|
+
<div class="change-entry {{ item_class }}" id="entry-{{ change.chid }}">
|
|
19
|
+
<div class="d-flex align-items-start">
|
|
20
|
+
<div class="flex-grow-1">
|
|
21
|
+
<span class="change-summary">{{ bullet }}{{ change.summ | trim | pasterize }}</span>
|
|
22
|
+
{%- if change_metadata != "" -%}
|
|
23
|
+
<div class="change-metadata mt-1">
|
|
24
|
+
{{ change_metadata | trim }}
|
|
25
|
+
</div>
|
|
26
|
+
{%- endif %}
|
|
27
|
+
</div>
|
|
28
|
+
{%- if change.note %}
|
|
29
|
+
<div class="note-link">
|
|
30
|
+
<a href="#note-{{ change.chid }}" class="text-decoration-none">
|
|
31
|
+
<i class="fa fa-sticky-note-o"></i>
|
|
32
|
+
<small>NOTE</small>
|
|
33
|
+
</a>
|
|
34
|
+
</div>
|
|
35
|
+
{%- endif %}
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{%- embed metadata-entry.md.liquid -%}
|
|
2
|
+
{%- assign frame = content_config.items.frame | default: "unordered" %}
|
|
3
|
+
{%- assign summ = change.summ %}
|
|
4
|
+
{%- case frame %}
|
|
5
|
+
{%- when "unordered" %}
|
|
6
|
+
{%- assign bullet = "- " %}
|
|
7
|
+
{%- when "ordered" %}
|
|
8
|
+
{%- assign bullet = "1. " %}
|
|
9
|
+
{%- when "basic" %}
|
|
10
|
+
{%- assign bullet = "- " %}
|
|
11
|
+
{%- else %}
|
|
12
|
+
{%- assign bullet = "" %}
|
|
13
|
+
{%- endcase %}
|
|
14
|
+
|
|
15
|
+
{%- if frame == "basic" %}
|
|
16
|
+
|
|
17
|
+
{{ bullet }}{{ change.summ | trim }}{% if change_metadata != "" %} ({{ change_metadata | trim | replace: " | ", ", " }}){% endif %}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
18
|
+
{%- elsif frame == "paragraph" %}
|
|
19
|
+
|
|
20
|
+
{{ change.summ | trim }}{% if change_metadata != "" %} ({{ change_metadata | trim }}){% endif %}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
21
|
+
{%- else %}
|
|
22
|
+
|
|
23
|
+
{{ bullet }}{{ change.summ | trim }}{% if change_metadata != "" %} ({{ change_metadata | trim }}){% endif %}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
24
|
+
{%- endif %}
|
|
25
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{%- assign kind = group | split: ":" | first %}
|
|
2
|
+
{%- assign slug = group | split: ":" | last %}
|
|
3
|
+
|
|
4
|
+
{%- if kind == "tag" %}
|
|
5
|
+
{%- assign entry = config.tags[slug] %}
|
|
6
|
+
{%- elsif kind == "type" %}
|
|
7
|
+
{%- assign entry = config.types[slug] %}
|
|
8
|
+
{%- elsif kind == "part" %}
|
|
9
|
+
{%- assign entry = config.parts[slug] %}
|
|
10
|
+
{%- endif %}
|
|
11
|
+
{%- assign dflt_head = entry.text | default: slug | capitalize %}
|
|
12
|
+
{%- assign group_heading = entry.head | default: dflt_head %}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
|
|
2
|
+
{%- assign changes_listed = "" | split: "," %}
|
|
3
|
+
{%- if section_type == "notes" %}
|
|
4
|
+
{%- assign allow_redundant = note_allow_redundant %}
|
|
5
|
+
{%- else %}
|
|
6
|
+
{%- assign allow_redundant = entry_allow_redundant %}
|
|
7
|
+
{%- endif %}
|
|
8
|
+
{%- if grouping1.size > 0 %}
|
|
9
|
+
{%- for group1 in grouping1 %}
|
|
10
|
+
{%- assign group = group1 %}
|
|
11
|
+
{%- assign group1_kind = group1 | split: ":" | first %}
|
|
12
|
+
{%- assign group1_slug = group1 | split: ":" | last %}
|
|
13
|
+
{%- assign grouping1_header_level = dflt_next_header_level | default: 3 %}
|
|
14
|
+
{%- embed groupby.liquid %}
|
|
15
|
+
{%- case section_type %}
|
|
16
|
+
{%- when "notes" %}
|
|
17
|
+
{%- assign group1_changes = sorted.by[group1_kind][group1_slug] | where_exp: "c", "c.note != nil" %}
|
|
18
|
+
{%- else %}
|
|
19
|
+
{%- assign group1_changes = sorted.by[group1_kind][group1_slug] %}
|
|
20
|
+
{%- endcase %}
|
|
21
|
+
{%- assign group1_heading = group_heading %}
|
|
22
|
+
{%- assign group1_heading_shown = false %}
|
|
23
|
+
{%- if grouping2.size > 0 %}
|
|
24
|
+
{%- assign grouping2_header_level = grouping1_header_level | plus: 1 %}
|
|
25
|
+
|
|
26
|
+
{%- for group2 in grouping2 %}
|
|
27
|
+
{%- assign group = group2 %}
|
|
28
|
+
{%- assign group2_kind = group2 | split: ":" | first %}
|
|
29
|
+
{%- assign group2_slug = group2 | split: ":" | last %}
|
|
30
|
+
{%- embed groupby.liquid %}
|
|
31
|
+
{%- assign group2_heading = group_heading %}
|
|
32
|
+
{%- assign group2_heading_shown = false %}
|
|
33
|
+
|
|
34
|
+
{%- for change in group1_changes %}
|
|
35
|
+
{%- if !allow_redundant and changes_listed contains change.chid %}
|
|
36
|
+
{%- continue %}
|
|
37
|
+
{%- endif %}
|
|
38
|
+
{%- assign note_trimmed = change.note | trim %}
|
|
39
|
+
{%- if section_type == "notes" and note_trimmed == "" %}
|
|
40
|
+
{%- continue %}
|
|
41
|
+
{%- endif %}
|
|
42
|
+
|
|
43
|
+
{%- assign match2 = false %}
|
|
44
|
+
|
|
45
|
+
{%- if group2_kind == "tag" and change.tags contains group2_slug %}
|
|
46
|
+
{%- assign match2 = true %}
|
|
47
|
+
{%- elsif group2_kind == "type" and change.type == group2_slug %}
|
|
48
|
+
{%- assign match2 = true %}
|
|
49
|
+
{%- elsif group2_kind == "part" and change.parts contains group2_slug %}
|
|
50
|
+
{%- assign match2 = true %}
|
|
51
|
+
{%- endif %}
|
|
52
|
+
|
|
53
|
+
{%- if match2 %}
|
|
54
|
+
{%- unless group1_heading_shown %}
|
|
55
|
+
{%- assign group1_heading_shown = true %}
|
|
56
|
+
{%- include header.liquid
|
|
57
|
+
format=format
|
|
58
|
+
level=grouping1_header_level
|
|
59
|
+
text=group1_heading %}
|
|
60
|
+
{%- endunless %}
|
|
61
|
+
{%- unless group2_heading_shown %}
|
|
62
|
+
{%- assign group2_heading_shown = true %}
|
|
63
|
+
{%- include header.liquid
|
|
64
|
+
format=format
|
|
65
|
+
level=grouping2_header_level
|
|
66
|
+
text= group2_heading %}
|
|
67
|
+
{%- endunless %}
|
|
68
|
+
{%- assign chid_arrayed = change.chid | split: "," %}
|
|
69
|
+
{%- assign changes_listed = changes_listed | concat: chid_arrayed | uniq %}
|
|
70
|
+
{%- embed item.liquid %}
|
|
71
|
+
{%- endif %}
|
|
72
|
+
{%- endfor %}
|
|
73
|
+
{%- endfor %}
|
|
74
|
+
{%- else %}
|
|
75
|
+
{%- for change in group1_changes %}
|
|
76
|
+
{%- if !allow_redundant and changes_listed contains change.chid %}
|
|
77
|
+
{%- continue %}
|
|
78
|
+
{%- endif %}
|
|
79
|
+
{%- embed groupby.liquid %}
|
|
80
|
+
{%- unless group1_heading_shown %}
|
|
81
|
+
{%- assign group1_heading_shown = true %}
|
|
82
|
+
{% include header.liquid
|
|
83
|
+
format=format
|
|
84
|
+
level=grouping1_header_level
|
|
85
|
+
text=group1_heading %}
|
|
86
|
+
{%- endunless %}
|
|
87
|
+
{%- assign chid_arrayed = change.chid | split: "," %}
|
|
88
|
+
{%- assign changes_listed = changes_listed | concat: chid_arrayed | uniq %}
|
|
89
|
+
{%- embed item.liquid %}
|
|
90
|
+
{%- endfor %}
|
|
91
|
+
{%- endif %}
|
|
92
|
+
{%- endfor %}
|
|
93
|
+
{%- else %}
|
|
94
|
+
{%- for change in changes %}
|
|
95
|
+
{%- embed item.liquid %}
|
|
96
|
+
{%- endfor %}
|
|
97
|
+
{%- endif %}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{%- assign sort = config.notes.sort | default: "type:group" %}
|
|
2
|
+
{%- assign groups = "" | split: "," %}
|
|
3
|
+
{%- assign grouping1 = "" | split: "," %}
|
|
4
|
+
{%- assign grouping2 = "" | split: "," %}
|
|
5
|
+
{%- assign sort_by = "type" %}
|
|
6
|
+
|
|
7
|
+
{%- for sorter in sort %}
|
|
8
|
+
{%- assign parts = sorter | split: ":" %}
|
|
9
|
+
{%- assign key = parts[0] %}
|
|
10
|
+
{%- assign mode = parts[1] | default: "label" %}
|
|
11
|
+
|
|
12
|
+
{%- if mode == "label" or mode == "none" %}
|
|
13
|
+
{%- assign sort_by = key %}
|
|
14
|
+
{%- continue %}
|
|
15
|
+
{%- endif %}
|
|
16
|
+
|
|
17
|
+
{%- case key %}
|
|
18
|
+
{%- when "type" %}
|
|
19
|
+
{%- assign list = config.notes.types | default: config.types %}
|
|
20
|
+
{%- when "part" %}
|
|
21
|
+
{%- assign list = config.notes.parts | default: config.parts %}
|
|
22
|
+
{%- when "tag" %}
|
|
23
|
+
{%- assign list = config.notes.tags | default: config.tags %}
|
|
24
|
+
{%- else %}
|
|
25
|
+
{%- assign list = key | split: "," %}
|
|
26
|
+
{%- endcase %}
|
|
27
|
+
|
|
28
|
+
{%- for entry in list %}
|
|
29
|
+
{%- assign item = entry %}
|
|
30
|
+
{%- if entry[0] %}
|
|
31
|
+
{%- assign name = entry[0] %}
|
|
32
|
+
{%- if name == 'label_prefix' %}
|
|
33
|
+
{%- continue %}
|
|
34
|
+
{%- endif %}
|
|
35
|
+
{%- else %}
|
|
36
|
+
{%- assign name = entry %}
|
|
37
|
+
{%- endif %}
|
|
38
|
+
|
|
39
|
+
{%- assign group_key = key | append: ":" | append: name %}
|
|
40
|
+
{%- assign group = group_key | split: "," %}
|
|
41
|
+
|
|
42
|
+
{%- if mode == "grouping1" %}
|
|
43
|
+
{%- assign grouping1 = grouping1 | concat: group %}
|
|
44
|
+
{%- elsif mode == "grouping2" %}
|
|
45
|
+
{%- assign grouping2 = grouping2 | concat: group %}
|
|
46
|
+
{%- elsif mode == "group" %}
|
|
47
|
+
{%- assign groups = groups | concat: group %}
|
|
48
|
+
{%- endif %}
|
|
49
|
+
{%- endfor %}
|
|
50
|
+
{%- endfor %}
|
|
51
|
+
|
|
52
|
+
{%- if grouping1.size > 0 %}
|
|
53
|
+
{%- assign grouping1 = grouping1 | concat: groups | uniq %}
|
|
54
|
+
{%- else %}
|
|
55
|
+
{%- assign grouping1 = groups %}
|
|
56
|
+
{%- endif %}
|
|
57
|
+
|
|
58
|
+
{%- if grouping2.size > 0 and grouping1 == empty %}
|
|
59
|
+
Improper grouping configuration: grouping2 requires grouping1.
|
|
60
|
+
{%- endif %}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{%- case format %}
|
|
2
|
+
{%- when "asciidoc" %}
|
|
3
|
+
{%- assign tplt_extn = "adoc" %}
|
|
4
|
+
{%- assign header_char = "=" %}
|
|
5
|
+
{%- assign show_frontmatter = config.modes.asciidoc_frontmatter %}
|
|
6
|
+
{%- assign format_frontmatter = config.history.asciidoc_frontmatter %}
|
|
7
|
+
{%- when "markdown" %}
|
|
8
|
+
{%- assign tplt_extn = "md" %}
|
|
9
|
+
{%- assign header_char = "#" %}
|
|
10
|
+
{%- assign show_frontmatter = config.modes.markdown_frontmatter %}
|
|
11
|
+
{%- assign format_frontmatter = config.history.markdown_frontmatter %}
|
|
12
|
+
{%- when "html" %}
|
|
13
|
+
{%- assign tplt_extn = "html" %}
|
|
14
|
+
{%- assign show_frontmatter = config.modes.html_frontmatter %}
|
|
15
|
+
{%- assign format_frontmatter = config.history.html_frontmatter %}
|
|
16
|
+
{%- endcase %}
|
|
17
|
+
{%- assign header_level = config.history.htag | replace: "h", "" | plus: 0 %}
|
|
18
|
+
{%- assign dflt_next_header_level = header_level | plus: 1 %}
|
|
19
|
+
{%- assign history_header = config.history.head %}
|
|
20
|
+
|
|
21
|
+
{%- if config.notes %}
|
|
22
|
+
{%- assign release_notes_spot = config.notes.spot | default: 2 %}
|
|
23
|
+
{%- endif %}
|
|
24
|
+
{%- if config.changelog %}
|
|
25
|
+
{%- assign changelog_spot = config.changelog.spot | default: 2 %}
|
|
26
|
+
{%- endif %}
|
|
27
|
+
|
|
28
|
+
{%- assign group_kinds_list = "tag,type,part" | split: "," %}
|
|
29
|
+
|
|
30
|
+
{%- if show_frontmatter %}
|
|
31
|
+
{{ format_frontmatter | render: vars -}}
|
|
32
|
+
{%- endif %}
|
|
33
|
+
|
|
34
|
+
{%- include header.liquid format=format level=header_level text=history_header %}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{%- assign text = include.text %}
|
|
2
|
+
{%- assign level = include.level %}
|
|
3
|
+
{%- assign format = include.format %}
|
|
4
|
+
{%- if format == "html" %}
|
|
5
|
+
<h{{ level }}>{{ text }}</h{{ level }}>
|
|
6
|
+
{%- else %}
|
|
7
|
+
{%- if format == "asciidoc" %}
|
|
8
|
+
{%- assign header_char = "=" %}
|
|
9
|
+
{%- else %}
|
|
10
|
+
{%- assign header_char = "#" %}
|
|
11
|
+
{%- endif %}
|
|
12
|
+
{%- capture header_chars %}
|
|
13
|
+
{%- for i in (1..level) %}{{ header_char }}{% endfor %}
|
|
14
|
+
{%- endcapture %}
|
|
15
|
+
{{ header_chars }} {{ text }}
|
|
16
|
+
|
|
17
|
+
{%- endif %}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
= Release History
|
|
2
|
+
{%- for release in var.releases %}
|
|
3
|
+
{%- assign config = var.config %}
|
|
4
|
+
{%- assign release = var.release %}
|
|
5
|
+
{%- assign changes = var.changes %}
|
|
6
|
+
{%- assign sorted = var.sorted -%}
|
|
7
|
+
{%- include release.adoc.liquid
|
|
8
|
+
release=release
|
|
9
|
+
config=config
|
|
10
|
+
level=2 %}
|
|
11
|
+
{%- endfor %}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{% raw %}
|
|
2
|
+
{%- if config.modes.wrapped != false -%}
|
|
3
|
+
<!DOCTYPE html>
|
|
4
|
+
<html lang="en">
|
|
5
|
+
<head>
|
|
6
|
+
<meta charset="UTF-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
+
<title>{{ config.history.head | default: "Release History" }}</title>
|
|
9
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
10
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
|
11
|
+
<style>
|
|
12
|
+
.release-section { margin-bottom: 3rem; }
|
|
13
|
+
.changelog-section, .notes-section { margin-bottom: 2.5rem; }
|
|
14
|
+
.release-note { margin-bottom: 1.5rem; }
|
|
15
|
+
.meta-icon { margin-right: 0.25rem; }
|
|
16
|
+
.meta-label { margin-right: 0.5rem; }
|
|
17
|
+
.change-entry { margin-bottom: 1rem; }
|
|
18
|
+
.change-metadata { font-size: 0.9rem; color: #6c757d; }
|
|
19
|
+
.note-link { margin-left: 0.5rem; }
|
|
20
|
+
.git-link, .issue-link { margin-left: 0.25rem; }
|
|
21
|
+
</style>
|
|
22
|
+
</head>
|
|
23
|
+
<body class="container py-4">
|
|
24
|
+
{%- endif -%}
|
|
25
|
+
|
|
26
|
+
{%- if config.modes.html_frontmatter -%}
|
|
27
|
+
{%- assign frontmatter = config.history.html_frontmatter | render: vars -%}
|
|
28
|
+
{%- if frontmatter and frontmatter != "" -%}
|
|
29
|
+
<!-- {{ frontmatter }} -->
|
|
30
|
+
{%- endif -%}
|
|
31
|
+
{%- endif -%}
|
|
32
|
+
|
|
33
|
+
<div class="release-history">
|
|
34
|
+
<h1 class="mb-4">{{ config.history.head | render: vars | default: "Release History" }}</h1>
|
|
35
|
+
|
|
36
|
+
{%- for release in var.releases %}
|
|
37
|
+
{%- assign config = var.config %}
|
|
38
|
+
{%- assign release = var.release %}
|
|
39
|
+
{%- assign changes = var.changes %}
|
|
40
|
+
{%- assign sorted = var.sorted -%}
|
|
41
|
+
{%- include release.html.liquid
|
|
42
|
+
release=release
|
|
43
|
+
config=config
|
|
44
|
+
level=2 %}
|
|
45
|
+
{%- endfor %}
|
|
46
|
+
</div>
|
|
47
|
+
|
|
48
|
+
{%- if config.modes.wrapped != false -%}
|
|
49
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
50
|
+
</body>
|
|
51
|
+
</html>
|
|
52
|
+
{%- endif -%}
|
|
53
|
+
|
|
54
|
+
{% endraw %}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Release History
|
|
2
|
+
|
|
3
|
+
{% for release in vars.releases -%}
|
|
4
|
+
{% assign config = vars.config -%}
|
|
5
|
+
{% assign release = vars.release -%}
|
|
6
|
+
{% assign changes = vars.changes -%}
|
|
7
|
+
{% assign sorted = vars.sorted -%}
|
|
8
|
+
{% include release.md.liquid
|
|
9
|
+
release=release
|
|
10
|
+
changes=changes
|
|
11
|
+
sorted=sorted
|
|
12
|
+
format=config.conversions.markup
|
|
13
|
+
config=config
|
|
14
|
+
level=2 -%}
|
|
15
|
+
{% endfor %}
|
|
16
|
+
|