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
data/lib/releasehx/cli.rb
CHANGED
|
@@ -688,23 +688,32 @@ module ReleaseHx
|
|
|
688
688
|
end
|
|
689
689
|
|
|
690
690
|
def create_rhyml_from_source source_path, version
|
|
691
|
-
#
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
# Handle different source types based on configuration
|
|
695
|
-
case configured_source_type
|
|
696
|
-
when 'rhyml'
|
|
691
|
+
# First check if source_path is actually a file (overrides config)
|
|
692
|
+
if version_or_file(source_path) == :file && File.exist?(source_path)
|
|
697
693
|
# Load RHYML data directly from YAML file
|
|
694
|
+
ReleaseHx.logger.debug "Loading RHYML from file: #{source_path}" if options[:verbose]
|
|
698
695
|
rhyml_data = SchemaGraphy::Loader.load_yaml_with_tags(source_path)
|
|
699
696
|
release_data = rhyml_data['releases'] ? rhyml_data['releases'].first : rhyml_data
|
|
700
697
|
|
|
701
698
|
# Convert hash keys to keyword arguments for Release constructor
|
|
702
|
-
ReleaseHx::RHYML::Release.new(
|
|
699
|
+
return ReleaseHx::RHYML::Release.new(
|
|
703
700
|
code: release_data['code'] || version,
|
|
704
701
|
date: release_data['date'],
|
|
705
702
|
hash: release_data['hash'],
|
|
706
703
|
memo: release_data['memo'],
|
|
707
704
|
changes: release_data['changes'] || [])
|
|
705
|
+
end
|
|
706
|
+
|
|
707
|
+
# Determine source type from configuration
|
|
708
|
+
configured_source_type = @settings.dig('origin', 'source') || 'json'
|
|
709
|
+
|
|
710
|
+
# Handle different source types based on configuration
|
|
711
|
+
case configured_source_type
|
|
712
|
+
when 'rhyml'
|
|
713
|
+
# Config says rhyml but source_path is not a file - error
|
|
714
|
+
raise Thor::Error,
|
|
715
|
+
"ERROR: origin.source is 'rhyml' but no YAML file provided. " \
|
|
716
|
+
'Specify a YAML file path as the first argument.'
|
|
708
717
|
when 'json'
|
|
709
718
|
# For json type, only use local files (never API calls)
|
|
710
719
|
if options[:api_data]
|
|
@@ -744,12 +753,14 @@ module ReleaseHx
|
|
|
744
753
|
@settings['modes'] ||= {}
|
|
745
754
|
|
|
746
755
|
unless options[:wrap].nil?
|
|
747
|
-
@settings['modes']['
|
|
756
|
+
@settings['modes']['html_wrap'] = options[:wrap]
|
|
748
757
|
ReleaseHx.logger.info "✓ Changed HTML wrapping to: #{options[:wrap]}" if options[:verbose]
|
|
749
758
|
end
|
|
750
759
|
|
|
751
760
|
return if options[:frontmatter].nil?
|
|
752
761
|
|
|
762
|
+
@settings['modes']['markdown_frontmatter'] = options[:frontmatter]
|
|
763
|
+
@settings['modes']['asciidoc_frontmatter'] = options[:frontmatter]
|
|
753
764
|
@settings['modes']['html_frontmatter'] = options[:frontmatter]
|
|
754
765
|
ReleaseHx.logger.info "✓ Changed frontmatter inclusion to: #{options[:frontmatter]}" if options[:verbose]
|
|
755
766
|
end
|
|
@@ -831,8 +842,9 @@ module ReleaseHx
|
|
|
831
842
|
|
|
832
843
|
# Extract issues array if client config specifies root_issues_path: "issues"
|
|
833
844
|
# This matches what the API client does when fetching live data
|
|
845
|
+
# BUT: Skip extraction if a custom mapping is provided, as it handles extraction itself
|
|
834
846
|
origin_source = @settings.dig('origin', 'source')
|
|
835
|
-
if origin_source && payload.is_a?(Hash) && payload.key?('issues')
|
|
847
|
+
if origin_source && payload.is_a?(Hash) && payload.key?('issues') && !options[:mapping]
|
|
836
848
|
client_path = find_api_client_config(origin_source)
|
|
837
849
|
if client_path
|
|
838
850
|
client_def = SchemaGraphy::Loader.load_yaml_with_tags(client_path)
|
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.
|
|
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.26", "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-05-27", "localyear"=>"2026", "localtime"=>"11:16:48 -0400", "localdatetime"=>"2026-05-27 11:16:48 -0400", "docdate"=>"2026-05-27", "docyear"=>"2026", "doctime"=>"10:37:27 -0400", "docdatetime"=>"2026-05-27 10:37:27 -0400", "page-layout"=>"default", "page-permalink"=>"/docs/", "page-title"=>"ReleaseHx Docs", "page-nav_order"=>"1", "doctitle"=>"ReleaseHx", "this_proj_slug"=>"releasehx", "this_proj_name"=>"ReleaseHx", "docopslab_src_www_url"=>"https://raw.githubusercontent.com/DocOps", "docopslab_domain"=>"docopslab.org", "docopslab_www_url"=>"https://docopslab.org", "docopslab_io_www_url"=>"https://docopslab.github.io", "docopslab_ruby_version"=>"3.2.7", "docopslab_git_src_uri"=>"git@github.com:DocOps", "this_proj_src_www_url"=>"https://raw.githubusercontent.com/DocOps/releasehx", "this_proj_src_raw_url"=>"https://raw.githubusercontent.com/DocOps/releasehx/main", "this_proj_src_main_files_url"=>"https://raw.githubusercontent.com/DocOps/releasehx/blob/main", "this_proj_src_main_edit_url"=>"https://raw.githubusercontent.com/DocOps/releasehx/edit/main", "this_proj_src_git_uri"=>"git@github.com:DocOps/releasehx.git", "this_proj_ruby_version"=>"3.2.7", "extn"=>"", "releasehx_demo_repo"=>"https://raw.githubusercontent.com/DocOps/releasehx-demo", "this_prod_slug"=>"releasehx", "this_prod_vrsn_major"=>"0", "this_prod_vrsn_minor"=>"2", "this_prod_vrsn_majmin"=>"0.2", "this_prod_vrsn_patch"=>"0", "this_prod_vrsn"=>"0.2.0", "next_prod_vrsn"=>"0.3.0", "next_prod_vrsn_majmin"=>"0.3", "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", "docker_run_command"=>"docker run -it --rm --user $(id -u):$(id -g) -v $(pwd):/workdir docopslab/releasehx rhx", "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", "asciisourcerer_www_url"=>"https://raw.githubusercontent.com/DocOps/asciisourcerer", "schemagraphy_www_url"=>"https://raw.githubusercontent.com/DocOps/schemagraphy", "toc"=>"", "toclevels"=>"3", "authorcount"=>0, "toc-position"=>"content"}}
|
|
6
6
|
|
|
7
7
|
SNIPPET_LOOKUP = {"helpscreen"=>"helpscreen.txt"}
|
|
8
8
|
|
|
@@ -137,7 +137,7 @@ Use `releasehx://config/schema` when:
|
|
|
137
137
|
## Potentially unintuitive principles
|
|
138
138
|
|
|
139
139
|
- **“Frontmatter” is controlled in two places (toggle vs template).**
|
|
140
|
-
If you
|
|
140
|
+
If you're trying to *turn frontmatter on/off*, look under `modes.*_frontmatter`. If you're trying to *change what frontmatter contains*, look under `templates.*_frontmatter` (Markdown/AsciiDoc/HTML each have their own). Also note `modes.html_wrap` affects HTML wrapping, which can look like a frontmatter problem when it's really wrapping/boilerplate.
|
|
141
141
|
|
|
142
142
|
- **Links require both a template and an enable switch.**
|
|
143
143
|
Defining URL templates under `links.web.href` / `links.git.href` does nothing by itself. You must also enable display under `history.items.show_issue_links` / `history.items.show_git_links` (or the per-section overrides under changelog/notes items, if present). If a user says “I set the link template but no links appear,” check the `history.*items*` flags.
|
|
@@ -165,6 +165,7 @@ properties:
|
|
|
165
165
|
Must be `issue_body`, `custom_field`, or `commit_message`.
|
|
166
166
|
|
|
167
167
|
Defaults to `issue_body` for GitHub and GitLab, but to `custom_field` for Jira.
|
|
168
|
+
dflt: issue_body
|
|
168
169
|
note_custom_field:
|
|
169
170
|
type: String
|
|
170
171
|
desc: |
|
|
@@ -182,7 +183,8 @@ properties:
|
|
|
182
183
|
Uses Capture group `note` in the Regular Expression to establish the entire note content.
|
|
183
184
|
|
|
184
185
|
See the `conversions.head_pattern` property for details on extracting a heading (`head` in RHYML) from the `note` content.
|
|
185
|
-
dflt: '/^((#|=)+ (Draft )?Release Note
|
|
186
|
+
dflt: '/^(((#|=)+ (Draft )?Release Note.*?)|(<!-- (draft )?release note -->))\n+(?<note>(.|
|
|
187
|
+
)+)/gmi'
|
|
186
188
|
head_pattern:
|
|
187
189
|
type: RegExp
|
|
188
190
|
desc: |
|
|
@@ -201,12 +203,59 @@ properties:
|
|
|
201
203
|
The origin markup format for notes.
|
|
202
204
|
May be `markdown` or `asciidoc`.
|
|
203
205
|
dflt: markdown
|
|
204
|
-
|
|
205
|
-
type: String
|
|
206
|
+
engines:
|
|
206
207
|
desc: |
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
Specifies the conversion engines to use when enriching to various output formats.
|
|
209
|
+
|
|
210
|
+
These settings determine which tool processes the conversion from draft formats to rich output.
|
|
211
|
+
Intelligent defaults are applied based on source format when engines are not explicitly configured.
|
|
212
|
+
properties:
|
|
213
|
+
html:
|
|
214
|
+
type: String
|
|
215
|
+
desc: |
|
|
216
|
+
Engine for converting to HTML format.
|
|
217
|
+
|
|
218
|
+
Valid engines:
|
|
219
|
+
|
|
220
|
+
[horizontal]
|
|
221
|
+
`asciidoctor-html5`:: Standard Asciidoctor HTML5 backend (nested div structure)
|
|
222
|
+
`asciidoctor-html5s`:: Semantic HTML5 backend (cleaner section-based markup)
|
|
223
|
+
`kramdown`:: Kramdown Markdown converter (for Markdown sources)
|
|
224
|
+
`pandoc`:: Universal document converter (if available)
|
|
225
|
+
|
|
226
|
+
When not specified, intelligent defaults apply:
|
|
227
|
+
|
|
228
|
+
- AsciiDoc → HTML: `asciidoctor-html5s` (semantic HTML5)
|
|
229
|
+
- Markdown → HTML: `kramdown`
|
|
230
|
+
- RHYML → HTML: Liquid templates (no engine needed)
|
|
231
|
+
docs: |
|
|
232
|
+
The html5s backend produces cleaner, more semantic HTML with `<section>` elements
|
|
233
|
+
instead of nested `<div class="sect1"><div class="sectionbody">` structures.
|
|
234
|
+
|
|
235
|
+
This is particularly useful when you want to apply custom CSS or when generating
|
|
236
|
+
HTML that will be further processed or embedded in other systems.
|
|
237
|
+
|
|
238
|
+
For backwards compatibility or when you need the traditional Asciidoctor structure,
|
|
239
|
+
use `asciidoctor-html5`.
|
|
240
|
+
pdf:
|
|
241
|
+
type: String
|
|
242
|
+
desc: |
|
|
243
|
+
Engine for converting to PDF format.
|
|
244
|
+
|
|
245
|
+
Valid engines:
|
|
246
|
+
|
|
247
|
+
[horizontal]
|
|
248
|
+
`asciidoctor-pdf`:: Asciidoctor PDF converter (default for AsciiDoc)
|
|
249
|
+
`asciidoctor-web-pdf`:: Web-based PDF converter using headless Chrome
|
|
250
|
+
`pandoc`:: Universal document converter (if available)
|
|
251
|
+
|
|
252
|
+
When not specified, intelligent defaults apply:
|
|
253
|
+
|
|
254
|
+
- AsciiDoc → PDF: `asciidoctor-pdf`
|
|
255
|
+
- Markdown → PDF: `pandoc` (if available)
|
|
256
|
+
docs: |
|
|
257
|
+
The default `asciidoctor-pdf` engine provides excellent typography and layout
|
|
258
|
+
for technical documentation with support for themes, fonts, and advanced formatting.
|
|
210
259
|
|
|
211
260
|
extensions:
|
|
212
261
|
desc: Default file extensions.
|
|
@@ -835,7 +884,7 @@ properties:
|
|
|
835
884
|
desc: |
|
|
836
885
|
Default settings for `rhx` command executions.
|
|
837
886
|
properties:
|
|
838
|
-
|
|
887
|
+
html_wrap:
|
|
839
888
|
type: Boolean
|
|
840
889
|
desc: |
|
|
841
890
|
Include (or exclude) head, header, and footer elements when enriching to HTML.
|
|
@@ -860,6 +909,7 @@ properties:
|
|
|
860
909
|
Include frontmatter in AsciiDoc drafts.
|
|
861
910
|
|
|
862
911
|
Uses the `templates.asciidoc_frontmatter` template.
|
|
912
|
+
dflt: false
|
|
863
913
|
fetch:
|
|
864
914
|
type: String
|
|
865
915
|
desc: |
|
|
@@ -1041,6 +1091,74 @@ properties:
|
|
|
1041
1091
|
|
|
1042
1092
|
It may include `{{ title }}`, `{{ version }}`, `{{ date }}`, as well as any `vars`-scoped variables as you pass in.
|
|
1043
1093
|
dflt: *markdown_frontmatter_tplt
|
|
1094
|
+
html_framework:
|
|
1095
|
+
type: String
|
|
1096
|
+
desc: |
|
|
1097
|
+
The HTML framework to use when enriching to HTML.
|
|
1098
|
+
|
|
1099
|
+
Valid entries:
|
|
1100
|
+
|
|
1101
|
+
[horizontal]
|
|
1102
|
+
`bare`:: minimal HTML structure
|
|
1103
|
+
`bootstrap4`:: Bootstrap 4 framework
|
|
1104
|
+
`bootstrap5`:: Bootstrap 5 framework
|
|
1105
|
+
dflt: bare
|
|
1106
|
+
styling:
|
|
1107
|
+
desc: |
|
|
1108
|
+
Configuration options for HTML styling and CSS framework integration.
|
|
1109
|
+
properties:
|
|
1110
|
+
mode:
|
|
1111
|
+
type: String
|
|
1112
|
+
desc: |
|
|
1113
|
+
The HTML styling approach to use when generating wrapped HTML output.
|
|
1114
|
+
|
|
1115
|
+
Valid options:
|
|
1116
|
+
|
|
1117
|
+
* `minimal` -- Basic semantic HTML with minimal inline styles
|
|
1118
|
+
* `embedded` -- Include comprehensive CSS in `<style>` block
|
|
1119
|
+
* `external` -- Reference external stylesheet via `<link>` tag
|
|
1120
|
+
* `framework` -- Use configured CSS framework only (Bootstrap, etc.)
|
|
1121
|
+
|
|
1122
|
+
When `mode: framework`, styling relies entirely on the configured CSS framework.
|
|
1123
|
+
When `mode: embedded`, CSS is included inline for standalone HTML files.
|
|
1124
|
+
When `mode: external`, a custom CSS file must be provided via `css_url`.
|
|
1125
|
+
dflt: framework
|
|
1126
|
+
theme:
|
|
1127
|
+
type: String
|
|
1128
|
+
desc: |
|
|
1129
|
+
The visual theme variant to apply to HTML output.
|
|
1130
|
+
|
|
1131
|
+
Built-in themes:
|
|
1132
|
+
|
|
1133
|
+
* `default` -- Standard professional appearance
|
|
1134
|
+
* `compact` -- Reduced spacing and condensed layout
|
|
1135
|
+
* `detailed` -- Enhanced metadata display with expanded information
|
|
1136
|
+
|
|
1137
|
+
Theme selection affects spacing, typography, and metadata prominence.
|
|
1138
|
+
dflt: default
|
|
1139
|
+
embed_css:
|
|
1140
|
+
type: Boolean
|
|
1141
|
+
desc: |
|
|
1142
|
+
Include comprehensive CSS directly in the HTML `<style>` block.
|
|
1143
|
+
|
|
1144
|
+
When enabled, generates standalone HTML files that display correctly
|
|
1145
|
+
without external dependencies. CSS includes framework customizations,
|
|
1146
|
+
responsive design rules, and print optimizations.
|
|
1147
|
+
|
|
1148
|
+
Automatically enabled when `mode: embedded`.
|
|
1149
|
+
dflt: false
|
|
1150
|
+
css_url:
|
|
1151
|
+
type: String
|
|
1152
|
+
desc: |
|
|
1153
|
+
URL or path to external CSS stylesheet for custom styling.
|
|
1154
|
+
|
|
1155
|
+
When `mode: external`, this stylesheet is linked via `<link rel="stylesheet">`.
|
|
1156
|
+
Can be a relative path, absolute URL, or CDN link.
|
|
1157
|
+
|
|
1158
|
+
Example: `assets/custom-releasehx.css` or `https://example.com/styles.css`
|
|
1159
|
+
|
|
1160
|
+
When provided, framework CSS and embedded CSS are disabled.
|
|
1161
|
+
dflt: null
|
|
1044
1162
|
items:
|
|
1045
1163
|
desc: |
|
|
1046
1164
|
Settings pertaining to displayed items across Changelog and Release Notes sections.
|
|
@@ -1162,7 +1280,7 @@ properties:
|
|
|
1162
1280
|
The label to use for the _singular_ part/component affected by the change, when only one part is permitted.
|
|
1163
1281
|
|
|
1164
1282
|
This value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or when the change has only one part _and_ <<conf_ppty_history_labeling_singularize_labels>> is `true`.
|
|
1165
|
-
dflt:
|
|
1283
|
+
dflt: Component
|
|
1166
1284
|
parts_icon:
|
|
1167
1285
|
type: String
|
|
1168
1286
|
desc: |
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
:page-permalink: /config-reference/
|
|
3
|
-
:page-nav_order: 2
|
|
4
|
-
:page-title: Configuration Reference
|
|
1
|
+
|
|
5
2
|
|
|
6
3
|
[[conf_ppty_DOLLARSIGN_meta,config.$meta]]
|
|
7
4
|
$meta::
|
|
@@ -359,6 +356,9 @@ Defaults to `issue_body` for GitHub and GitLab, but to `custom_field` for Jira.
|
|
|
359
356
|
|
|
360
357
|
[horizontal]
|
|
361
358
|
type;; String
|
|
359
|
+
default;;
|
|
360
|
+
+
|
|
361
|
+
`+++issue_body+++`
|
|
362
362
|
path;; `xref:conf_ppty_conversions_note[config.conversions.note]`
|
|
363
363
|
--
|
|
364
364
|
|
|
@@ -395,7 +395,7 @@ type;; RegExp
|
|
|
395
395
|
default;;
|
|
396
396
|
+
|
|
397
397
|
....
|
|
398
|
-
/^((#|=)+ (Draft )?Release Note
|
|
398
|
+
/^(((#|=)+ (Draft )?Release Note.*?)|(<!-- (draft )?release note -->))\n+(?<note>(.| )+)/gmi
|
|
399
399
|
....
|
|
400
400
|
path;; `xref:conf_ppty_conversions_note_pattern[config.conversions.note_pattern]`
|
|
401
401
|
--
|
|
@@ -438,18 +438,80 @@ default;;
|
|
|
438
438
|
path;; `xref:conf_ppty_conversions_markup[config.conversions.markup]`
|
|
439
439
|
--
|
|
440
440
|
|
|
441
|
-
[[
|
|
442
|
-
conversions.
|
|
441
|
+
[[conf_ppty_conversions_engines,config.conversions.engines]]
|
|
442
|
+
conversions.engines:::
|
|
443
|
+
+
|
|
444
|
+
--
|
|
445
|
+
Specifies the conversion engines to use when enriching to various output formats.
|
|
446
|
+
|
|
447
|
+
These settings determine which tool processes the conversion from draft formats to rich output.
|
|
448
|
+
Intelligent defaults are applied based on source format when engines are not explicitly configured.
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
[horizontal]
|
|
452
|
+
path;; `xref:conf_ppty_conversions_engines[config.conversions.engines]`
|
|
453
|
+
--
|
|
454
|
+
|
|
455
|
+
[[conf_ppty_conversions_engines_html,config.conversions.engines.html]]
|
|
456
|
+
conversions.engines.html::::
|
|
457
|
+
+
|
|
458
|
+
--
|
|
459
|
+
Engine for converting to HTML format.
|
|
460
|
+
|
|
461
|
+
Valid engines:
|
|
462
|
+
|
|
463
|
+
[horizontal]
|
|
464
|
+
`asciidoctor-html5`:: Standard Asciidoctor HTML5 backend (nested div structure)
|
|
465
|
+
`asciidoctor-html5s`:: Semantic HTML5 backend (cleaner section-based markup)
|
|
466
|
+
`kramdown`:: Kramdown Markdown converter (for Markdown sources)
|
|
467
|
+
`pandoc`:: Universal document converter (if available)
|
|
468
|
+
|
|
469
|
+
When not specified, intelligent defaults apply:
|
|
470
|
+
|
|
471
|
+
- AsciiDoc → HTML: `asciidoctor-html5s` (semantic HTML5)
|
|
472
|
+
- Markdown → HTML: `kramdown`
|
|
473
|
+
- RHYML → HTML: Liquid templates (no engine needed)
|
|
474
|
+
|
|
475
|
+
The html5s backend produces cleaner, more semantic HTML with `<section>` elements
|
|
476
|
+
instead of nested `<div class="sect1"><div class="sectionbody">` structures.
|
|
477
|
+
|
|
478
|
+
This is particularly useful when you want to apply custom CSS or when generating
|
|
479
|
+
HTML that will be further processed or embedded in other systems.
|
|
480
|
+
|
|
481
|
+
For backwards compatibility or when you need the traditional Asciidoctor structure,
|
|
482
|
+
use `asciidoctor-html5`.
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
[horizontal]
|
|
486
|
+
type;; String
|
|
487
|
+
path;; `xref:conf_ppty_conversions_engines_html[config.conversions.engines.html]`
|
|
488
|
+
--
|
|
489
|
+
|
|
490
|
+
[[conf_ppty_conversions_engines_pdf,config.conversions.engines.pdf]]
|
|
491
|
+
conversions.engines.pdf::::
|
|
443
492
|
+
|
|
444
493
|
--
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
494
|
+
Engine for converting to PDF format.
|
|
495
|
+
|
|
496
|
+
Valid engines:
|
|
497
|
+
|
|
498
|
+
[horizontal]
|
|
499
|
+
`asciidoctor-pdf`:: Asciidoctor PDF converter (default for AsciiDoc)
|
|
500
|
+
`asciidoctor-web-pdf`:: Web-based PDF converter using headless Chrome
|
|
501
|
+
`pandoc`:: Universal document converter (if available)
|
|
502
|
+
|
|
503
|
+
When not specified, intelligent defaults apply:
|
|
504
|
+
|
|
505
|
+
- AsciiDoc → PDF: `asciidoctor-pdf`
|
|
506
|
+
- Markdown → PDF: `pandoc` (if available)
|
|
507
|
+
|
|
508
|
+
The default `asciidoctor-pdf` engine provides excellent typography and layout
|
|
509
|
+
for technical documentation with support for themes, fonts, and advanced formatting.
|
|
448
510
|
|
|
449
511
|
|
|
450
512
|
[horizontal]
|
|
451
513
|
type;; String
|
|
452
|
-
path;; `xref:
|
|
514
|
+
path;; `xref:conf_ppty_conversions_engines_pdf[config.conversions.engines.pdf]`
|
|
453
515
|
--
|
|
454
516
|
|
|
455
517
|
[[conf_ppty_extensions,config.extensions]]
|
|
@@ -2497,8 +2559,8 @@ Default settings for `rhx` command executions.
|
|
|
2497
2559
|
path;; `xref:conf_ppty_modes[config.modes]`
|
|
2498
2560
|
--
|
|
2499
2561
|
|
|
2500
|
-
[[
|
|
2501
|
-
modes.
|
|
2562
|
+
[[conf_ppty_modes_html_wrap,config.modes.html_wrap]]
|
|
2563
|
+
modes.html_wrap:::
|
|
2502
2564
|
+
|
|
2503
2565
|
--
|
|
2504
2566
|
Include (or exclude) head, header, and footer elements when enriching to HTML.
|
|
@@ -2509,7 +2571,7 @@ type;; Boolean
|
|
|
2509
2571
|
default;;
|
|
2510
2572
|
+
|
|
2511
2573
|
`+++false+++`
|
|
2512
|
-
path;; `xref:
|
|
2574
|
+
path;; `xref:conf_ppty_modes_html_wrap[config.modes.html_wrap]`
|
|
2513
2575
|
--
|
|
2514
2576
|
|
|
2515
2577
|
[[conf_ppty_modes_html_frontmatter,config.modes.html_frontmatter]]
|
|
@@ -2557,6 +2619,9 @@ Uses the `templates.asciidoc_frontmatter` template.
|
|
|
2557
2619
|
|
|
2558
2620
|
[horizontal]
|
|
2559
2621
|
type;; Boolean
|
|
2622
|
+
default;;
|
|
2623
|
+
+
|
|
2624
|
+
`+++false+++`
|
|
2560
2625
|
path;; `xref:conf_ppty_modes_asciidoc_frontmatter[config.modes.asciidoc_frontmatter]`
|
|
2561
2626
|
--
|
|
2562
2627
|
|
|
@@ -2871,6 +2936,128 @@ date: {{ release.date }}
|
|
|
2871
2936
|
path;; `xref:conf_ppty_history_html_frontmatter[config.history.html_frontmatter]`
|
|
2872
2937
|
--
|
|
2873
2938
|
|
|
2939
|
+
[[conf_ppty_history_html_framework,config.history.html_framework]]
|
|
2940
|
+
history.html_framework:::
|
|
2941
|
+
+
|
|
2942
|
+
--
|
|
2943
|
+
The HTML framework to use when enriching to HTML.
|
|
2944
|
+
|
|
2945
|
+
Valid entries:
|
|
2946
|
+
|
|
2947
|
+
[horizontal]
|
|
2948
|
+
`bare`:: minimal HTML structure
|
|
2949
|
+
`bootstrap4`:: Bootstrap 4 framework
|
|
2950
|
+
`bootstrap5`:: Bootstrap 5 framework
|
|
2951
|
+
|
|
2952
|
+
|
|
2953
|
+
[horizontal]
|
|
2954
|
+
type;; String
|
|
2955
|
+
default;;
|
|
2956
|
+
+
|
|
2957
|
+
`+++bare+++`
|
|
2958
|
+
path;; `xref:conf_ppty_history_html_framework[config.history.html_framework]`
|
|
2959
|
+
--
|
|
2960
|
+
|
|
2961
|
+
[[conf_ppty_history_styling,config.history.styling]]
|
|
2962
|
+
history.styling:::
|
|
2963
|
+
+
|
|
2964
|
+
--
|
|
2965
|
+
Configuration options for HTML styling and CSS framework integration.
|
|
2966
|
+
|
|
2967
|
+
|
|
2968
|
+
[horizontal]
|
|
2969
|
+
path;; `xref:conf_ppty_history_styling[config.history.styling]`
|
|
2970
|
+
--
|
|
2971
|
+
|
|
2972
|
+
[[conf_ppty_history_styling_mode,config.history.styling.mode]]
|
|
2973
|
+
history.styling.mode::::
|
|
2974
|
+
+
|
|
2975
|
+
--
|
|
2976
|
+
The HTML styling approach to use when generating wrapped HTML output.
|
|
2977
|
+
|
|
2978
|
+
Valid options:
|
|
2979
|
+
|
|
2980
|
+
* `minimal` -- Basic semantic HTML with minimal inline styles
|
|
2981
|
+
* `embedded` -- Include comprehensive CSS in `<style>` block
|
|
2982
|
+
* `external` -- Reference external stylesheet via `<link>` tag
|
|
2983
|
+
* `framework` -- Use configured CSS framework only (Bootstrap, etc.)
|
|
2984
|
+
|
|
2985
|
+
When `mode: framework`, styling relies entirely on the configured CSS framework.
|
|
2986
|
+
When `mode: embedded`, CSS is included inline for standalone HTML files.
|
|
2987
|
+
When `mode: external`, a custom CSS file must be provided via `css_url`.
|
|
2988
|
+
|
|
2989
|
+
|
|
2990
|
+
[horizontal]
|
|
2991
|
+
type;; String
|
|
2992
|
+
default;;
|
|
2993
|
+
+
|
|
2994
|
+
`+++framework+++`
|
|
2995
|
+
path;; `xref:conf_ppty_history_styling_mode[config.history.styling.mode]`
|
|
2996
|
+
--
|
|
2997
|
+
|
|
2998
|
+
[[conf_ppty_history_styling_theme,config.history.styling.theme]]
|
|
2999
|
+
history.styling.theme::::
|
|
3000
|
+
+
|
|
3001
|
+
--
|
|
3002
|
+
The visual theme variant to apply to HTML output.
|
|
3003
|
+
|
|
3004
|
+
Built-in themes:
|
|
3005
|
+
|
|
3006
|
+
* `default` -- Standard professional appearance
|
|
3007
|
+
* `compact` -- Reduced spacing and condensed layout
|
|
3008
|
+
* `detailed` -- Enhanced metadata display with expanded information
|
|
3009
|
+
|
|
3010
|
+
Theme selection affects spacing, typography, and metadata prominence.
|
|
3011
|
+
|
|
3012
|
+
|
|
3013
|
+
[horizontal]
|
|
3014
|
+
type;; String
|
|
3015
|
+
default;;
|
|
3016
|
+
+
|
|
3017
|
+
`+++default+++`
|
|
3018
|
+
path;; `xref:conf_ppty_history_styling_theme[config.history.styling.theme]`
|
|
3019
|
+
--
|
|
3020
|
+
|
|
3021
|
+
[[conf_ppty_history_styling_embed_css,config.history.styling.embed_css]]
|
|
3022
|
+
history.styling.embed_css::::
|
|
3023
|
+
+
|
|
3024
|
+
--
|
|
3025
|
+
Include comprehensive CSS directly in the HTML `<style>` block.
|
|
3026
|
+
|
|
3027
|
+
When enabled, generates standalone HTML files that display correctly
|
|
3028
|
+
without external dependencies. CSS includes framework customizations,
|
|
3029
|
+
responsive design rules, and print optimizations.
|
|
3030
|
+
|
|
3031
|
+
Automatically enabled when `mode: embedded`.
|
|
3032
|
+
|
|
3033
|
+
|
|
3034
|
+
[horizontal]
|
|
3035
|
+
type;; Boolean
|
|
3036
|
+
default;;
|
|
3037
|
+
+
|
|
3038
|
+
`+++false+++`
|
|
3039
|
+
path;; `xref:conf_ppty_history_styling_embed_css[config.history.styling.embed_css]`
|
|
3040
|
+
--
|
|
3041
|
+
|
|
3042
|
+
[[conf_ppty_history_styling_css_url,config.history.styling.css_url]]
|
|
3043
|
+
history.styling.css_url::::
|
|
3044
|
+
+
|
|
3045
|
+
--
|
|
3046
|
+
URL or path to external CSS stylesheet for custom styling.
|
|
3047
|
+
|
|
3048
|
+
When `mode: external`, this stylesheet is linked via `<link rel="stylesheet">`.
|
|
3049
|
+
Can be a relative path, absolute URL, or CDN link.
|
|
3050
|
+
|
|
3051
|
+
Example: `assets/custom-releasehx.css` or `https://example.com/styles.css`
|
|
3052
|
+
|
|
3053
|
+
When provided, framework CSS and embedded CSS are disabled.
|
|
3054
|
+
|
|
3055
|
+
|
|
3056
|
+
[horizontal]
|
|
3057
|
+
type;; String
|
|
3058
|
+
path;; `xref:conf_ppty_history_styling_css_url[config.history.styling.css_url]`
|
|
3059
|
+
--
|
|
3060
|
+
|
|
2874
3061
|
[[conf_ppty_history_items,config.history.items]]
|
|
2875
3062
|
history.items:::
|
|
2876
3063
|
+
|
|
@@ -3161,7 +3348,7 @@ This value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or
|
|
|
3161
3348
|
type;; String
|
|
3162
3349
|
default;;
|
|
3163
3350
|
+
|
|
3164
|
-
`+++
|
|
3351
|
+
`+++Component+++`
|
|
3165
3352
|
path;; `xref:conf_ppty_history_labeling_part_label[config.history.labeling.part_label]`
|
|
3166
3353
|
--
|
|
3167
3354
|
|
|
@@ -4101,4 +4288,4 @@ default;;
|
|
|
4101
4288
|
+
|
|
4102
4289
|
`+++false+++`
|
|
4103
4290
|
path;; `xref:conf_ppty_notes_items_show_auths_label[config.notes.items.show_auths_label]`
|
|
4104
|
-
--
|
|
4291
|
+
--
|