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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +363 -330
  3. data/build/docs/_config.yml +1 -0
  4. data/build/docs/_release_index.adoc +3 -2
  5. data/build/docs/config-reference.adoc +197 -10
  6. data/build/docs/config-reference.json +56 -7
  7. data/build/docs/index.adoc +315 -59
  8. data/build/docs/landing.adoc +1 -1
  9. data/build/docs/manpage.adoc +2 -2
  10. data/build/docs/release-procedure.adoc +365 -0
  11. data/build/docs/release-procedure.html +87 -0
  12. data/build/docs/releasehx.1 +17 -5
  13. data/build/docs/sample-config.yml +14 -7
  14. data/lib/releasehx/cli.rb +5 -2
  15. data/lib/releasehx/configuration.rb +0 -1
  16. data/lib/releasehx/generated.rb +1 -1
  17. data/lib/releasehx/mcp/assets/agent-config-guide.md +1 -1
  18. data/lib/releasehx/mcp/assets/config-def.yml +122 -6
  19. data/lib/releasehx/mcp/assets/config-reference.adoc +197 -10
  20. data/lib/releasehx/mcp/assets/config-reference.json +56 -7
  21. data/lib/releasehx/mcp/assets/sample-config.yml +14 -7
  22. data/lib/releasehx/mcp/server.rb +0 -1
  23. data/lib/releasehx/ops/enrich_ops.rb +161 -55
  24. data/lib/releasehx/ops/template_ops.rb +1 -1
  25. data/lib/releasehx/rhyml/adapter.rb +0 -3
  26. data/lib/releasehx/rhyml/templates/bootstrap-overrides.css +15 -0
  27. data/lib/releasehx/rhyml/templates/changelog.adoc.liquid +2 -0
  28. data/lib/releasehx/rhyml/templates/changelog.html.liquid +6 -4
  29. data/lib/releasehx/rhyml/templates/changelog.md.liquid +1 -0
  30. data/lib/releasehx/rhyml/templates/embedded.css.liquid +263 -0
  31. data/lib/releasehx/rhyml/templates/entry.adoc.liquid +1 -0
  32. data/lib/releasehx/rhyml/templates/entry.html.liquid +21 -20
  33. data/lib/releasehx/rhyml/templates/entry.md.liquid +15 -21
  34. data/lib/releasehx/rhyml/templates/head-parser.liquid +6 -2
  35. data/lib/releasehx/rhyml/templates/header.liquid +13 -4
  36. data/lib/releasehx/rhyml/templates/history.html.liquid +152 -33
  37. data/lib/releasehx/rhyml/templates/metadata-entry.adoc.liquid +83 -38
  38. data/lib/releasehx/rhyml/templates/metadata-entry.html.liquid +60 -1
  39. data/lib/releasehx/rhyml/templates/metadata-entry.md.liquid +65 -113
  40. data/lib/releasehx/rhyml/templates/metadata-note.adoc.liquid +83 -38
  41. data/lib/releasehx/rhyml/templates/metadata-note.html.liquid +59 -22
  42. data/lib/releasehx/rhyml/templates/metadata-note.md.liquid +68 -23
  43. data/lib/releasehx/rhyml/templates/note.html.liquid +25 -19
  44. data/lib/releasehx/rhyml/templates/note.md.liquid +44 -26
  45. data/lib/releasehx/rhyml/templates/release-notes.adoc.liquid +2 -0
  46. data/lib/releasehx/rhyml/templates/release-notes.html.liquid +6 -4
  47. data/lib/releasehx/rhyml/templates/release-notes.md.liquid +1 -0
  48. data/lib/releasehx/rhyml/templates/release.adoc.liquid +2 -0
  49. data/lib/releasehx/rhyml/templates/release.md.liquid +8 -7
  50. data/lib/releasehx/rhyml/templates/rhyml-change.yaml.liquid +36 -36
  51. data/lib/releasehx/rhyml/templates/wrapper.html.liquid +103 -0
  52. data/lib/releasehx/sgyml/helpers.rb +0 -2
  53. data/lib/releasehx/transforms/adf_to_markdown.rb +1 -1
  54. data/lib/releasehx/version.rb +0 -2
  55. data/lib/releasehx.rb +2 -2
  56. data/specs/data/config-def.yml +122 -6
  57. metadata +48 -25
  58. data/build/docs/schemagraphy_readme.html +0 -0
  59. data/build/docs/sourcerer_readme.html +0 -46
  60. data/lib/schemagraphy/attribute_resolver.rb +0 -48
  61. data/lib/schemagraphy/cfgyml/definition.rb +0 -90
  62. data/lib/schemagraphy/cfgyml/doc_builder.rb +0 -52
  63. data/lib/schemagraphy/cfgyml/path_reference.rb +0 -24
  64. data/lib/schemagraphy/data_query/json_pointer.rb +0 -42
  65. data/lib/schemagraphy/loader.rb +0 -59
  66. data/lib/schemagraphy/regexp_utils.rb +0 -235
  67. data/lib/schemagraphy/safe_expression.rb +0 -189
  68. data/lib/schemagraphy/schema_utils.rb +0 -124
  69. data/lib/schemagraphy/tag_utils.rb +0 -32
  70. data/lib/schemagraphy/templating.rb +0 -104
  71. data/lib/schemagraphy.rb +0 -17
  72. data/lib/sourcerer/builder.rb +0 -120
  73. data/lib/sourcerer/jekyll/bootstrapper.rb +0 -78
  74. data/lib/sourcerer/jekyll/liquid/file_system.rb +0 -74
  75. data/lib/sourcerer/jekyll/liquid/filters.rb +0 -215
  76. data/lib/sourcerer/jekyll/liquid/tags.rb +0 -44
  77. data/lib/sourcerer/jekyll/monkeypatches.rb +0 -73
  78. data/lib/sourcerer/jekyll.rb +0 -26
  79. data/lib/sourcerer/plaintext_converter.rb +0 -75
  80. data/lib/sourcerer/templating.rb +0 -190
  81. data/lib/sourcerer.rb +0 -322
