releasehx 0.1.0 → 0.1.2
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 +4 -2
- data/build/docs/_config.yml +17 -1
- data/build/docs/_release_index.adoc +9 -0
- data/build/docs/config-reference.adoc +6 -6
- data/build/docs/config-reference.json +4 -3
- data/build/docs/index.adoc +3 -2
- data/build/docs/landing.adoc +10 -3
- data/build/docs/releases.adoc +28 -0
- data/build/docs/sample-config.adoc +2 -0
- data/build/docs/sample-config.yml +2 -2
- data/lib/releasehx/cli.rb +16 -7
- data/lib/releasehx/generated.rb +1 -1
- data/lib/releasehx/mcp/assets/config-def.yml +4 -2
- data/lib/releasehx/mcp/assets/config-reference.adoc +6 -6
- data/lib/releasehx/mcp/assets/config-reference.json +4 -3
- data/lib/releasehx/mcp/assets/sample-config.yml +2 -2
- data/lib/releasehx/rhyml/adapter.rb +13 -6
- data/lib/releasehx/rhyml/mappings/github.yaml +3 -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 +22 -0
- data/lib/releasehx/rhyml/templates/entry.html.liquid +38 -0
- data/lib/releasehx/rhyml/templates/entry.md.liquid +24 -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 +45 -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 +45 -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 +14 -0
- data/lib/releasehx/rhyml/templates/note.html.liquid +25 -0
- data/lib/releasehx/rhyml/templates/note.md.liquid +33 -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 +40 -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
- data/lib/schemagraphy/regexp_utils.rb +21 -1
- data/specs/data/config-def.yml +4 -2
- metadata +42 -2
- data/build/docs/Gemfile.lock +0 -95
|
@@ -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,22 @@
|
|
|
1
|
+
{%- assign frame = content_config.items.frame %}
|
|
2
|
+
{%- assign summ = change.summ %}
|
|
3
|
+
{%- case frame %}
|
|
4
|
+
{%- when "unordered" %}
|
|
5
|
+
{%- assign bullet = "* " %}
|
|
6
|
+
{%- when "ordered" %}
|
|
7
|
+
{%- assign bullet = ". " %}
|
|
8
|
+
{%- else %}
|
|
9
|
+
{%- assign bullet = "" %}
|
|
10
|
+
{%- endcase %}
|
|
11
|
+
|
|
12
|
+
{% unless changes_listed contains change.chid -%}
|
|
13
|
+
[[entry-{{ change.chid }}]]
|
|
14
|
+
{%- endunless %}
|
|
15
|
+
{%- if frame == "ordered" %}
|
|
16
|
+
[start={{ item_count }}]
|
|
17
|
+
{%- endif %}
|
|
18
|
+
{{ bullet -}}
|
|
19
|
+
{{ change.summ | trim }}
|
|
20
|
+
{%- if change.note %} +
|
|
21
|
+
xref:note-{{ change.chid }}[NOTE]
|
|
22
|
+
{%- 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,24 @@
|
|
|
1
|
+
{%- assign frame = content_config.items.frame | default: "unordered" %}
|
|
2
|
+
{%- assign summ = change.summ %}
|
|
3
|
+
{%- case frame %}
|
|
4
|
+
{%- when "unordered" %}
|
|
5
|
+
{%- assign bullet = "- " %}
|
|
6
|
+
{%- when "ordered" %}
|
|
7
|
+
{%- assign bullet = "1. " %}
|
|
8
|
+
{%- when "basic" %}
|
|
9
|
+
{%- assign bullet = "- " %}
|
|
10
|
+
{%- else %}
|
|
11
|
+
{%- assign bullet = "" %}
|
|
12
|
+
{%- endcase %}
|
|
13
|
+
|
|
14
|
+
{%- if frame == "basic" %}
|
|
15
|
+
|
|
16
|
+
{{ bullet }}{{ change.summ | trim }}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
17
|
+
{%- elsif frame == "paragraph" %}
|
|
18
|
+
|
|
19
|
+
{{ change.summ | trim }}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
20
|
+
{%- else %}
|
|
21
|
+
|
|
22
|
+
{{ bullet }}{{ change.summ | trim }}{% if change.note and change.note != "" %} [NOTE](#note-{{ change.chid }}){% endif %}
|
|
23
|
+
{%- endif %}
|
|
24
|
+
|
|
@@ -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
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{%- assign metadata_kinds = "" | split: "," %}
|
|
2
|
+
{%- assign group1_kind = group1_kind | default: "" %}
|
|
3
|
+
{%- assign group2_kind = group2_kind | default: "" %}
|
|
4
|
+
{%- if group1_kind != "type" and group2_kind != "type" and config.types %}
|
|
5
|
+
{%- assign metadata_kind = "type" | split: "," %}
|
|
6
|
+
{%- assign metadata_kinds = metadata_kinds | concat: metadata_kind %}
|
|
7
|
+
{%- endif %}
|
|
8
|
+
{%- if group1_kind != "part" and group2_kind != "part" %}
|
|
9
|
+
{%- assign metadata_kind = "part" | split: "," %}
|
|
10
|
+
{%- assign metadata_kinds = metadata_kinds | concat: metadata_kind %}
|
|
11
|
+
{%- endif %}
|
|
12
|
+
{%- if group1_kind != "tag" and group2_kind != "tag" %}
|
|
13
|
+
{%- assign metadata_kind = "tag" | split: "," %}
|
|
14
|
+
{%- assign metadata_kinds = metadata_kinds | concat: metadata_kind %}
|
|
15
|
+
{%- endif %}
|
|
16
|
+
|
|
17
|
+
{%- if format == "asciidoc" %}
|
|
18
|
+
{%- if section_type == "notes" %}
|
|
19
|
+
{%- embed note.adoc.liquid %}
|
|
20
|
+
{%- else %}
|
|
21
|
+
{%- embed entry.adoc.liquid %}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
{%- elsif format == "markdown" %}
|
|
24
|
+
{%- if section_type == "notes" %}
|
|
25
|
+
{%- embed note.md.liquid %}
|
|
26
|
+
{%- else %}
|
|
27
|
+
{%- embed entry.md.liquid %}
|
|
28
|
+
{%- endif -%}
|
|
29
|
+
{%- elsif format == "html" %}
|
|
30
|
+
{%- if section_type == "notes" %}
|
|
31
|
+
{%- embed note.html.liquid %}
|
|
32
|
+
{%- else %}
|
|
33
|
+
{%- embed entry.html.liquid %}
|
|
34
|
+
{%- endif -%}
|
|
35
|
+
{%- endif %}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{%- assign show_labels = entry_metadata_labels %}
|
|
2
|
+
{%- assign show_icons = entry_metadata_icons %}
|
|
3
|
+
{%- assign metadata_kinds = 'type,part' | split: ',' %}
|
|
4
|
+
{%- assign format = "asciidoc" %}
|
|
5
|
+
{%- embed tags-listing.liquid %}
|
|
6
|
+
{%- embed parts-listing.liquid %}
|
|
7
|
+
{%- capture change_metadata -%}
|
|
8
|
+
{%- if parts_listing != "" and entry_show_parts_label -%}
|
|
9
|
+
{{ parts_listing | trim }} {% endif -%}
|
|
10
|
+
{%- if change.parts and change.parts.size > 0 and entry_show_parts_label == false -%}
|
|
11
|
+
{%- for part in change.parts -%}
|
|
12
|
+
{%- unless part == "changelog" or part == "release_note_needed" -%}
|
|
13
|
+
{{ config.parts[part]['text'] | default: part }} {% endunless -%}
|
|
14
|
+
{%- endfor -%}
|
|
15
|
+
{%- endif -%}
|
|
16
|
+
{%- if change.type -%}
|
|
17
|
+
{%- assign type_config = config.types[change.type] -%}
|
|
18
|
+
{%- if entry_show_type_label -%}
|
|
19
|
+
**{{ labeling_type_label }}:** {% endif -%}
|
|
20
|
+
{%- if type_config.icon and show_icons and show_icons == "before" -%}
|
|
21
|
+
icon:{{ type_config.icon | default: 'tag' }}[role=meta-icon]{% endif -%}
|
|
22
|
+
{{ type_config.text | default: change.type }} {% if type_config.icon and show_icons and show_icons == "after" -%}
|
|
23
|
+
icon:{{ type_config.icon | default: 'tag' }}[role=meta-icon]{% endif -%}
|
|
24
|
+
{%- endif -%}
|
|
25
|
+
{%- if tags_listing != "" and entry_show_tags_label -%}
|
|
26
|
+
{{ tags_listing | trim }} {% endif -%}
|
|
27
|
+
{%- if change.tags and change.tags.size > 0 and entry_show_tags_label == false -%}
|
|
28
|
+
{%- for tag in change.tags -%}
|
|
29
|
+
{%- unless tag == "changelog" or tag == "release_note_needed" -%}
|
|
30
|
+
{{ config.tags[tag]['text'] | default: tag }} {% endunless -%}
|
|
31
|
+
{%- endfor -%}
|
|
32
|
+
{%- endif -%}
|
|
33
|
+
{%- if entry_show_lead and change.lead -%}
|
|
34
|
+
{%- if entry_show_lead_label -%}
|
|
35
|
+
**{{ labeling_lead_label }}:** {% endif -%}
|
|
36
|
+
{%- if entry_user_link_template -%}
|
|
37
|
+
link:{{ entry_user_link_template | render: change }}[icon:user[]{{ change.lead }}] {% else -%}
|
|
38
|
+
icon:user[]{{ change.lead }} {% endif -%}
|
|
39
|
+
{%- endif -%}
|
|
40
|
+
{%- if config.links.web.href and config.links.web.href != "" -%}
|
|
41
|
+
link:{{ config.links.web.href | render: change }}[icon:{{ config.links.web.icon }}[]{{ config.links.web.text | render: change }}] {% endif -%}
|
|
42
|
+
{%- if entry_show_git_links and config.links.git.href and config.links.git.href != "" -%}
|
|
43
|
+
link:{{ config.links.git.href | render: change }}[icon:{{ config.links.git.icon | default: 'code-fork' }}[]{{ change.hash | slice: 0, 7 }}] {% endif -%}
|
|
44
|
+
{%- endcapture %}
|
|
45
|
+
{%- assign catch_metadata_error = change_metadata %}
|