releasehx 0.1.2 → 0.2.0
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 +363 -330
- data/build/docs/_config.yml +1 -0
- data/build/docs/_release_index.adoc +3 -2
- data/build/docs/config-reference.adoc +197 -10
- data/build/docs/config-reference.json +56 -7
- data/build/docs/index.adoc +315 -59
- data/build/docs/landing.adoc +1 -1
- data/build/docs/manpage.adoc +2 -2
- data/build/docs/release-procedure.adoc +365 -0
- data/build/docs/release-procedure.html +87 -0
- data/build/docs/releasehx.1 +17 -5
- data/build/docs/sample-config.yml +14 -7
- data/lib/releasehx/cli.rb +5 -2
- data/lib/releasehx/configuration.rb +0 -1
- data/lib/releasehx/generated.rb +1 -1
- data/lib/releasehx/mcp/assets/agent-config-guide.md +1 -1
- data/lib/releasehx/mcp/assets/config-def.yml +122 -6
- data/lib/releasehx/mcp/assets/config-reference.adoc +197 -10
- data/lib/releasehx/mcp/assets/config-reference.json +56 -7
- data/lib/releasehx/mcp/assets/sample-config.yml +14 -7
- data/lib/releasehx/mcp/server.rb +0 -1
- data/lib/releasehx/ops/enrich_ops.rb +161 -55
- data/lib/releasehx/ops/template_ops.rb +1 -1
- data/lib/releasehx/rhyml/adapter.rb +0 -3
- data/lib/releasehx/rhyml/templates/bootstrap-overrides.css +15 -0
- data/lib/releasehx/rhyml/templates/changelog.adoc.liquid +2 -0
- data/lib/releasehx/rhyml/templates/changelog.html.liquid +6 -4
- data/lib/releasehx/rhyml/templates/changelog.md.liquid +1 -0
- data/lib/releasehx/rhyml/templates/embedded.css.liquid +263 -0
- data/lib/releasehx/rhyml/templates/entry.adoc.liquid +1 -0
- data/lib/releasehx/rhyml/templates/entry.html.liquid +21 -20
- data/lib/releasehx/rhyml/templates/entry.md.liquid +15 -21
- data/lib/releasehx/rhyml/templates/head-parser.liquid +6 -2
- data/lib/releasehx/rhyml/templates/header.liquid +13 -4
- data/lib/releasehx/rhyml/templates/history.html.liquid +152 -33
- data/lib/releasehx/rhyml/templates/metadata-entry.adoc.liquid +83 -38
- data/lib/releasehx/rhyml/templates/metadata-entry.html.liquid +60 -1
- data/lib/releasehx/rhyml/templates/metadata-entry.md.liquid +65 -113
- data/lib/releasehx/rhyml/templates/metadata-note.adoc.liquid +83 -38
- data/lib/releasehx/rhyml/templates/metadata-note.html.liquid +59 -22
- data/lib/releasehx/rhyml/templates/metadata-note.md.liquid +68 -23
- data/lib/releasehx/rhyml/templates/note.html.liquid +25 -19
- data/lib/releasehx/rhyml/templates/note.md.liquid +44 -26
- data/lib/releasehx/rhyml/templates/release-notes.adoc.liquid +2 -0
- data/lib/releasehx/rhyml/templates/release-notes.html.liquid +6 -4
- data/lib/releasehx/rhyml/templates/release-notes.md.liquid +1 -0
- data/lib/releasehx/rhyml/templates/release.adoc.liquid +2 -0
- data/lib/releasehx/rhyml/templates/release.md.liquid +8 -7
- data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +36 -36
- data/lib/releasehx/rhyml/templates/wrapper.html.liquid +103 -0
- data/lib/releasehx/sgyml/helpers.rb +0 -2
- data/lib/releasehx/transforms/adf_to_markdown.rb +1 -1
- data/lib/releasehx/version.rb +0 -2
- data/lib/releasehx.rb +2 -2
- data/specs/data/config-def.yml +122 -6
- metadata +48 -25
- data/build/docs/schemagraphy_readme.html +0 -0
- data/build/docs/sourcerer_readme.html +0 -46
- data/lib/schemagraphy/attribute_resolver.rb +0 -48
- data/lib/schemagraphy/cfgyml/definition.rb +0 -90
- data/lib/schemagraphy/cfgyml/doc_builder.rb +0 -52
- data/lib/schemagraphy/cfgyml/path_reference.rb +0 -24
- data/lib/schemagraphy/data_query/json_pointer.rb +0 -42
- data/lib/schemagraphy/loader.rb +0 -59
- data/lib/schemagraphy/regexp_utils.rb +0 -235
- data/lib/schemagraphy/safe_expression.rb +0 -189
- data/lib/schemagraphy/schema_utils.rb +0 -124
- data/lib/schemagraphy/tag_utils.rb +0 -32
- data/lib/schemagraphy/templating.rb +0 -104
- data/lib/schemagraphy.rb +0 -17
- data/lib/sourcerer/builder.rb +0 -120
- data/lib/sourcerer/jekyll/bootstrapper.rb +0 -78
- data/lib/sourcerer/jekyll/liquid/file_system.rb +0 -74
- data/lib/sourcerer/jekyll/liquid/filters.rb +0 -215
- data/lib/sourcerer/jekyll/liquid/tags.rb +0 -44
- data/lib/sourcerer/jekyll/monkeypatches.rb +0 -73
- data/lib/sourcerer/jekyll.rb +0 -26
- data/lib/sourcerer/plaintext_converter.rb +0 -75
- data/lib/sourcerer/templating.rb +0 -190
- data/lib/sourcerer.rb +0 -322
|
@@ -1,130 +1,82 @@
|
|
|
1
|
-
{%-
|
|
1
|
+
{%- comment -%} Build inline metadata array with minimal HTML badges {%- endcomment -%}
|
|
2
|
+
{%- assign metadata_items = "" | split: "," -%}
|
|
2
3
|
|
|
3
|
-
{%- comment -%}
|
|
4
|
-
{%- if
|
|
5
|
-
{%- assign
|
|
6
|
-
{%- if
|
|
7
|
-
{%- assign
|
|
4
|
+
{%- comment -%} Type badge {%- endcomment -%}
|
|
5
|
+
{%- if metadata_kinds contains "type" and change.type -%}
|
|
6
|
+
{%- assign type_config = config.types[change.type] -%}
|
|
7
|
+
{%- if type_config -%}
|
|
8
|
+
{%- assign type_text = type_config.text | default: change.type -%}
|
|
9
|
+
{%- assign type_slug = change.type | sluggerize: slug_type -%}
|
|
10
|
+
{%- capture type_badge -%}<span class="badge type-badge type-{{ type_slug }}">{{ type_text }}</span>{%- endcapture -%}
|
|
11
|
+
{%- assign metadata_items = metadata_items | push: type_badge -%}
|
|
8
12
|
{%- endif -%}
|
|
9
|
-
{%- assign ticket_part = ticket_link | split: "," -%}
|
|
10
|
-
{%- assign metadata_parts = metadata_parts | concat: ticket_part -%}
|
|
11
13
|
{%- endif -%}
|
|
12
14
|
|
|
13
|
-
{%-
|
|
14
|
-
{%-
|
|
15
|
-
{%-
|
|
16
|
-
{%-
|
|
17
|
-
{%-
|
|
18
|
-
{%-
|
|
19
|
-
{%-
|
|
20
|
-
{%-
|
|
21
|
-
{%-
|
|
22
|
-
{%-
|
|
23
|
-
{%-
|
|
24
|
-
{%-
|
|
25
|
-
{%-
|
|
26
|
-
{%-
|
|
27
|
-
{%-
|
|
28
|
-
{%-
|
|
29
|
-
{%-
|
|
30
|
-
{%- elsif config.parts[part] == nil -%}
|
|
31
|
-
{%- assign skip_part = true -%}
|
|
32
|
-
{%- endif -%}
|
|
33
|
-
{%- unless skip_part -%}
|
|
34
|
-
{%- assign part_config = config.parts[part] -%}
|
|
35
|
-
{%- assign part_text = part_config.text | default: part -%}
|
|
36
|
-
{%- assign bold_part = "**" | append: part_text | append: "**" -%}
|
|
37
|
-
{%- assign bold_part_array = bold_part | split: "," -%}
|
|
38
|
-
{%- assign parts_formatted = parts_formatted | concat: bold_part_array -%}
|
|
39
|
-
{%- assign parts_count = parts_count | plus: 1 -%}
|
|
40
|
-
{%- endunless -%}
|
|
41
|
-
{%- endfor -%}
|
|
42
|
-
{%- if parts_count > 0 -%}
|
|
43
|
-
{%- assign parts_joined = parts_formatted | join: labeling_join_string -%}
|
|
44
|
-
{%- if entry_show_parts_label -%}
|
|
45
|
-
{%- if labeling_singularize_labels and parts_count == 1 -%}
|
|
46
|
-
{%- assign parts_text = labeling_part_label | append: ": " | append: parts_joined -%}
|
|
47
|
-
{%- else -%}
|
|
48
|
-
{%- assign parts_text = labeling_parts_label | append: ": " | append: parts_joined -%}
|
|
15
|
+
{%- comment -%} Parts/components {%- endcomment -%}
|
|
16
|
+
{%- if metadata_kinds contains "part" -%}
|
|
17
|
+
{%- assign effective_parts = "" | split: "," -%}
|
|
18
|
+
{%- if change.parts and change.parts.size > 0 -%}
|
|
19
|
+
{%- assign effective_parts = change.parts -%}
|
|
20
|
+
{%- elsif change.part -%}
|
|
21
|
+
{%- assign effective_parts = change.part | split: "," -%}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
{%- if effective_parts.size > 0 -%}
|
|
24
|
+
{%- for part in effective_parts -%}
|
|
25
|
+
{%- assign skip_part = false -%}
|
|
26
|
+
{%- if part == "changelog" or part == "release_note_needed" -%}
|
|
27
|
+
{%- assign skip_part = true -%}
|
|
28
|
+
{%- elsif part == group1_slug or part == group2_slug -%}
|
|
29
|
+
{%- assign skip_part = true -%}
|
|
30
|
+
{%- elsif config.parts[part] == nil -%}
|
|
31
|
+
{%- assign skip_part = true -%}
|
|
49
32
|
{%- endif -%}
|
|
50
|
-
{%-
|
|
51
|
-
{%-
|
|
52
|
-
{%-
|
|
53
|
-
{%-
|
|
54
|
-
{%-
|
|
33
|
+
{%- unless skip_part -%}
|
|
34
|
+
{%- assign part_config = config.parts[part] -%}
|
|
35
|
+
{%- assign part_text = part_config.text | default: part -%}
|
|
36
|
+
{%- assign part_slug = part | sluggerize: slug_type -%}
|
|
37
|
+
{%- capture part_badge -%}<span class="badge part-badge part-{{ part_slug }}">{{ part_text }}</span>{%- endcapture -%}
|
|
38
|
+
{%- assign metadata_items = metadata_items | push: part_badge -%}
|
|
39
|
+
{%- endunless -%}
|
|
40
|
+
{%- endfor -%}
|
|
55
41
|
{%- endif -%}
|
|
56
42
|
{%- endif -%}
|
|
57
|
-
{%- endif -%}
|
|
58
43
|
|
|
59
|
-
{%-
|
|
60
|
-
{%-
|
|
61
|
-
{%-
|
|
62
|
-
{%-
|
|
63
|
-
{%-
|
|
44
|
+
{%- comment -%} Tags {%- endcomment -%}
|
|
45
|
+
{%- if metadata_kinds contains "tag" and change.tags and change.tags.size > 0 -%}
|
|
46
|
+
{%- for tag in change.tags -%}
|
|
47
|
+
{%- assign tag_slug = tag | sluggerize: slug_type -%}
|
|
48
|
+
{%- capture tag_badge -%}<span class="badge tag-badge tag-{{ tag_slug }}">{{ tag }}</span>{%- endcapture -%}
|
|
49
|
+
{%- assign metadata_items = metadata_items | push: tag_badge -%}
|
|
50
|
+
{%- endfor -%}
|
|
64
51
|
{%- endif -%}
|
|
65
|
-
|
|
66
|
-
{%-
|
|
67
|
-
{%-
|
|
68
|
-
{%-
|
|
52
|
+
|
|
53
|
+
{%- comment -%} Lead/user {%- endcomment -%}
|
|
54
|
+
{%- if metadata_kinds contains "lead" and change.lead -%}
|
|
55
|
+
{%- if entry_show_lead_links and config.links.user.href -%}
|
|
56
|
+
{%- capture lead_link -%}[@{{ change.lead }}]({{ config.links.user.href | replace: '{{user}}', change.lead }}){%- endcapture -%}
|
|
57
|
+
{%- assign metadata_items = metadata_items | push: lead_link -%}
|
|
69
58
|
{%- else -%}
|
|
70
|
-
{%-
|
|
59
|
+
{%- capture lead_text -%}@{{ change.lead }}{%- endcapture -%}
|
|
60
|
+
{%- assign metadata_items = metadata_items | push: lead_text -%}
|
|
71
61
|
{%- endif -%}
|
|
72
|
-
{%- assign type_part = type_text | split: "," -%}
|
|
73
|
-
{%- assign metadata_parts = metadata_parts | concat: type_part -%}
|
|
74
|
-
{%- endif -%}
|
|
75
62
|
{%- endif -%}
|
|
76
63
|
|
|
77
|
-
{%-
|
|
78
|
-
{%-
|
|
79
|
-
{%-
|
|
80
|
-
{%-
|
|
81
|
-
{%- assign
|
|
82
|
-
{%- for tag in change.tags -%}
|
|
83
|
-
{%- assign skip_tag = false -%}
|
|
84
|
-
{%- if tag == "changelog" or tag == "release_note_needed" -%}
|
|
85
|
-
{%- assign skip_tag = true -%}
|
|
86
|
-
{%- elsif tag == group1_slug or tag == group2_slug -%}
|
|
87
|
-
{%- assign skip_tag = true -%}
|
|
88
|
-
{%- elsif config.tags[tag] == nil -%}
|
|
89
|
-
{%- assign skip_tag = true -%}
|
|
90
|
-
{%- endif -%}
|
|
91
|
-
{%- unless skip_tag -%}
|
|
92
|
-
{%- assign tag_text_array = tag | split: "," -%}
|
|
93
|
-
{%- assign tags_formatted = tags_formatted | concat: tag_text_array -%}
|
|
94
|
-
{%- assign tags_count = tags_count | plus: 1 -%}
|
|
95
|
-
{%- endunless -%}
|
|
96
|
-
{%- endfor -%}
|
|
97
|
-
{%- if tags_count > 0 -%}
|
|
98
|
-
{%- if entry_show_tags_label -%}
|
|
99
|
-
{%- if labeling_singularize_labels and tags_count == 1 -%}
|
|
100
|
-
{%- assign tags_text = labeling_tag_label | append: ": " | append: tags_formatted | join: labeling_join_string -%}
|
|
101
|
-
{%- else -%}
|
|
102
|
-
{%- assign tags_text = labeling_tags_label | append: ": " | append: tags_formatted | join: labeling_join_string -%}
|
|
103
|
-
{%- endif -%}
|
|
104
|
-
{%- else -%}
|
|
105
|
-
{%- assign tags_text = tags_formatted | join: labeling_join_string -%}
|
|
106
|
-
{%- endif -%}
|
|
107
|
-
{%- assign tags_part = tags_text | split: "," -%}
|
|
108
|
-
{%- assign metadata_parts = metadata_parts | concat: tags_part -%}
|
|
109
|
-
{%- endif -%}
|
|
110
|
-
{%- endif -%}
|
|
64
|
+
{%- comment -%} Issue/ticket link {%- endcomment -%}
|
|
65
|
+
{%- if entry_show_issue_links and change.tick and config.links.web.href and config.links.web.href != "" -%}
|
|
66
|
+
{%- assign ticket_link_text = config.links.web.text | render: change -%}
|
|
67
|
+
{%- capture ticket_link -%}[{{ ticket_link_text }}]({{ config.links.web.href | render: change }}){%- endcapture -%}
|
|
68
|
+
{%- assign metadata_items = metadata_items | push: ticket_link -%}
|
|
111
69
|
{%- endif -%}
|
|
112
70
|
|
|
113
|
-
{%- comment -%}
|
|
114
|
-
{%- if
|
|
115
|
-
{%-
|
|
116
|
-
{%-
|
|
117
|
-
{%- else -%}
|
|
118
|
-
{%- assign lead_prefix = "" -%}
|
|
119
|
-
{%- endif -%}
|
|
120
|
-
{%- if entry_user_link_template -%}
|
|
121
|
-
{%- assign lead_text = lead_prefix | append: "[" | append: change.lead | append: "](" | append: entry_user_link_template | render: change | append: ")" -%}
|
|
122
|
-
{%- else -%}
|
|
123
|
-
{%- assign lead_text = lead_prefix | append: change.lead -%}
|
|
124
|
-
{%- endif -%}
|
|
125
|
-
{%- assign lead_part = lead_text | split: "," -%}
|
|
126
|
-
{%- assign metadata_parts = metadata_parts | concat: lead_part -%}
|
|
71
|
+
{%- comment -%} Git commit link {%- endcomment -%}
|
|
72
|
+
{%- if metadata_kinds contains "git" and change.ghsh and config.links.git.href -%}
|
|
73
|
+
{%- capture git_link -%}[`{{ change.ghsh | slice: 0, 7 }}`]({{ config.links.git.href | render: change }}){%- endcapture -%}
|
|
74
|
+
{%- assign metadata_items = metadata_items | push: git_link -%}
|
|
127
75
|
{%- endif -%}
|
|
128
76
|
|
|
129
|
-
{%- comment -%}
|
|
130
|
-
{%-
|
|
77
|
+
{%- comment -%} Join metadata inline {%- endcomment -%}
|
|
78
|
+
{%- if metadata_items.size > 0 -%}
|
|
79
|
+
{%- assign change_metadata = metadata_items | join: " " -%}
|
|
80
|
+
{%- else -%}
|
|
81
|
+
{%- assign change_metadata = "" -%}
|
|
82
|
+
{%- endif -%}
|
|
@@ -1,45 +1,90 @@
|
|
|
1
1
|
{%- assign show_labels = note_metadata_labels %}
|
|
2
2
|
{%- assign show_icons = note_metadata_icons %}
|
|
3
3
|
{%- assign metadata_kinds = 'type,part' | split: ',' %}
|
|
4
|
-
{%- assign format =
|
|
4
|
+
{%- assign format = 'asciidoc' %}
|
|
5
|
+
{%- assign metadata_items = '' | split: ',' %}
|
|
5
6
|
{%- embed tags-listing.liquid %}
|
|
6
7
|
{%- embed parts-listing.liquid %}
|
|
7
|
-
|
|
8
|
-
{%-
|
|
9
|
-
|
|
10
|
-
{%-
|
|
11
|
-
{%-
|
|
12
|
-
{%-
|
|
13
|
-
{
|
|
14
|
-
{%-
|
|
15
|
-
{%-
|
|
16
|
-
{%-
|
|
17
|
-
{%-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
{%-
|
|
25
|
-
{%-
|
|
26
|
-
{
|
|
27
|
-
|
|
28
|
-
{%-
|
|
29
|
-
{%-
|
|
30
|
-
{
|
|
31
|
-
{%-
|
|
32
|
-
{%-
|
|
33
|
-
{%-
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
{%- if note_user_link_template -%}
|
|
37
|
-
link:{{ note_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 note_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 -%}
|
|
8
|
+
|
|
9
|
+
{%- comment %}Build inline metadata array for compact formatting{%- endcomment %}
|
|
10
|
+
|
|
11
|
+
{%- comment %}Add parts/components{%- endcomment %}
|
|
12
|
+
{%- if parts_listing != '' and note_show_parts_label %}
|
|
13
|
+
{%- assign metadata_items = metadata_items | push: parts_listing %}
|
|
14
|
+
{%- elsif change.parts and change.parts.size > 0 and note_show_parts_label == false %}
|
|
15
|
+
{%- for part in change.parts %}
|
|
16
|
+
{%- unless part == 'changelog' or part == 'release_note_needed' %}
|
|
17
|
+
{%- assign part_text = config.parts[part].text | default: part %}
|
|
18
|
+
{%- assign part_badge = '[.badge.part-badge.part-'
|
|
19
|
+
| append: part
|
|
20
|
+
| append: ']#'
|
|
21
|
+
| append: part_text
|
|
22
|
+
| append: '#'
|
|
23
|
+
%}
|
|
24
|
+
{%- assign metadata_items = metadata_items | push: part_badge %}
|
|
25
|
+
{%- endunless %}
|
|
26
|
+
{%- endfor %}
|
|
27
|
+
{%- endif %}
|
|
28
|
+
|
|
29
|
+
{%- comment %}Add type{%- endcomment %}
|
|
30
|
+
{%- if change.type %}
|
|
31
|
+
{%- assign type_config = config.types[change.type] %}
|
|
32
|
+
{%- capture type_item %}
|
|
33
|
+
{%- if note_show_type_label %}[.meta-label.type-label]*{{ labeling_type_label }}:* {% endif -%}
|
|
34
|
+
{%- if type_config.icon and show_icons and show_icons == "before" %}icon:{{ type_config.icon | default: 'tag' }}[role=meta-icon,role=type-icon] {% endif -%}
|
|
35
|
+
[.badge.type-badge.type-{{ change.type }}]#{{ type_config.text | default: change.type }}#
|
|
36
|
+
{%- if type_config.icon and show_icons and show_icons == "after" %} icon:{{ type_config.icon | default: 'tag' }}[role=meta-icon,role=type-icon]{% endif -%}
|
|
44
37
|
{%- endcapture %}
|
|
38
|
+
{%- assign metadata_items = metadata_items | push: type_item %}
|
|
39
|
+
{%- endif %}
|
|
40
|
+
|
|
41
|
+
{%- comment %}Add tags{%- endcomment %}
|
|
42
|
+
{%- if tags_listing != '' and note_show_tags_label %}
|
|
43
|
+
{%- assign metadata_items = metadata_items | push: tags_listing %}
|
|
44
|
+
{%- elsif change.tags and change.tags.size > 0 and note_show_tags_label == false %}
|
|
45
|
+
{%- for tag in change.tags %}
|
|
46
|
+
{%- unless tag == 'changelog' or tag == 'release_note_needed' %}
|
|
47
|
+
{%- assign tag_text = config.tags[tag].text | default: tag %}
|
|
48
|
+
{%- assign tag_badge = '[.badge.tag-badge.tag-' | append: tag | append: ']#' | append: tag_text | append: '#' %}
|
|
49
|
+
{%- assign metadata_items = metadata_items | push: tag_badge %}
|
|
50
|
+
{%- endunless %}
|
|
51
|
+
{%- endfor %}
|
|
52
|
+
{%- endif %}
|
|
53
|
+
|
|
54
|
+
{%- comment %}Add lead/assignee{%- endcomment %}
|
|
55
|
+
{%- if note_show_lead and change.lead %}
|
|
56
|
+
{%- capture lead_item %}
|
|
57
|
+
{%- if note_show_lead_label %}[.meta-label.lead-label]*{{ labeling_lead_label }}:* {% endif -%}
|
|
58
|
+
{%- if note_user_link_template -%}
|
|
59
|
+
link:{{ note_user_link_template | render: change }}[icon:user[role=user-icon]{{ change.lead }},role=user-link]
|
|
60
|
+
{%- else -%}
|
|
61
|
+
icon:user[role=user-icon]{{ change.lead }}
|
|
62
|
+
{%- endif -%}
|
|
63
|
+
{%- endcapture %}
|
|
64
|
+
{%- assign metadata_items = metadata_items | push: lead_item %}
|
|
65
|
+
{%- endif %}
|
|
66
|
+
|
|
67
|
+
{%- comment %}Add ticket/issue link{%- endcomment %}
|
|
68
|
+
{%- if config.links.web.href and config.links.web.href != '' %}
|
|
69
|
+
{%- capture ticket_link %}link:{{ config.links.web.href | render: change }}[icon:{{ config.links.web.icon }}[role=ticket-icon]{{ config.links.web.text | render: change }},role=ticket-link]{% endcapture %}
|
|
70
|
+
{%- assign metadata_items = metadata_items | push: ticket_link %}
|
|
71
|
+
{%- endif %}
|
|
72
|
+
|
|
73
|
+
{%- comment %}Add git commit link{%- endcomment %}
|
|
74
|
+
{%- if note_show_git_links and config.links.git.href and config.links.git.href != '' %}
|
|
75
|
+
{%- capture git_link %}link:{{ config.links.git.href | render: change }}[icon:{{ config.links.git.icon | default: 'code-fork' }}[role=git-icon]{{ change.hash | slice: 0, 7 }},role=git-link]{% endcapture %}
|
|
76
|
+
{%- assign metadata_items = metadata_items | push: git_link %}
|
|
77
|
+
{%- endif %}
|
|
78
|
+
|
|
79
|
+
{%- comment %}Add docs link{%- endcomment %}
|
|
80
|
+
{%- if config.links.docs and config.links.docs.href and config.links.docs.href != '' %}
|
|
81
|
+
{%- capture docs_link %}link:{{ config.links.docs.href | render: change }}[icon:{{ config.links.docs.icon | default: 'book' }}[role=docs-icon]{{ config.links.docs.text | render: change | default: 'Docs' }},role=docs-link]{% endcapture %}
|
|
82
|
+
{%- assign metadata_items = metadata_items | push: docs_link %}
|
|
83
|
+
{%- endif %}
|
|
84
|
+
|
|
85
|
+
{%- comment %}Output as inline metadata with semantic classes{%- endcomment %}
|
|
86
|
+
{%- assign change_metadata = metadata_items | join: ' ' | strip %}
|
|
87
|
+
{%- if change_metadata != '' %}
|
|
88
|
+
{%- assign change_metadata = '[.note-metadata]' | append: newline | append: change_metadata %}
|
|
89
|
+
{%- endif %}
|
|
45
90
|
{%- assign catch_metadata_error = change_metadata %}
|
|
@@ -1,36 +1,73 @@
|
|
|
1
1
|
{%- assign show_labels = content_config.items.metadata_labels %}
|
|
2
2
|
{%- assign show_icons = content_config.items.metadata_icons %}
|
|
3
|
+
{%- assign metadata_kinds = 'type,part' | split: ',' %}
|
|
3
4
|
{%- embed tags-listing.liquid %}
|
|
4
5
|
|
|
5
6
|
{%- capture change_metadata %}
|
|
6
|
-
{%-
|
|
7
|
-
{%-
|
|
8
|
-
{%-
|
|
9
|
-
{
|
|
10
|
-
{%-
|
|
11
|
-
{%-
|
|
12
|
-
{%-
|
|
13
|
-
<
|
|
7
|
+
{%- if change.type %}
|
|
8
|
+
{%- assign type_config = config.types[change.type] %}
|
|
9
|
+
{%- if type_config.icon and show_icons and show_icons == "before" %}
|
|
10
|
+
<i class="fa fa-{{ type_config.icon | default: 'tag' }} meta-icon"></i>
|
|
11
|
+
{%- endif %}
|
|
12
|
+
{%- if show_labels %}
|
|
13
|
+
{%- assign type_text = type_config.text | default: change.type %}
|
|
14
|
+
<span class="badge bg-danger meta-label type-label">{{ type_text }}</span>
|
|
15
|
+
{%- endif %}
|
|
16
|
+
{%- if type_config.icon and show_icons and show_icons == "after" %}
|
|
17
|
+
<i class="fa fa-{{ type_config.icon | default: 'tag' }} meta-icon"></i>
|
|
18
|
+
{%- endif %}
|
|
19
|
+
{%- endif %}
|
|
20
|
+
|
|
21
|
+
{%- if change.part and change.part != "changelog" and change.part != "release_note_needed" %}
|
|
22
|
+
{%- assign part_config = config.parts[change.part] %}
|
|
23
|
+
{%- if part_config %}
|
|
24
|
+
{%- if part_config.icon and show_icons and show_icons == "before" %}
|
|
25
|
+
<i class="fa fa-{{ part_config.icon | default: 'cube' }} meta-icon"></i>
|
|
14
26
|
{%- endif %}
|
|
15
27
|
{%- if show_labels %}
|
|
16
|
-
|
|
28
|
+
{%- assign part_text = part_config.text | default: change.part %}
|
|
29
|
+
<span class="badge bg-secondary meta-label part-label">{{ part_text }}</span>
|
|
17
30
|
{%- endif %}
|
|
18
|
-
{%- if
|
|
19
|
-
<i class="fa fa-{{
|
|
31
|
+
{%- if part_config.icon and show_icons and show_icons == "after" %}
|
|
32
|
+
<i class="fa fa-{{ part_config.icon | default: 'cube' }} meta-icon"></i>
|
|
20
33
|
{%- endif %}
|
|
21
|
-
{%- endfor %}
|
|
22
|
-
{%- if tags_listing != "" %}
|
|
23
|
-
{{ tags_listing | trim }}
|
|
24
34
|
{%- endif %}
|
|
25
|
-
{%-
|
|
26
|
-
|
|
27
|
-
|
|
35
|
+
{%- endif %}
|
|
36
|
+
|
|
37
|
+
{%- if tags_listing != "" %}
|
|
38
|
+
{{ tags_listing | trim }}
|
|
39
|
+
{%- endif %}
|
|
40
|
+
|
|
41
|
+
{%- if change.lead and config.links.user and config.links.user.href %}
|
|
42
|
+
{%- assign user_link = config.links.user.href | render: change %}
|
|
43
|
+
<a href="{{ user_link }}" class="badge bg-light meta-link user-link text-decoration-none text-dark">
|
|
44
|
+
<i class="fa fa-{{ config.links.user.icon | default: 'user' }}"></i>{{ change.lead }}
|
|
28
45
|
</a>
|
|
29
|
-
{%-
|
|
30
|
-
|
|
31
|
-
<
|
|
32
|
-
|
|
46
|
+
{%- elsif change.lead %}
|
|
47
|
+
<span class="badge bg-light meta-label user-label text-dark">
|
|
48
|
+
<i class="fa fa-{{ config.links.user.icon | default: 'user' }}"></i>{{ change.lead }}
|
|
49
|
+
</span>
|
|
50
|
+
{%- endif %}
|
|
51
|
+
|
|
52
|
+
{%- if config.links.web and config.links.web.href %}
|
|
53
|
+
<a href="{{ config.links.web.href | render: change }}" class="badge badge-pill bg-info meta-link issue-link text-decoration-none">
|
|
54
|
+
<i class="fa fa-{{ config.links.web.icon | default: 'ticket' }}"></i>{{ config.links.web.text | render: change | default: change.tick }}
|
|
33
55
|
</a>
|
|
34
|
-
{%-
|
|
56
|
+
{%- endif %}
|
|
57
|
+
|
|
58
|
+
{%- if config.links.git and config.links.git.href %}
|
|
59
|
+
{%- assign git_text = config.links.git.text | render: change | default: change.hash %}
|
|
60
|
+
<a href="{{ config.links.git.href | render: change }}" class="badge badge-pill bg-dark meta-link git-link text-decoration-none">
|
|
61
|
+
<i class="fa fa-{{ config.links.git.icon | default: 'code-fork' }}"></i>{{ git_text | slice: 0, 7 }}
|
|
62
|
+
</a>
|
|
63
|
+
{%- endif %}
|
|
64
|
+
|
|
65
|
+
{%- if config.links.docs and config.links.docs.href %}
|
|
66
|
+
<a href="{{ config.links.docs.href | render: change }}" class="badge badge-pill bg-success meta-link docs-link text-decoration-none">
|
|
67
|
+
<i class="fa fa-{{ config.links.docs.icon | default: 'book' }}"></i>{{ config.links.docs.text | render: change | default: 'Docs' }}
|
|
68
|
+
</a>
|
|
69
|
+
{%- endif %}
|
|
35
70
|
{%- endcapture %}
|
|
36
71
|
{%- assign catch_metadata_error = change_metadata %}
|
|
72
|
+
|
|
73
|
+
|
|
@@ -1,30 +1,75 @@
|
|
|
1
|
-
{%-
|
|
2
|
-
{%- assign
|
|
1
|
+
{%- comment -%} Build inline metadata with badges for release notes {%- endcomment -%}
|
|
2
|
+
{%- assign metadata_kinds = 'type,part' | split: ',' -%}
|
|
3
|
+
{%- assign metadata_items = "" | split: "," -%}
|
|
4
|
+
|
|
5
|
+
{%- comment -%} Type badge {%- endcomment -%}
|
|
6
|
+
{%- if metadata_kinds contains "type" and change.type -%}
|
|
7
|
+
{%- assign type_config = config.types[change.type] -%}
|
|
8
|
+
{%- if type_config -%}
|
|
9
|
+
{%- assign type_text = type_config.text | default: change.type -%}
|
|
10
|
+
{%- assign type_slug = change.type | sluggerize: slug_type -%}
|
|
11
|
+
{%- capture type_badge -%}<span class="badge type-badge type-{{ type_slug }}">{{ type_text }}</span>{%- endcapture -%}
|
|
12
|
+
{%- assign metadata_items = metadata_items | push: type_badge -%}
|
|
13
|
+
{%- endif -%}
|
|
14
|
+
{%- endif -%}
|
|
15
|
+
|
|
16
|
+
{%- comment -%} Parts {%- endcomment -%}
|
|
17
|
+
{%- if metadata_kinds contains "part" -%}
|
|
18
|
+
{%- assign effective_parts = "" | split: "," -%}
|
|
19
|
+
{%- if change.parts and change.parts.size > 0 -%}
|
|
20
|
+
{%- assign effective_parts = change.parts -%}
|
|
21
|
+
{%- elsif change.part -%}
|
|
22
|
+
{%- assign effective_parts = change.part | split: "," -%}
|
|
23
|
+
{%- endif -%}
|
|
24
|
+
{%- if effective_parts.size > 0 -%}
|
|
25
|
+
{%- for part in effective_parts -%}
|
|
26
|
+
{%- assign part_config = config.parts[part] -%}
|
|
27
|
+
{%- if part_config -%}
|
|
28
|
+
{%- assign part_text = part_config.text | default: part -%}
|
|
29
|
+
{%- assign part_slug = part | sluggerize: slug_type -%}
|
|
30
|
+
{%- capture part_badge -%}<span class="badge part-badge part-{{ part_slug }}">{{ part_text }}</span>{%- endcapture -%}
|
|
31
|
+
{%- assign metadata_items = metadata_items | push: part_badge -%}
|
|
32
|
+
{%- endif -%}
|
|
33
|
+
{%- endfor -%}
|
|
34
|
+
{%- endif -%}
|
|
35
|
+
{%- endif -%}
|
|
36
|
+
|
|
37
|
+
{%- comment -%} Tags {%- endcomment -%}
|
|
38
|
+
{%- if metadata_kinds contains "tag" and change.tags and change.tags.size > 0 -%}
|
|
39
|
+
{%- for tag in change.tags -%}
|
|
40
|
+
{%- assign tag_slug = tag | sluggerize: slug_type -%}
|
|
41
|
+
{%- capture tag_badge -%}<span class="badge tag-badge tag-{{ tag_slug }}">{{ tag }}</span>{%- endcapture -%}
|
|
42
|
+
{%- assign metadata_items = metadata_items | push: tag_badge -%}
|
|
43
|
+
{%- endfor -%}
|
|
44
|
+
{%- endif -%}
|
|
45
|
+
|
|
46
|
+
{%- comment -%} Lead/user {%- endcomment -%}
|
|
3
47
|
{%- if note_show_lead and change.lead -%}
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
{%- assign metadata_parts = metadata_parts | push: lead_text -%}
|
|
48
|
+
{%- if note_show_lead_links and config.links.user.href -%}
|
|
49
|
+
{%- capture lead_link -%}[@{{ change.lead }}]({{ config.links.user.href | replace: '{{user}}', change.lead }}){%- endcapture -%}
|
|
50
|
+
{%- assign metadata_items = metadata_items | push: lead_link -%}
|
|
51
|
+
{%- else -%}
|
|
52
|
+
{%- capture lead_text -%}@{{ change.lead }}{%- endcapture -%}
|
|
53
|
+
{%- assign metadata_items = metadata_items | push: lead_text -%}
|
|
54
|
+
{%- endif -%}
|
|
12
55
|
{%- endif -%}
|
|
56
|
+
|
|
57
|
+
{%- comment -%} Issue link {%- endcomment -%}
|
|
13
58
|
{%- if note_show_issue_links and change.tick and config.links.web.href -%}
|
|
14
|
-
|
|
15
|
-
|
|
59
|
+
{%- capture issue_link -%}[{{ config.links.web.text | render: change }}]({{ config.links.web.href | render: change }}){%- endcapture -%}
|
|
60
|
+
{%- assign metadata_items = metadata_items | push: issue_link -%}
|
|
16
61
|
{%- elsif change.tick -%}
|
|
17
|
-
|
|
18
|
-
{%- endif -%}
|
|
19
|
-
{%- embed parts-listing.liquid -%}
|
|
20
|
-
{%- if parts_listing and parts_listing != "" -%}
|
|
21
|
-
{%- assign metadata_parts = metadata_parts | push: parts_listing -%}
|
|
62
|
+
{%- assign metadata_items = metadata_items | push: change.tick -%}
|
|
22
63
|
{%- endif -%}
|
|
23
|
-
|
|
24
|
-
{%-
|
|
25
|
-
|
|
64
|
+
|
|
65
|
+
{%- comment -%} Git commit {%- endcomment -%}
|
|
66
|
+
{%- if metadata_kinds contains "git" and change.ghsh and config.links.git.href -%}
|
|
67
|
+
{%- capture git_link -%}[`{{ change.ghsh | slice: 0, 7 }}`]({{ config.links.git.href | render: change }}){%- endcapture -%}
|
|
68
|
+
{%- assign metadata_items = metadata_items | push: git_link -%}
|
|
26
69
|
{%- endif -%}
|
|
27
|
-
|
|
28
|
-
|
|
70
|
+
|
|
71
|
+
{%- if metadata_items.size > 0 -%}
|
|
72
|
+
{%- assign change_metadata = metadata_items | join: " " -%}
|
|
73
|
+
{%- else -%}
|
|
74
|
+
{%- assign change_metadata = "" -%}
|
|
29
75
|
{%- endif -%}
|
|
30
|
-
{%- endcapture -%}
|
|
@@ -1,25 +1,31 @@
|
|
|
1
|
+
{%- assign raw_note = change.note | default: "NO RELEASE NOTE PROVIDED" %}
|
|
2
|
+
{%- assign change_note = raw_note | replace: "## Release Note", "" | trim %}
|
|
1
3
|
{%- if config.conversions.markup == "markdown" %}
|
|
2
|
-
{%- assign change_note =
|
|
3
|
-
{%-
|
|
4
|
-
{%- assign change_note =
|
|
4
|
+
{%- assign change_note = change_note | markdownify | trim %}
|
|
5
|
+
{%- elsif config.conversions.markup == "asciidoc" %}
|
|
6
|
+
{%- assign change_note = change_note | asciidocify | trim %}
|
|
5
7
|
{%- endif %}
|
|
6
8
|
{%- include metadata-note.html.liquid %}
|
|
7
9
|
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
<article class="release-note card mb-3" id="note-{{ change.chid }}">
|
|
11
|
+
<div class="card-header bg-light border-bottom">
|
|
12
|
+
{%- if change.head %}
|
|
13
|
+
<h5 class="card-title mb-0">{{ change.head }}</h5>
|
|
14
|
+
{%- else %}
|
|
15
|
+
<h5 class="card-title mb-0 text-muted">Release Note</h5>
|
|
16
|
+
{%- endif %}
|
|
17
|
+
</div>
|
|
18
|
+
<div class="card-body">
|
|
19
|
+
<div class="card-text prose mb-3">
|
|
20
|
+
{{ change_note }}
|
|
21
|
+
</div>
|
|
22
|
+
{%- if change_metadata != "" %}
|
|
23
|
+
<div class="card-footer border-top pt-2">
|
|
24
|
+
<div class="change-metadata">
|
|
25
|
+
{{ change_metadata | trim }}
|
|
26
|
+
</div>
|
|
23
27
|
</div>
|
|
24
|
-
|
|
28
|
+
{%- endif %}
|
|
29
|
+
</div>
|
|
30
|
+
</article>
|
|
25
31
|
|