@@ -0,0 +1,365 @@
1
+ = ReleaseHx Release Procedure
2
+
3
+ This document outlines the step-by-step procedure for releasing a new version of ReleaseHx.
4
+
5
+ It covers all stages from pre-release checks to post-release verification.
6
+
7
+
8
+ [[prerequisites]]
9
+ == Prerequisites
10
+
11
+ - [ ] All changes merged to `release/0.x` branch
12
+ - [ ] Version numbers updated in README.adoc attributes (`:this_prod_vrsn_major:` through `:next_prod_vrsn_majmin:`)
13
+ - [ ] Release notes prepared in `docs/release/0.x.y.adoc`
14
+ - [ ] Clean working tree on `release/0.x`
15
+ - [ ] RubyGems credentials configured (`~/.gem/credentials`)
16
+ - [ ] Docker Hub credentials configured (`docker login`)
17
+
18
+
19
+ [[release-stages]]
20
+ == Release Stages
21
+
22
+ [[stage-pre-flight-checks]]
23
+ === Stage {counter:stage}: Pre-flight Checks
24
+
25
+ Verify CI/CD Setup::
26
+ +
27
+ [source,bash]
28
+ ----
29
+ # Check workflows exist
30
+ ls .github/workflows/
31
+ # Should see: ci-cd.yml, gh-pages.yml, docs-qa.yml
32
+ ----
33
+
34
+ Check Current State::
35
+ +
36
+ [source,bash]
37
+ ----
38
+ # Verify branch and clean status
39
+ git status
40
+ # Should be on release/0.x with clean working tree
41
+ ----
42
+
43
+ Run Test Suite::
44
+ +
45
+ [source,bash]
46
+ ----
47
+ bundle exec rake rspec
48
+ # All tests must pass
49
+ ----
50
+
51
+ Confirm demo builds in releasehx-demo repo::
52
+ +
53
+ [source,bash]
54
+ ----
55
+ cd ../releasehx-demo
56
+ ./dev-install.sh
57
+ bundle exec rake test:yaml
58
+ bundle exec rake test:cli
59
+ bundle exec rake test:readme
60
+ bundle exec rake test:dynamic
61
+ bundle exec rake test:content
62
+ ----
63
+
64
+ Check demo test results::
65
+ +
66
+ [source,bash]
67
+ ----
68
+ # View test output directories
69
+ ls -lh __tests/
70
+ # Should contain: cli/, readme/, dynamic/, validation/
71
+
72
+ # Check for errors in output
73
+ grep -i error __tests/*/*.log 2>/dev/null || echo "No errors found"
74
+
75
+ # Spot-check generated files
76
+ ls -lh __output/drafts/
77
+ ls -lh __output/publish/
78
+ ----
79
+
80
+ Demo Repo Release Readiness::
81
+
82
+ - [ ] YAML validation passes
83
+ (`yaml_test`)
84
+ - [ ] CLI workflows pass (`cli_test`)
85
+ - [ ] README testable commands pass (`readme_test`)
86
+ - [ ] Dynamic test matrix passes (`dynamic_test`)
87
+ - [ ] Content validation passes (`validate_content`)
88
+ - [ ] Test output
89
+ directories contain no errors
90
+ - [ ] Generated files present in
91
+ __output/
92
+
93
+ Test Docker Build::
94
+ +
95
+ [source,bash]
96
+ ----
97
+ bundle exec rake build:image
98
+ # Note: This creates/updates the buildx builder and tests the build
99
+ # May need to recreate builder after Docker updates: docker buildx rm releasehx-builder
100
+ ----
101
+
102
+ Verify Version Numbers::
103
+ +
104
+ [source,bash]
105
+ ----
106
+ # Check version in README.adoc
107
+ grep ":this_prod_vrsn" README.adoc
108
+ # Verify lib/releasehx/version.rb reads from README attributes
109
+ grep "VERSION" lib/releasehx/version.rb
110
+ ----
111
+
112
+ Verify Gemfile::
113
+ +
114
+ [source,bash]
115
+ ----
116
+ # Ensure no local path dependencies
117
+ grep -E "path:|git:" Gemfile
118
+ # Should be empty
119
+ ----
120
+
121
+ Confirm Release Notes::
122
+ +
123
+ [source,bash]
124
+ ----
125
+ # Verify release notes file exists
126
+ ls -lh docs/release/0.x.y.adoc
127
+ ----
128
+
129
+ [[stage-build-artifacts]]
130
+ === Stage {counter:stage}: Build Artifacts
131
+
132
+ Build Gem Package::
133
+ +
134
+ [source,bash]
135
+ ----
136
+ bundle exec rake build:gem
137
+ ----
138
+
139
+ Verify Gem Package::
140
+ +
141
+ [source,bash]
142
+ ----
143
+ ls -lh pkg/releasehx-*.gem
144
+ # Confirm version number is correct
145
+ ----
146
+
147
+ [[stage-create-pull-request]]
148
+ === Stage {counter:stage}: Create Pull Request
149
+
150
+ Push Release Branch::
151
+ +
152
+ [source,bash]
153
+ ----
154
+ git push origin release/0.x
155
+ ----
156
+
157
+ Create Pull Request::
158
+ * Via GitHub UI:
159
+ https://github.com/DocOps/releasehx/compare/main…release/0.x
160
+ * Title:
161
+ Release 0.x.y
162
+ * Body: (leave empty); wait for CI tests to pass.
163
+
164
+ Merge Strategy::
165
+ Use "`Create a merge commit`" (NOT squash or rebase).
166
+ This preserves commit history and allows future PRs from the same
167
+ branch
168
+
169
+ [[stage-tag-release]]
170
+ === Stage {counter:stage}: Tag Release
171
+
172
+ Update Local Main Branch::
173
+ +
174
+ [source,bash]
175
+ ----
176
+ git checkout main
177
+ git pull origin main
178
+ ----
179
+
180
+ Create and Push Tag::
181
+ +
182
+ [source,bash]
183
+ ----
184
+ git tag -a v0.x.y -m "Release 0.x.y"
185
+ git push origin v0.x.y
186
+ ----
187
+
188
+ NOTE: GitHub Pages workflow will auto-deploy docs when tag is pushed.
189
+
190
+ [[stage-sync-release]]
191
+ === Stage {counter:stage}: Sync Release Branch (Optional but Recommended)
192
+
193
+ Cherry-pick Any Post-Merge Fixes::
194
+ If you made any fixes to release notes or docs on main after the merge:
195
+ +
196
+ [source,bash]
197
+ ----
198
+ git checkout release/0.x
199
+ git cherry-pick <commit-sha>
200
+ git push origin release/0.x
201
+ ----
202
+
203
+ [[stage-publish-gem-to-rubygems]]
204
+ === Stage {counter:stage}: Publish Gem to RubyGems
205
+
206
+ [source,bash]
207
+ ----
208
+ gem push pkg/releasehx-0.x.y.gem
209
+ # Enter OTP code from authenticator when prompted
210
+ ----
211
+
212
+ Verify Publication::
213
+ +
214
+ [source,bash]
215
+ ----
216
+ # Check on RubyGems.org
217
+ open https://rubygems.org/gems/releasehx
218
+ ----
219
+
220
+ [[stage-publish-docker-image]]
221
+ === Stage {counter:stage}: Publish Docker Image
222
+
223
+ Build and Load Image::
224
+ +
225
+ [source,bash]
226
+ ----
227
+ docker buildx build --platform linux/amd64 \
228
+ --build-arg RELEASEHX_VERSION=0.x.y \
229
+ -t docopslab/releasehx:latest \
230
+ -t docopslab/releasehx:0.x.y \
231
+ --load \
232
+ .
233
+ ----
234
+
235
+ Push Images::
236
+ +
237
+ [source,bash]
238
+ ----
239
+ docker push docopslab/releasehx:0.x.y
240
+ docker push docopslab/releasehx:latest
241
+ ----
242
+
243
+ Verify Publication::
244
+ +
245
+ [source,bash]
246
+ ----
247
+ # Check on Docker Hub
248
+ open https://hub.docker.com/r/docopslab/releasehx
249
+ ----
250
+
251
+ [[stage-publish-issuer-rhx]]
252
+ === Stage {counter:stage}: Publish issuer-rhx Docker Image
253
+
254
+ Follow the Release Process documented in the https://github.com/DocOps/issuer-rhx[issuer-rhx] repo's `README.adoc`.
255
+
256
+
257
+ [[stage-create-github-release]]
258
+ === Stage {counter:stage}: Create GitHub Release
259
+
260
+ Via GitHub UI (recommended)::
261
+ . Go to:
262
+ https://github.com/DocOps/releasehx/releases/new
263
+ . Select tag: v0.x.y
264
+ . Title: ReleaseHx 0.x.y
265
+ . Description:
266
+ See release notes at `https://releasehx.docopslab.org/docs/releases/`
267
+ . Upload: `pkg/releasehx-0.x.y.gem`
268
+ . Click "`Publish release`"
269
+
270
+ Via CLI (if permissions allow)::
271
+ +
272
+ [source,bash]
273
+ ----
274
+ gh release create v0.x.y pkg/releasehx-0.x.y.gem \
275
+ --title "ReleaseHx 0.x.y" \
276
+ --notes "See release notes at https://releasehx.docopslab.org/docs/releases/"
277
+ ----
278
+
279
+ [[stage-release-verification]]
280
+ === Stage {counter:stage}: Post-Release Verification
281
+
282
+ Test Gem Installation::
283
+ +
284
+ [source,bash]
285
+ ----
286
+ gem install releasehx --version 0.x.y
287
+ rhx --version
288
+ # Should show: 0.x.y
289
+ ----
290
+
291
+ Test Docker Image::
292
+ +
293
+ [source,bash]
294
+ ----
295
+ docker pull docopslab/releasehx:0.x.y
296
+ docker run --rm docopslab/releasehx:0.x.y rhx --version
297
+ # Should show: 0.x.y
298
+ ----
299
+
300
+ Verify Documentation::
301
+ +
302
+ [source,bash]
303
+ ----
304
+ # Check that docs are live
305
+ open https://releasehx.docopslab.org/docs/releases/
306
+ # Should show 0.x.y release notes
307
+ ----
308
+
309
+ [[stage-post-release-cleanup-optional]]
310
+ === Stage {counter:stage}: Post-Release Cleanup (Optional)
311
+
312
+ Update Version for Next Release::
313
+ Edit `README.adoc` to increment patch version; commit on `release/0.x` branch
314
+
315
+ Notify Stakeholders::
316
+ Post announcement in relevant channels; update downstream projects
317
+
318
+
319
+ [[troubleshooting]]
320
+ == Troubleshooting
321
+
322
+ [[docker-buildkit-issues]]
323
+ === Docker BuildKit Issues
324
+
325
+ If you encounter TLS certificate errors with buildx:
326
+
327
+ [source,bash]
328
+ ----
329
+ # Remove stale builder
330
+ docker buildx rm releasehx-builder
331
+
332
+ # Recreate builder (Rakefile will do this automatically)
333
+ bundle exec rake build:image
334
+ ----
335
+
336
+ [[mfa-otp-issues]]
337
+ === MFA/OTP Issues with RubyGems
338
+
339
+ * Get fresh OTP code from authenticator app
340
+ * Code expires quickly; have app ready before running `gem push`
341
+
342
+ [[github-cli-permission-issues]]
343
+ === GitHub CLI Permission Issues
344
+
345
+ If `gh` CLI lacks permissions::
346
+
347
+ * Use GitHub web UI for creating PRs and
348
+ Releases
349
+ * Upload gem file manually in Release creation form
350
+
351
+
352
+ [[branch-strategy]]
353
+ == Branch Strategy
354
+
355
+ Long-lived Branch (`release/0.x`)::
356
+ * Used for all 0.x.y patch releases
357
+ * PR to main for each release
358
+ * Merge commits preserve history
359
+ * Continue development on same branch
360
+
361
+ Tagging::
362
+ Tags created on `main` branch after merge
363
+
364
+ Documentation::
365
+ Auto-deploys from `main` via GitHub Actions
@@ -0,0 +1,87 @@
1
+ <h1>ReleaseHx Release Procedure</h1>
2
+
3
+ <section id="preamble" aria-label="Preamble"><p>This document outlines the step-by-step procedure for releasing a new version of ReleaseHx.</p>
4
+ <p>It covers all stages from pre-release checks to post-release verification.</p></section>
5
+ <section class="doc-section level-1"><h2 id="prerequisites">Prerequisites</h2><div class="ulist"><ul class="task-list"><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> All changes merged to <code>release/0.x</code> branch</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Version numbers updated in README.adoc attributes (<code>:this_prod_vrsn_major:</code> through <code>:next_prod_vrsn_majmin:</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Release notes prepared in <code>docs/release/0.x.y.adoc</code></li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Clean working tree on <code>release/0.x</code></li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> RubyGems credentials configured (<code>~/.gem/credentials</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Docker Hub credentials configured (<code>docker login</code>)</li></ul></div></section>
6
+ <section class="doc-section level-1"><h2 id="release-stages">Release Stages</h2><section class="doc-section level-2"><h3 id="stage-pre-flight-checks">Stage 1: Pre-flight Checks</h3><div class="dlist"><dl><dt>Verify CI/CD Setup</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check workflows exist
7
+ ls .github/workflows/
8
+ # Should see: ci-cd.yml, gh-pages.yml, docs-qa.yml</code></pre></div></dd><dt>Check Current State</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Verify branch and clean status
9
+ git status
10
+ # Should be on release/0.x with clean working tree</code></pre></div></dd><dt>Run Test Suite</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">bundle exec rake rspec
11
+ # All tests must pass</code></pre></div></dd><dt>Confirm demo builds in releasehx-demo repo</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">cd ../releasehx-demo
12
+ ./dev-install.sh
13
+ bundle exec rake test:yaml
14
+ bundle exec rake test:cli
15
+ bundle exec rake test:readme
16
+ bundle exec rake test:dynamic
17
+ bundle exec rake test:content</code></pre></div></dd><dt>Check demo test results</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># View test output directories
18
+ ls -lh __tests/
19
+ # Should contain: cli/, readme/, dynamic/, validation/
20
+
21
+ # Check for errors in output
22
+ grep -i error __tests/*/*.log 2&gt;/dev/null || echo "No errors found"
23
+
24
+ # Spot-check generated files
25
+ ls -lh __output/drafts/
26
+ ls -lh __output/publish/</code></pre></div></dd><dt>Demo Repo Release Readiness</dt><dd><ul class="task-list"><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> YAML validation passes
27
+ (<code>yaml_test</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> CLI workflows pass (<code>cli_test</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> README testable commands pass (<code>readme_test</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Dynamic test matrix passes (<code>dynamic_test</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Content validation passes (<code>validate_content</code>)</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Test output
28
+ directories contain no errors</li><li class="task-list-item"><input class="task-list-item-checkbox" type="checkbox" disabled> Generated files present in
29
+ __output/</li></ul></dd><dt>Test Docker Build</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">bundle exec rake build:image
30
+ # Note: This creates/updates the buildx builder and tests the build
31
+ # May need to recreate builder after Docker updates: docker buildx rm releasehx-builder</code></pre></div></dd><dt>Verify Version Numbers</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check version in README.adoc
32
+ grep ":this_prod_vrsn" README.adoc
33
+ # Verify lib/releasehx/version.rb reads from README attributes
34
+ grep "VERSION" lib/releasehx/version.rb</code></pre></div></dd><dt>Verify Gemfile</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Ensure no local path dependencies
35
+ grep -E "path:|git:" Gemfile
36
+ # Should be empty</code></pre></div></dd><dt>Confirm Release Notes</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Verify release notes file exists
37
+ ls -lh docs/release/0.x.y.adoc</code></pre></div></dd></dl></div></section>
38
+ <section class="doc-section level-2"><h3 id="stage-build-artifacts">Stage 2: Build Artifacts</h3><div class="dlist"><dl><dt>Build Gem Package</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">bundle exec rake build:gem</code></pre></div></dd><dt>Verify Gem Package</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">ls -lh pkg/releasehx-*.gem
39
+ # Confirm version number is correct</code></pre></div></dd></dl></div></section>
40
+ <section class="doc-section level-2"><h3 id="stage-create-pull-request">Stage 3: Create Pull Request</h3><div class="dlist"><dl><dt>Push Release Branch</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">git push origin release/0.x</code></pre></div></dd><dt>Create Pull Request</dt><dd><ul><li>Via GitHub UI:
41
+ <a class="bare" href="https://github.com/DocOps/releasehx/compare/main…release/0.x">https://github.com/DocOps/releasehx/compare/main…release/0.x</a></li><li>Title:
42
+ Release 0.x.y</li><li>Body: (leave empty); wait for CI tests to pass.</li></ul></dd><dt>Merge Strategy</dt><dd>Use &#x201c;Create a merge commit&#x201d; (NOT squash or rebase).
43
+ This preserves commit history and allows future PRs from the same
44
+ branch</dd></dl></div></section>
45
+ <section class="doc-section level-2"><h3 id="stage-tag-release">Stage 4: Tag Release</h3><div class="dlist"><dl><dt>Update Local Main Branch</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">git checkout main
46
+ git pull origin main</code></pre></div></dd><dt>Create and Push Tag</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">git tag -a v0.x.y -m "Release 0.x.y"
47
+ git push origin v0.x.y</code></pre></div></dd></dl></div>
48
+ <aside class="admonition-block note" role="note"><h6 class="block-title label-only"><span class="title-label">Note: </span></h6><p>GitHub Pages workflow will auto-deploy docs when tag is pushed.</p></aside></section>
49
+ <section class="doc-section level-2"><h3 id="stage-sync-release">Stage 5: Sync Release Branch (Optional but Recommended)</h3><div class="dlist"><dl><dt>Cherry-pick Any Post-Merge Fixes</dt><dd><p>If you made any fixes to release notes or docs on main after the merge:</p><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">git checkout release/0.x
50
+ git cherry-pick &lt;commit-sha&gt;
51
+ git push origin release/0.x</code></pre></div></dd></dl></div></section>
52
+ <section class="doc-section level-2"><h3 id="stage-publish-gem-to-rubygems">Stage 6: Publish Gem to RubyGems</h3><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">gem push pkg/releasehx-0.x.y.gem
53
+ # Enter OTP code from authenticator when prompted</code></pre></div>
54
+ <div class="dlist"><dl><dt>Verify Publication</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check on RubyGems.org
55
+ open https://rubygems.org/gems/releasehx</code></pre></div></dd></dl></div></section>
56
+ <section class="doc-section level-2"><h3 id="stage-publish-docker-image">Stage 7: Publish Docker Image</h3><div class="dlist"><dl><dt>Build and Load Image</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">docker buildx build --platform linux/amd64 \
57
+ --build-arg RELEASEHX_VERSION=0.x.y \
58
+ -t docopslab/releasehx:latest \
59
+ -t docopslab/releasehx:0.x.y \
60
+ --load \
61
+ .</code></pre></div></dd><dt>Push Images</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">docker push docopslab/releasehx:0.x.y
62
+ docker push docopslab/releasehx:latest</code></pre></div></dd><dt>Verify Publication</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check on Docker Hub
63
+ open https://hub.docker.com/r/docopslab/releasehx</code></pre></div></dd></dl></div></section>
64
+ <section class="doc-section level-2"><h3 id="stage-publish-issuer-rhx">Stage 8: Publish issuer-rhx Docker Image</h3><p>Follow the Release Process documented in the <a href="https://github.com/DocOps/issuer-rhx">issuer-rhx</a> repo&#8217;s <code>README.adoc</code>.</p></section>
65
+ <section class="doc-section level-2"><h3 id="stage-create-github-release">Stage 9: Create GitHub Release</h3><div class="dlist"><dl><dt>Via GitHub UI (recommended)</dt><dd><ol class="arabic"><li>Go to:
66
+ <a class="bare" href="https://github.com/DocOps/releasehx/releases/new">https://github.com/DocOps/releasehx/releases/new</a></li><li>Select tag: v0.x.y</li><li>Title: ReleaseHx 0.x.y</li><li>Description:
67
+ See release notes at <code><a class="bare" href="https://releasehx.docopslab.org/docs/releases/">https://releasehx.docopslab.org/docs/releases/</a></code></li><li>Upload: <code>pkg/releasehx-0.x.y.gem</code></li><li>Click &#x201c;Publish release&#x201d;</li></ol></dd><dt>Via CLI (if permissions allow)</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">gh release create v0.x.y pkg/releasehx-0.x.y.gem \
68
+ --title "ReleaseHx 0.x.y" \
69
+ --notes "See release notes at https://releasehx.docopslab.org/docs/releases/"</code></pre></div></dd></dl></div></section>
70
+ <section class="doc-section level-2"><h3 id="stage-release-verification">Stage 10: Post-Release Verification</h3><div class="dlist"><dl><dt>Test Gem Installation</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">gem install releasehx --version 0.x.y
71
+ rhx --version
72
+ # Should show: 0.x.y</code></pre></div></dd><dt>Test Docker Image</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash">docker pull docopslab/releasehx:0.x.y
73
+ docker run --rm docopslab/releasehx:0.x.y rhx --version
74
+ # Should show: 0.x.y</code></pre></div></dd><dt>Verify Documentation</dt><dd><div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Check that docs are live
75
+ open https://releasehx.docopslab.org/docs/releases/
76
+ # Should show 0.x.y release notes</code></pre></div></dd></dl></div></section>
77
+ <section class="doc-section level-2"><h3 id="stage-post-release-cleanup-optional">Stage 11: Post-Release Cleanup (Optional)</h3><div class="dlist"><dl><dt>Update Version for Next Release</dt><dd>Edit <code>README.adoc</code> to increment patch version; commit on <code>release/0.x</code> branch</dd><dt>Notify Stakeholders</dt><dd>Post announcement in relevant channels; update downstream projects</dd></dl></div></section></section>
78
+ <section class="doc-section level-1"><h2 id="troubleshooting">Troubleshooting</h2><section class="doc-section level-2"><h3 id="docker-buildkit-issues">Docker BuildKit Issues</h3><p>If you encounter TLS certificate errors with buildx:</p>
79
+ <div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Remove stale builder
80
+ docker buildx rm releasehx-builder
81
+
82
+ # Recreate builder (Rakefile will do this automatically)
83
+ bundle exec rake build:image</code></pre></div></section>
84
+ <section class="doc-section level-2"><h3 id="mfa-otp-issues">MFA/OTP Issues with RubyGems</h3><div class="ulist"><ul><li>Get fresh OTP code from authenticator app</li><li>Code expires quickly; have app ready before running <code>gem push</code></li></ul></div></section>
85
+ <section class="doc-section level-2"><h3 id="github-cli-permission-issues">GitHub CLI Permission Issues</h3><div class="dlist"><dl><dt>If <code>gh</code> CLI lacks permissions</dt><dd><ul><li>Use GitHub web UI for creating PRs and
86
+ Releases</li><li>Upload gem file manually in Release creation form</li></ul></dd></dl></div></section></section>
87
+ <section class="doc-section level-1"><h2 id="branch-strategy">Branch Strategy</h2><div class="dlist"><dl><dt>Long-lived Branch (<code>release/0.x</code>)</dt><dd><ul><li>Used for all 0.x.y patch releases</li><li>PR to main for each release</li><li>Merge commits preserve history</li><li>Continue development on same branch</li></ul></dd><dt>Tagging</dt><dd>Tags created on <code>main</code> branch after merge</dd><dt>Documentation</dt><dd>Auto-deploys from <code>main</code> via GitHub Actions</dd></dl></div></section>
@@ -1,13 +1,13 @@
1
1
  '\" t
2
2
  .\" Title: releasehx
3
3
  .\" Author: [see the "AUTHOR(S)" section]
4
- .\" Generator: Asciidoctor 2.0.23
5
- .\" Date: 2025-11-06
4
+ .\" Generator: Asciidoctor 2.0.26
5
+ .\" Date: 2026-05-14
6
6
  .\" Manual: \ \&
7
7
  .\" Source: \ \&
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "RELEASEHX" "1" "2025-11-06" "\ \&" "\ \&"
10
+ .TH "RELEASEHX" "1" "2026-05-14" "\ \&" "\ \&"
11
11
  .ie \n(.g .ds Aq \(aq
12
12
  .el .ds Aq '
13
13
  .ss \n[.ss] 0
@@ -29,8 +29,20 @@
29
29
  .\}
30
30
  .SH "NAME"
31
31
  releasehx \- Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.
32
+ .if n .sp
33
+ .RS 4
34
+ .it 1 an-trap
35
+ .nr an-no-space-flag 1
36
+ .nr an-break-flag 1
37
+ .br
38
+ .ps +1
39
+ .B Tip
40
+ .ps -1
41
+ .br
32
42
  .sp
33
- \fBTip:\fP Type \f(CRq\fP to exit this page.
43
+ Type \f(CRq\fP to exit this page.
44
+ .sp .5v
45
+ .RE
34
46
  .SH "ALIASES"
35
47
  .sp
36
48
  \f(CRrhx\fP
@@ -251,7 +263,7 @@ Display the ReleaseHx version code.
251
263
  .RS 4
252
264
  Enrich HTML with/out head and body tags.
253
265
  When enriching to HTML, \fIinclude\fP (\f(CR\-\-wrap\fP) or \fIexclude\fP (\f(CR\-\-no\-wrap\fP) the \f(CR<head>\fP and \f(CR<body>\fP tags and their content.
254
- For use when the opposite value is set in the config file (\fB[conf_ppty_modes_wrapped]\fP).
266
+ For use when the opposite value is set in the config file (\fB[conf_ppty_modes_html_wrap]\fP).
255
267
  .RE
256
268
  .sp
257
269
  \fB\-\-quiet\fP
@@ -25,7 +25,9 @@ conversions: # Details about content origination, as well as markup sources and
25
25
  note: issue_body # The source of the release notes content.
26
26
  # note_custom_field: # The name of the custom field to use for the release notes content.Liquid error: wrong number of arguments (given 3, expected 1..2)Liquid error: wrong number of arguments (given 3, expected 1..2)
27
27
  markup: markdown # The origin markup format for notes.
28
- # engine: # The markup converter to use for the issues.
28
+ engines: # Specifies the conversion engines to use when enriching to various output formats.
29
+ # html: # Engine for converting to HTML format.
30
+ # pdf: # Engine for converting to PDF format.
29
31
  extensions: # Default file extensions.
30
32
  markdown: md # File extension for Markdown drafts.
31
33
  asciidoc: adoc # File extension for AsciiDoc drafts.
@@ -72,7 +74,7 @@ tags: # Handling for tags, labels, or toggles associated with source Issues.
72
74
  - breaking
73
75
  - experimental
74
76
  - changelog
75
- _exclude: # The list of tags that cause a change/issue to be excluded from the release history.
77
+ _exclude: [] # The list of tags that cause a change/issue to be excluded from the release history.
76
78
  highlight: # The tag, label, or toggle that indicates an issue is to be highlighted or prioritized in sorts.
77
79
  head: Highlights # How this tag will display as a grouping title.
78
80
  text: highlight # How this tag will display as a label.
@@ -163,10 +165,10 @@ paths: # The configuration for the paths to include in the release history listi
163
165
  mappings_dir: _mappings # The path to the directory containing user-defined API mappings.
164
166
  api_clients_dir: _apis # The path to the directory containing user-defined API client definitions.
165
167
  modes: # Default settings for rhx command executions.
166
- wrapped: false # Include (or exclude) head, header, and footer elements when enriching to HTML.
168
+ html_wrap: false # Include (or exclude) head, header, and footer elements when enriching to HTML.
167
169
  html_frontmatter: true # Include frontmatter in the rendered HTML.
168
170
  markdown_frontmatter: false # Include frontmatter in Markdown drafts.
169
- # asciidoc_frontmatter: # Include frontmatter in AsciiDoc drafts.
171
+ asciidoc_frontmatter: false # Include frontmatter in AsciiDoc drafts.
170
172
  fetch: notes-only # What to fetch when gathering issues from API.
171
173
  remove_excess_lines: 1 # Reduces N+ consecutive blank lines to N lines.
172
174
  rhyml: # Settings related to RHYML data objects and documents.
@@ -178,6 +180,12 @@ rhyml: # Settings related to RHYML data objects and documents.
178
180
  pasterize_head: false # Whether to convert verbs in the head property to past tense when drafting.
179
181
  history: # Configurations for the overall document, when applicable.Liquid error: wrong number of arguments (given 3, expected 1..2)
180
182
  htag: h1 # The heading level (H1, H2, etc) for the release history header.Liquid error: wrong number of arguments (given 3, expected 1..2)Liquid error: wrong number of arguments (given 3, expected 1..2)Liquid error: wrong number of arguments (given 3, expected 1..2)
183
+ html_framework: bare # The HTML framework to use when enriching to HTML.
184
+ styling: # Configuration options for HTML styling and CSS framework integration.
185
+ mode: framework # The HTML styling approach to use when generating wrapped HTML output.
186
+ theme: default # The visual theme variant to apply to HTML output.
187
+ embed_css: false # Include comprehensive CSS directly in the HTML <style> block.
188
+ # css_url: # URL or path to external CSS stylesheet for custom styling.
181
189
  items: # Settings pertaining to displayed items across Changelog and Release Notes sections.
182
190
  allow_redundant: false # Whether to allow duplicate entries in a given section, for instance across groups for part:group sorts where a change affects...
183
191
  show_issue_links: false # Whether to include web links in item metadata.
@@ -210,8 +218,7 @@ changelog: # The configuration for the changelog output.
210
218
  head: Changelog # The header for the changelog output.Liquid error: wrong number of arguments (given 3, expected 1..2)
211
219
  htag: h2 # The heading level (H1, H2, etc) for the changelog section header.
212
220
  spot: 2 # Where in the document to place the changelog (1 = top, 2 = bottom).
213
- sort: # The sort order for the changelog output.
214
- - part:grouping1
221
+ sort: [part:grouping1] # The sort order for the changelog output.
215
222
  items: # Settings that affect the frame/shape and arrangement of individual changelog entries.
216
223
  frame: unordered # The layout for the changelog entry display.
217
224
  allow_redundant: false # Whether to allow duplicate entries in a given section, for instance across groups for part:group sorts where a change affects...
@@ -248,4 +255,4 @@ notes: # The configuration for the Release Notes listing section.
248
255
  show_parts_label: false # Whether to show the parts label in the item metadata output.
249
256
  show_tags_label: false # Whether to show the tags label in the item metadata output.
250
257
  show_lead_label: false # Whether to show the lead label in the item metadata output.
251
- show_auths_label: false # Whether to show the authors label in the item metadata output.
258
+ show_auths_label: false # Whether to show the authors label in the item metadata output.
data/lib/releasehx/cli.rb CHANGED
@@ -753,12 +753,14 @@ module ReleaseHx
753
753
  @settings['modes'] ||= {}
754
754
 
755
755
  unless options[:wrap].nil?
756
- @settings['modes']['wrapped'] = options[:wrap]
756
+ @settings['modes']['html_wrap'] = options[:wrap]
757
757
  ReleaseHx.logger.info "✓ Changed HTML wrapping to: #{options[:wrap]}" if options[:verbose]
758
758
  end
759
759
 
760
760
  return if options[:frontmatter].nil?
761
761
 
762
+ @settings['modes']['markdown_frontmatter'] = options[:frontmatter]
763
+ @settings['modes']['asciidoc_frontmatter'] = options[:frontmatter]
762
764
  @settings['modes']['html_frontmatter'] = options[:frontmatter]
763
765
  ReleaseHx.logger.info "✓ Changed frontmatter inclusion to: #{options[:frontmatter]}" if options[:verbose]
764
766
  end
@@ -840,8 +842,9 @@ module ReleaseHx
840
842
 
841
843
  # Extract issues array if client config specifies root_issues_path: "issues"
842
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
843
846
  origin_source = @settings.dig('origin', 'source')
844
- if origin_source && payload.is_a?(Hash) && payload.key?('issues')
847
+ if origin_source && payload.is_a?(Hash) && payload.key?('issues') && !options[:mapping]
845
848
  client_path = find_api_client_config(origin_source)
846
849
  if client_path
847
850
  client_def = SchemaGraphy::Loader.load_yaml_with_tags(client_path)
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'psych'
4
- require_relative '../schemagraphy/loader'
5
4
 
6
5
  module ReleaseHx
7
6
  # Manages the application's configuration by loading and merging settings
@@ -2,7 +2,7 @@
2
2
  # Auto-generated by Sourcerer::Builder
3
3
 
4
4
  module ReleaseHx
5
- ATTRIBUTES = {:globals=>{"attribute-undefined"=>"drop-line", "attribute-missing"=>"skip", "appendix-caption"=>"Appendix", "appendix-refsig"=>"Appendix", "caution-caption"=>"Caution", "chapter-refsig"=>"Chapter", "example-caption"=>"Example", "figure-caption"=>"Figure", "important-caption"=>"Important", "last-update-label"=>"Last updated", "note-caption"=>"Note", "part-refsig"=>"Part", "prewrap"=>"", "sectids"=>"", "section-refsig"=>"Section", "table-caption"=>"Table", "tip-caption"=>"Tip", "toc-placement"=>"macro", "toc-title"=>"Table of Contents", "untitled-label"=>"Untitled", "version-label"=>"Version", "warning-caption"=>"Warning", "notitle"=>"", "docfile"=>"/home/brian/Documents/work/releasehx/README.adoc", "docdir"=>"/home/brian/Documents/work/releasehx", "docfilesuffix"=>".adoc", "docname"=>"README", "embedded"=>"", "asciidoctor"=>"", "asciidoctor-version"=>"2.0.23", "safe-mode-name"=>"unsafe", "safe-mode-unsafe"=>"", "safe-mode-level"=>0, "max-include-depth"=>64, "user-home"=>"/home/brian", "doctype"=>"article", "htmlsyntax"=>"html", "backend-html5-doctype-article"=>"", "doctype-article"=>"", "backend-html5"=>"", "backend"=>"html5", "outfilesuffix"=>".html", "filetype"=>"html", "filetype-html"=>"", "basebackend-html-doctype-article"=>"", "basebackend-html"=>"", "basebackend"=>"html", "stylesdir"=>".", "iconsdir"=>"./images/icons", "localdate"=>"2026-01-30", "localyear"=>"2026", "localtime"=>"01:33:36 -0500", "localdatetime"=>"2026-01-30 01:33:36 -0500", "docdate"=>"2026-01-30", "docyear"=>"2026", "doctime"=>"00:47:36 -0500", "docdatetime"=>"2026-01-30 00:47:36 -0500", "page-layout"=>"default", "page-permalink"=>"/docs/", "page-title"=>"ReleaseHx Docs", "page-nav_order"=>"1", "doctitle"=>"ReleaseHx", "docopslab_git_www"=>"https://github.com/DocOps", "this_prod_slug"=>"releasehx", "releasehx_prod_repo"=>"https://github.com/DocOps/releasehx", "releasehx_demo_repo"=>"https://github.com/DocOps/releasehx-demo", "this_prod_repo"=>"https://github.com/DocOps/releasehx", "this_prod_vrsn_major"=>"0", "this_prod_vrsn_minor"=>"1", "this_prod_vrsn_major-minor"=>"0.1", "this_prod_vrsn_patch"=>"2", "this_prod_vrsn"=>"0.1.2", "next_prod_vrsn"=>"0.2.0", "tagline"=>"Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.", "description"=>"CLI utility and Ruby API for generating structured release notes and changelog documents from various issue-tracking platforms or YAML definitions into plaintext drafts (<strong>AsciiDoc</strong>, <strong>Markdown</strong>, <strong>YAML</strong>) and rich-text output (<strong>HTML</strong> and <strong>PDF</strong>).", "gem_config_definition_path"=>"./specs/data/config-def.yml", "app_default_config_path"=>"./.releasehx.yml", "default_markup"=>"markdown", "default_slug_type"=>"kebab", "default_tplt_lang"=>"liquid", "default_drafts_dir"=>"_drafts", "default_enrich_dir"=>"_publish", "default_output_dir"=>".", "default_payloads_dir"=>"_payloads", "default_templates_dir"=>"_templates", "default_mappings_dir"=>"_mappings", "default_api_clients_dir"=>"_apis", "default_cache_dir"=>".releasehx/cache", "default_api_cred_env"=>"RELEASEHX_API_CRED", "default_api_key_env"=>"RELEASEHX_API_KEY", "default_api_user_env"=>"RELEASEHX_API_USER", "default_api_org_env"=>"RELEASEHX_API_ORG", "markdown_extensions"=>".md, .markdown", "asciidoc_extensions"=>".adoc, .ad, .asciidoc", "yaml_extensions"=>".yml, .yaml, .rhyml", "draft_source_file_types"=>"AsciiDoc, Markdown, YAML", "draft_source_extensions"=>".md, .markdown, .adoc, .ad, .asciidoc, .yml, .yaml, .rhyml", "enrich_file_types"=>"HTML, PDF", "enrich_extensions"=>".html, .pdf", "docker_base_command"=>"docker run -it --rm --user $(id -u):$(id -g) -v $(pwd):/workdir docopslab/releasehx rhx", "this_prod_repo_branch"=>"https://github.com/DocOps/releasehx/tree/release/0.1", "docs_extn"=>"", "toc"=>"", "toclevels"=>"3", "authorcount"=>0, "toc-position"=>"content"}}
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