releasehx 0.1.1 → 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 +366 -331
- data/build/docs/_config.yml +18 -1
- data/build/docs/_release_index.adoc +10 -0
- data/build/docs/config-reference.adoc +203 -16
- data/build/docs/config-reference.json +60 -10
- data/build/docs/index.adoc +316 -59
- data/build/docs/landing.adoc +11 -4
- 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/releases.adoc +28 -0
- data/build/docs/sample-config.adoc +2 -0
- data/build/docs/sample-config.yml +16 -9
- data/lib/releasehx/cli.rb +21 -9
- 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 +126 -8
- data/lib/releasehx/mcp/assets/config-reference.adoc +203 -16
- data/lib/releasehx/mcp/assets/config-reference.json +60 -10
- data/lib/releasehx/mcp/assets/sample-config.yml +16 -9
- 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 +13 -9
- data/lib/releasehx/rhyml/mappings/github.yaml +3 -1
- 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 +4 -7
- data/lib/releasehx/rhyml/templates/entry.html.liquid +21 -20
- data/lib/releasehx/rhyml/templates/entry.md.liquid +14 -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 -49
- 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 -49
- 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.adoc.liquid +2 -40
- data/lib/releasehx/rhyml/templates/note.html.liquid +25 -19
- data/lib/releasehx/rhyml/templates/note.md.liquid +43 -29
- data/lib/releasehx/rhyml/templates/parts-listing.liquid +6 -6
- 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 -35
- 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 +126 -8
- metadata +50 -26
- data/build/docs/Gemfile.lock +0 -95
- 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 -215
- 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,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 -%}
|
|
@@ -3,50 +3,12 @@
|
|
|
3
3
|
{%- else %}
|
|
4
4
|
{%- assign change_note = change.note | default: "NO RELEASE NOTE PROVIDED" | trim %}
|
|
5
5
|
{%- endif %}
|
|
6
|
-
{%- include metadata-note.adoc.liquid %}
|
|
7
6
|
|
|
8
7
|
{%- unless changes_listed contains change.chid %}
|
|
9
8
|
[[note-{{ change.chid }}]]
|
|
10
9
|
{%- endunless %}
|
|
11
10
|
[.release-note]
|
|
12
|
-
|
|
13
|
-
|===
|
|
14
|
-
a| {{ change_metadata }} +
|
|
15
|
-
{%- if change.head %}
|
|
16
|
-
*{{ change.head }}* +
|
|
17
|
-
{%- endif %}
|
|
11
|
+
--
|
|
18
12
|
{{ change_note }}
|
|
19
|
-
|
|
20
|
-
{%- elsif config.notes.items.frame == "table-cols-2" %}
|
|
21
|
-
[cols="5,2"]
|
|
22
|
-
|===
|
|
23
|
-
{%- if change.head %}
|
|
24
|
-
2+a| *{{ change.head }}*
|
|
25
|
-
{%- endif %}
|
|
26
|
-
a| {{ change_note }}
|
|
27
|
-
a| {{ change_metadata }}
|
|
28
|
-
|===
|
|
29
|
-
{%- elsif config.notes.items.frame == "desc-list" %}
|
|
30
|
-
{{ change.head }}::
|
|
31
|
-
{{ change_note }} +
|
|
32
|
-
{{ change_metadata }}
|
|
33
|
-
{%- elsif config.notes.items.frame == "admonition" %}
|
|
34
|
-
{%- if change.type == "removal" or change.type == "deprecation" or change.type == "breaking" %}
|
|
35
|
-
{%- assign admonition_type = "WARNING" %}
|
|
36
|
-
{%- elsif change.type == "security" %}
|
|
37
|
-
{%- assign admonition_type = "IMPORTANT" %}
|
|
38
|
-
{%- elsif change.type == "experimental" %}
|
|
39
|
-
{%- assign admonition_type = "TIP" %}
|
|
40
|
-
{%- else %}
|
|
41
|
-
{%- assign admonition_type = "NOTE" %}
|
|
42
|
-
{%- endif %}
|
|
43
|
-
[{{ admonition_type }}]
|
|
44
|
-
{%- if change.head %}
|
|
45
|
-
.{{ change.head }}
|
|
46
|
-
{%- endif %}
|
|
47
|
-
====
|
|
48
|
-
{{ change_note }} +
|
|
49
|
-
{{ change_metadata }}
|
|
50
|
-
====
|
|
51
|
-
{%- endif %}
|
|
13
|
+
--
|
|
52
14
|
|
|
@@ -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
|
|
|
@@ -1,37 +1,51 @@
|
|
|
1
|
-
|
|
2
|
-
{%
|
|
1
|
+
<!-- .release-note -->
|
|
2
|
+
{% if config.conversions.markup == 'markdown' -%}
|
|
3
|
+
{% assign change_note = change.note | default: 'NO RELEASE NOTE PROVIDED' | trim -%}
|
|
3
4
|
{% else -%}
|
|
4
|
-
{% assign change_note = change.note | default:
|
|
5
|
+
{% assign change_note = change.note | default: 'NO RELEASE NOTE PROVIDED' | adoc_to_md | trim -%}
|
|
5
6
|
{% endif -%}
|
|
7
|
+
{%- comment -%} Remove "## Release Note" heading if it appears in the note content {%- endcomment -%}
|
|
8
|
+
{%- assign change_note = change_note | replace: '## Release Note', '' | trim -%}
|
|
6
9
|
{% embed metadata-note.md.liquid -%}
|
|
7
10
|
|
|
8
11
|
<a id="note-{{ change.chid }}"></a>
|
|
9
|
-
{%- if config.notes.items.frame == "table" %}
|
|
10
|
-
| Change | Details |
|
|
11
|
-
|--------|---------|
|
|
12
|
-
| {{ change_metadata }} | {% if change.head %}**{{ change.head }}**<br>{% endif %}{{ change_note }} |
|
|
13
|
-
{%- elsif config.notes.items.frame == "desc-list" %}
|
|
14
|
-
**{{ change.head }}**
|
|
15
|
-
{{ change_note }}
|
|
16
|
-
*{{ change_metadata }}*
|
|
17
|
-
{% elsif config.notes.items.frame == "admonition" %}
|
|
18
|
-
{% if change.type == "removal" or change.type == "deprecation" or change.type == "breaking" %}
|
|
19
|
-
{% assign admonition_type = "Warning" %}
|
|
20
|
-
{% elsif change.type == "security" %}
|
|
21
|
-
{% assign admonition_type = "Important" %}
|
|
22
|
-
{% elsif change.type == "experimental" %}
|
|
23
|
-
{% assign admonition_type = "Tip" %}
|
|
24
|
-
{% else %}
|
|
25
|
-
{% assign admonition_type = "Note" %}
|
|
26
|
-
{% endif %}
|
|
27
12
|
|
|
28
|
-
|
|
29
|
-
|
|
13
|
+
{%- if config.notes.items.frame == 'table' %}
|
|
14
|
+
| Change | Details | |--------|---------| | {{ change_metadata }} |
|
|
15
|
+
{% if change.head %}**{{ change.head }}**<br>{% endif -%}
|
|
16
|
+
{{- change_note }} |
|
|
17
|
+
{%- elsif config.notes.items.frame == 'table-cols-1' %}
|
|
18
|
+
| Note | |------| | {{ change_metadata -}}
|
|
19
|
+
<br>
|
|
20
|
+
{% if change.head %}**{{ change.head }}**<br>{% endif -%}
|
|
21
|
+
{{- change_note }} |
|
|
22
|
+
{%- elsif config.notes.items.frame == 'table-cols-2' %}
|
|
23
|
+
| Note | Metadata | |------|----------| | {% if change.head %}**{{ change.head }}**<br>{% endif -%}
|
|
24
|
+
{{- change_note }} | {{ change_metadata }} |
|
|
25
|
+
{%- elsif config.notes.items.frame == 'desc-list' %}
|
|
26
|
+
{% if change.head -%}
|
|
27
|
+
**{{ change.head }}**
|
|
28
|
+
{% endif -%}
|
|
29
|
+
{{ change_note }}
|
|
30
|
+
{{ change_metadata }}
|
|
31
|
+
{% elsif config.notes.items.frame == 'admonition' %}
|
|
32
|
+
{% if change.type == 'removal' or change.type == 'deprecation' or change.type == 'breaking' %}
|
|
33
|
+
{% assign admonition_type = '⚠️ Warning' %}
|
|
34
|
+
{% elsif change.type == 'security' %}
|
|
35
|
+
{% assign admonition_type = '🔒 Security' %}
|
|
36
|
+
{% elsif change.type == 'experimental' %}
|
|
37
|
+
{% assign admonition_type = '💡 Tip' %}
|
|
38
|
+
{% else %}
|
|
39
|
+
{% assign admonition_type = '📝 Note' %}
|
|
40
|
+
{% endif %}
|
|
41
|
+
|
|
42
|
+
> **{{ admonition_type }}**: {% if change.head %}**{{ change.head }}** — {% endif -%}
|
|
43
|
+
{{- change_note }} > {{ change_metadata }}
|
|
30
44
|
{% else -%}
|
|
31
|
-
{% if change.head -%}
|
|
32
|
-
### {{ change.head }}
|
|
33
|
-
{% endif -%}
|
|
34
|
-
{{ change_note }}
|
|
35
|
-
{{- change_metadata }}
|
|
36
|
-
{% endif %}
|
|
45
|
+
{% if change.head -%}
|
|
46
|
+
### {{ change.head }}
|
|
47
|
+
{% endif -%}
|
|
48
|
+
{{ change_note }}
|
|
37
49
|
|
|
50
|
+
{{ change_metadata }}
|
|
51
|
+
{% endif %}
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
{%- if show_labels -%}
|
|
20
20
|
{%- if format == "asciidoc" -%}
|
|
21
21
|
{%- if labeling_singularize_labels and parts_count == 1 -%}
|
|
22
|
-
|
|
22
|
+
**{{ labeling_part_label }}:** {% else -%}**{{ labeling_parts_label }}:** {% endif -%}
|
|
23
23
|
{%- elsif format == "markdown" -%}
|
|
24
24
|
{%- if labeling_singularize_labels and parts_count == 1 -%}
|
|
25
|
-
{{ labeling_part_label }}: {
|
|
25
|
+
{{ labeling_part_label }}: {% else -%}{{ labeling_parts_label }}: {% endif -%}
|
|
26
26
|
{%- endif -%}
|
|
27
27
|
{%- endif -%}
|
|
28
28
|
{%- assign part_texts = "" | split: "," -%}
|
|
@@ -38,10 +38,10 @@
|
|
|
38
38
|
{%- unless skip_part -%}
|
|
39
39
|
{%- capture part_text -%}
|
|
40
40
|
{%- if config.parts[part].icon and show_icons and show_icons == "before" -%}
|
|
41
|
-
{%- if format == "asciidoc" -%}icon:{{ config.parts[part].icon }}[]
|
|
41
|
+
{%- if format == "asciidoc" -%}icon:{{ config.parts[part].icon }}[]{%- endif -%}
|
|
42
42
|
{%- endif -%}
|
|
43
43
|
{%- if format == "asciidoc" -%}
|
|
44
|
-
{{ config.parts[part]['text'] | default: part }}{%- elsif format == "markdown" -%}**{{ config.parts[part]['text'] | default: part }}**{%- endif -%}
|
|
44
|
+
{{ config.parts[part]['head'] | default: config.parts[part]['text'] | default: part }}{%- elsif format == "markdown" -%}**{{ config.parts[part]['head'] | default: config.parts[part]['text'] | default: part }}**{%- endif -%}
|
|
45
45
|
{%- if config.parts[part].icon and show_icons and show_icons == "after" -%}
|
|
46
46
|
{%- if format == "asciidoc" -%} icon:{{ config.parts[part].icon }}[]{%- endif -%}
|
|
47
47
|
{%- endif -%}
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
{%- if part_texts.size > 0 -%}
|
|
53
53
|
{%- if format == "asciidoc" -%}
|
|
54
54
|
{%- for part_text in part_texts -%}
|
|
55
|
-
{{ part_text }}{%- unless forloop.last %} {
|
|
55
|
+
{{ part_text }}{%- unless forloop.last %}, {% endunless -%}
|
|
56
56
|
{%- endfor -%}
|
|
57
57
|
{%- elsif format == "markdown" -%}
|
|
58
|
-
{{ part_texts | join: ", " }}{
|
|
58
|
+
{{ part_texts | join: ", " }}{% endif -%}
|
|
59
59
|
{%- endif -%}
|
|
60
60
|
{%- endcapture -%}
|
|
61
61
|
{%- endif -%}
|
|
@@ -4,11 +4,13 @@
|
|
|
4
4
|
{%- assign dflt_next_header_level = level | plus: 1 -%}
|
|
5
5
|
{%- assign item_count = 0 %}
|
|
6
6
|
|
|
7
|
-
<
|
|
8
|
-
|
|
7
|
+
<section class="notes-section py-4 px-3 mb-4">
|
|
8
|
+
{%- include header.liquid format=format level=level text=content_config.head %}
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
{%- embed section-text.liquid %}
|
|
11
11
|
|
|
12
|
+
<div class="notes-content mt-4">
|
|
12
13
|
{%- embed groupings.liquid %}
|
|
13
|
-
</div>
|
|
14
|
+
</div>
|
|
15
|
+
</section>
|
|
14
16
|
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
:icons: font
|
|
7
7
|
{% embed head-parser.liquid %}
|
|
8
8
|
|
|
9
|
+
[.release-section]
|
|
10
|
+
|
|
9
11
|
{%- if release.hash and release.hash != "" and config.links.git and config.links.git.trim != "" %}
|
|
10
12
|
link:{{ config.links.git | render: release }}[icon:{{ config.links.git_icon | default: 'code-fork' }}[]{{ release.hash | slice: 0, 7 }}]
|
|
11
13
|
{%- endif %}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
{
|
|
2
|
-
{
|
|
3
|
-
{
|
|
4
|
-
{
|
|
5
|
-
{
|
|
1
|
+
{%- assign format = "markdown" -%}
|
|
2
|
+
{%- assign config = vars.config -%}
|
|
3
|
+
{%- assign release = vars.release -%}
|
|
4
|
+
{%- assign changes = vars.changes -%}
|
|
5
|
+
{%- assign sorted = vars.sorted -%}
|
|
6
6
|
{%- embed head-parser.liquid %}
|
|
7
|
-
|
|
7
|
+
<!-- .release-section -->
|
|
8
|
+
{%- if release.memo -%}
|
|
8
9
|
{{ release.memo }}
|
|
9
|
-
{
|
|
10
|
+
{%- endif -%}
|
|
10
11
|
|
|
11
12
|
{% if release.hash and release.hash != "" and config.links.git and config.links.git.trim != "" -%}
|
|
12
13
|
**Git:** [{{ release.hash | slice: 0, 7 }}]({{ config.links.git | render: release }})
|
|
@@ -1,39 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
{%- assign change = include.change %}
|
|
2
|
+
{%- assign config = include.config %}
|
|
3
|
+
- chid: {{ change.chid }}
|
|
4
|
+
{%- if change.tick %}
|
|
5
|
+
tick: {{ change.tick }}
|
|
6
|
+
{%- endif %}
|
|
7
|
+
{%- if change.type %}
|
|
8
|
+
type: {{ change.type }}
|
|
9
|
+
{%- endif %}
|
|
10
|
+
{%- if change.parts.size > 0 %}
|
|
11
|
+
{%- if change.parts.size == 1 %}
|
|
12
12
|
part: {{ change.parts[0] }}
|
|
13
|
-
|
|
13
|
+
{%- else %}
|
|
14
14
|
parts:
|
|
15
|
-
|
|
15
|
+
{%- for part in change.parts %}
|
|
16
16
|
- {{ part }}
|
|
17
|
-
{%- endfor %}
|
|
18
|
-
{%- endif %}
|
|
19
|
-
{%- endif %}
|
|
20
|
-
{%- if change.hash %}
|
|
21
|
-
hash: {{ change.hash }}
|
|
22
|
-
{%- endif %}
|
|
23
|
-
summ: {{ change.summ }}
|
|
24
|
-
{%- if change.head %}
|
|
25
|
-
head: {{ change.head }}
|
|
26
|
-
{%- endif %}
|
|
27
|
-
{%- if change.note and change.note.strip != "" %}
|
|
28
|
-
note: |
|
|
29
|
-
{{ change.note | indent: 6 }}
|
|
30
|
-
{%- endif %}
|
|
31
|
-
{%- if change.tags.size > 0 %}
|
|
32
|
-
tags:
|
|
33
|
-
{%- for tag in change.tags %}
|
|
34
|
-
- {{ tag }}
|
|
35
17
|
{%- endfor %}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
18
|
+
{%- endif %}
|
|
19
|
+
{%- endif %}
|
|
20
|
+
{%- if change.hash %}
|
|
21
|
+
hash: {{ change.hash }}
|
|
22
|
+
{%- endif %}
|
|
23
|
+
summ: |
|
|
24
|
+
{{ change.summ }}
|
|
25
|
+
{%- if change.head %}
|
|
26
|
+
head: {{ change.head }}
|
|
27
|
+
{%- endif %}
|
|
28
|
+
{%- if change.note and change.note.strip != '' %}
|
|
29
|
+
note: |
|
|
30
|
+
{{ _note | indent: 6 }}
|
|
31
|
+
{%- endif %}
|
|
32
|
+
{%- if change.tags.size > 0 %}
|
|
33
|
+
tags:
|
|
34
|
+
{%- for tag in change.tags %}
|
|
35
|
+
- {{ tag }}
|
|
36
|
+
{%- endfor %}
|
|
37
|
+
{%- endif %}
|
|
38
|
+
{%- if change.lead %}
|
|
39
|
+
lead: {{ change.lead }}
|
|
40
|
+
{%- endif %}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<meta name="description" content="Release history and changelog">
|
|
7
|
+
{% assign title = config.history.head | default: 'Release History' | escape %}
|
|
8
|
+
<title>{{ title }}</title>
|
|
9
|
+
|
|
10
|
+
{%- assign styling_mode = config.history.styling.mode | default: 'framework' %}
|
|
11
|
+
{%- assign css_url = config.history.styling.css_url %}
|
|
12
|
+
{%- assign embed_css = config.history.styling.embed_css | default: false %}
|
|
13
|
+
{%- assign theme = config.history.styling.theme | default: 'default' %}
|
|
14
|
+
|
|
15
|
+
{%- if styling_mode == 'external' and css_url %}
|
|
16
|
+
<link rel="stylesheet" href="{{ css_url }}">
|
|
17
|
+
{%- elsif styling_mode == 'framework' or styling_mode == 'embedded' %}
|
|
18
|
+
{%- if framework == 'bootstrap' %}
|
|
19
|
+
{%- case framework_version %}
|
|
20
|
+
{%- when '5.3.0' %}
|
|
21
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
22
|
+
{%- when '4.6.2' %}
|
|
23
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
24
|
+
{%- else %}
|
|
25
|
+
<link href="https://cdn.jsdelivr.net/npm/bootstrap@{{ framework_version }}/dist/css/bootstrap.min.css" rel="stylesheet">
|
|
26
|
+
{%- endcase %}
|
|
27
|
+
{%- endif %}
|
|
28
|
+
|
|
29
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
|
30
|
+
|
|
31
|
+
{%- comment %}Load Bootstrap overrides (can be customized in _templates/bootstrap-overrides.css){%- endcomment %}
|
|
32
|
+
<style>
|
|
33
|
+
{% embed bootstrap-overrides.css %}
|
|
34
|
+
</style>
|
|
35
|
+
{%- endif %}
|
|
36
|
+
|
|
37
|
+
{%- if styling_mode == 'embedded' or embed_css %}
|
|
38
|
+
<style>
|
|
39
|
+
{% embed embedded.css.liquid %}
|
|
40
|
+
</style>
|
|
41
|
+
{%- elsif styling_mode == 'minimal' %}
|
|
42
|
+
<style>
|
|
43
|
+
/* Minimal Styling Mode */
|
|
44
|
+
body {
|
|
45
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
46
|
+
line-height: 1.6;
|
|
47
|
+
max-width: 1000px;
|
|
48
|
+
margin: 0 auto;
|
|
49
|
+
padding: 2rem;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.release-section {
|
|
53
|
+
margin-bottom: 3rem;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.changelog-section, .notes-section {
|
|
57
|
+
margin-bottom: 2rem;
|
|
58
|
+
padding-left: 1rem;
|
|
59
|
+
border-left: 3px solid #ccc;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.release-note {
|
|
63
|
+
margin-bottom: 1.5rem;
|
|
64
|
+
padding: 1rem;
|
|
65
|
+
border: 1px solid #eee;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.change-entry {
|
|
69
|
+
margin-bottom: 0.75rem;
|
|
70
|
+
padding: 0.5rem 0;
|
|
71
|
+
border-bottom: 1px solid #f0f0f0;
|
|
72
|
+
}
|
|
73
|
+
</style>
|
|
74
|
+
{%- endif %}
|
|
75
|
+
</head>
|
|
76
|
+
<body>
|
|
77
|
+
<div class="container-lg py-5">
|
|
78
|
+
<article class="release-history">
|
|
79
|
+
{{ content }}
|
|
80
|
+
</article>
|
|
81
|
+
</div>
|
|
82
|
+
{%- if framework == 'bootstrap' %}
|
|
83
|
+
{%- case framework_version %}
|
|
84
|
+
{%- when '5.3.0' %}
|
|
85
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
|
86
|
+
<script>
|
|
87
|
+
// Auto-detect and apply Bootstrap 5 dark mode
|
|
88
|
+
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
89
|
+
document.documentElement.setAttribute('data-bs-theme', 'dark');
|
|
90
|
+
}
|
|
91
|
+
// Listen for system theme changes
|
|
92
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', e => {
|
|
93
|
+
document.documentElement.setAttribute('data-bs-theme', e.matches ? 'dark' : 'light');
|
|
94
|
+
});
|
|
95
|
+
</script>
|
|
96
|
+
{%- when '4.6.2' %}
|
|
97
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
|
|
98
|
+
{%- else %}
|
|
99
|
+
<script src="https://cdn.jsdelivr.net/npm/bootstrap@{{ framework_version }}/dist/js/bootstrap.bundle.min.js"></script>
|
|
100
|
+
{%- endcase %}
|
|
101
|
+
{%- endif %}
|
|
102
|
+
</body>
|
|
103
|
+
</html>
|
|
@@ -135,7 +135,7 @@ module ReleaseHx
|
|
|
135
135
|
end
|
|
136
136
|
|
|
137
137
|
# Converts a list (bullet or ordered)
|
|
138
|
-
def self.convert_list node, excluded, depth, unordered: true
|
|
138
|
+
def self.convert_list node, excluded, depth, unordered: true # rubocop:disable Lint/UnusedMethodArgument
|
|
139
139
|
content = node['content'] || []
|
|
140
140
|
items = content.map { |item| convert_node(item, excluded, depth + 1) }
|
|
141
141
|
"#{items.join}\n"
|
data/lib/releasehx/version.rb
CHANGED
data/lib/releasehx.rb
CHANGED