releasehx 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ac4d0a0b453e04e4d951efb1872442643c24d6acf38e10fc5e46ece9519a7d66
4
- data.tar.gz: '03047949b1e979d21c2e1ba62e9724cf4d73fc70bad846f514d8ece952fd2274'
3
+ metadata.gz: 78e2b0461641bd5ccec859dc8cc3902b17cf253e0e93bbd67e9985d99b118aed
4
+ data.tar.gz: 61625da70d76384524914b4457f4803e2add183122cbd987a9406c3fe176e0b1
5
5
  SHA512:
6
- metadata.gz: 51afc5d365a22fea9a30a0321a29c70635c792ced58cbdb90d6070507718b7be750d4f616d04c1042bef05862d0afc8fae29182baac8abcd5577fe90d5b0465b
7
- data.tar.gz: 200ae529d58615589ede46426ea3d8cc932c9059e861089071bac4482268d99670910af5d97fd4ebd26f611926c78cc5a7d048ade90eff5e131293d12aa14630
6
+ metadata.gz: 37386a8549560e7ff8ebb64975b4907966e731fadd4d918bba0d93f177e9d05eafbb0a097f184f615c94d09c2b0aeb32b3155d6ce1762f1c24a412712ea7577d
7
+ data.tar.gz: 73cd6b547b271985f3f0df2e39c1e5636966788dc5492624591521ff97efa37031024515f67aea5a3c27f9a9cb9a18d0172c1aad4164f08cbd9235d1ecace1d5
data/README.adoc CHANGED
@@ -12,23 +12,25 @@
12
12
  :this_proj_slug: releasehx
13
13
  :this_proj_name: ReleaseHx
14
14
  // tag::universal-settings[]
15
+ // ALL changes within this block must be made in prime template:
16
+ // DocOps/lab/gems/docopslab-dev/templates/README.asciidoc
15
17
  :docopslab_src_www_url: https://github.com/DocOps
16
18
  :docopslab_domain: docopslab.org
17
19
  :docopslab_www_url: https://{docopslab_domain}
18
20
  :docopslab_io_www_url: https://docopslab.github.io
19
21
  :docopslab_ruby_version: 3.2.7
20
- :docopslab_src_www_url: https://raw.githubusercontent.com/DocOps
21
22
  :docopslab_git_src_uri: git@github.com:DocOps
23
+ :docopslab_src_raw_url: https://raw.githubusercontent.com/DocOps
22
24
  :this_proj_src_www_url: {docopslab_src_www_url}/{this_proj_slug}
23
- :this_proj_src_raw_url: https://raw.githubusercontent.com/DocOps/{this_proj_slug}/main
25
+ :this_proj_src_raw_url: {docopslab_src_raw_url}/{this_proj_slug}
26
+ :this_proj_src_main_raw_url: {this_proj_src_raw_url}/main
24
27
  :this_proj_src_main_files_url: {this_proj_src_www_url}/blob/main
25
- :this_proj_src_main_edit_url: {this_proj_src_www_url}/edit/main
26
28
  :this_proj_src_git_uri: {docopslab_git_src_uri}/{this_proj_slug}.git
27
29
  :this_proj_ruby_version: {docopslab_ruby_version}
28
30
  // tag::env-settings[]
29
- :extn:
31
+ :docs_extn:
30
32
  ifdef::env-github[]
31
- :extn: .adoc
33
+ :docs_extn: .adoc
32
34
  :icons: font
33
35
  :caution-caption: :fire:
34
36
  :important-caption: :exclamation:
@@ -37,15 +39,19 @@ ifdef::env-github[]
37
39
  :warning-caption: :warning:
38
40
  endif::[]
39
41
  // end::env-settings[]
42
+ // Settings likely to be overridden locally
43
+ :this_prod_slug: {this_proj_slug}
44
+ :this_prod_name: {this_proj_name}
45
+ :this_prod_src_www_url: {this_proj_src_www_url}
40
46
  // end::universal-settings[]
41
- :releasehx_demo_repo: {docopslab_src_www_url}/releasehx-demo
47
+ :releasehx-demo_repo_www_url: {docopslab_src_www_url}/releasehx-demo
42
48
  // tag::product-settings[]
43
49
  :this_prod_slug: {this_proj_slug}
44
50
  // tag::version-settings[]
45
51
  :this_prod_vrsn_major: 0
46
52
  :this_prod_vrsn_minor: 2
47
53
  :this_prod_vrsn_majmin: {this_prod_vrsn_major}.{this_prod_vrsn_minor}
48
- :this_prod_vrsn_patch: 0
54
+ :this_prod_vrsn_patch: 1
49
55
  :this_prod_vrsn: {this_prod_vrsn_majmin}.{this_prod_vrsn_patch}
50
56
  :next_prod_vrsn: 0.3.0
51
57
  :next_prod_vrsn_majmin: 0.3
@@ -461,7 +467,7 @@ Then have it consult `releasehx://config/sample` as a table of contents before u
461
467
  [[demo-setup]]
462
468
  ==== Demo Repo Setup
463
469
 
464
- If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx_demo_repo}[DocOps/releasehx-demo]` repository as instructed in this section.
470
+ If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx-demo_repo_www_url}[DocOps/releasehx-demo]` repository as instructed in this section.
465
471
 
466
472
  Alternately, skip to <<issue-sources>> to begin configuring your own project/environment.
467
473
 
@@ -632,7 +638,7 @@ Out of the box, there are two issues in the `jira-customfield-note-1.1.0.json` f
632
638
  [.prompt.testable]
633
639
  rhx 1.1.0 --config configs/jira-customfield.yml --api-data _payloads/jira-customfield-note-1.1.0.json --html --pdf
634
640
 
635
- For more on the demo repo, visit its README at {releasehx_demo_repo}.
641
+ For more on the demo repo, visit its README at {releasehx-demo_repo_www_url}.
636
642
 
637
643
  [[custom-configuration]]
638
644
  ==== Custom Configuration
@@ -923,7 +929,7 @@ For *custom field-based* release notes, the entire ADF content in the custom fie
923
929
  No heading extraction is performed.
924
930
  --
925
931
 
926
- See link:{releasehx_demo_repo}[releasehx-demo] repository for working examples with ADF payloads and configurations.
932
+ See link:{releasehx-demo_repo_www_url}[releasehx-demo] repository for working examples with ADF payloads and configurations.
927
933
 
928
934
  [[github-issues]]
929
935
  ==== GitHub Issues
@@ -1350,7 +1356,7 @@ When rendered, the HTML will include:
1350
1356
  }
1351
1357
  ----
1352
1358
 
1353
- For examples of dark theme in action, see the demo configurations in the {releasehx_demo_repo}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
1359
+ For examples of dark theme in action, see the demo configurations in the {releasehx-demo_repo_www_url}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
1354
1360
 
1355
1361
  [[html-wrapper-control]]
1356
1362
  ===== HTML Wrapper Control
@@ -1954,7 +1960,7 @@ ReleaseHx comes with a complete default configuration file as well as a series o
1954
1960
 
1955
1961
  The complete link:{default-config_www}[default config file] displays default values with commented descriptions of all available properties.
1956
1962
 
1957
- The various sample configurations stored in the link:{releasehx_demo_repo}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
1963
+ The various sample configurations stored in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
1958
1964
 
1959
1965
  [[env-vars]]
1960
1966
  === Environment Variables in ReleaseHx
@@ -2188,7 +2194,7 @@ For example, if your GitHub issues use labels like:
2188
2194
  Your ReleaseHx application will need an alternate mapping because the default GitHub mapping expects native `issue_type.name` fields.
2189
2195
 
2190
2196
  An example alternate mapping for label-based GitHub type extraction can be found at:
2191
- link:{releasehx_demo_repo}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
2197
+ link:{releasehx-demo_repo_www_url}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
2192
2198
 
2193
2199
  This mapping includes Ruby logic to:
2194
2200
 
@@ -2240,7 +2246,7 @@ To use an alternate mapping:
2240
2246
 
2241
2247
  . Test with representative payload data to ensure proper extraction
2242
2248
 
2243
- The link:{releasehx_demo_repo}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
2249
+ The link:{releasehx-demo_repo_www_url}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
2244
2250
 
2245
2251
  [NOTE]
2246
2252
  ReleaseHx by default looks for a mapping file that matches the name of the API you are using.
@@ -2276,7 +2282,7 @@ Using the ReleaseHx config file, you can manipulate:
2276
2282
 
2277
2283
  Most of this can be manipulated using the following sections: <<conf_ppty_history>>, <<conf_ppty_changelog>>, <<conf_ppty_notes>>, <<conf_ppty_links>>, as well as within change-metadata config blocks, where you can alter labels, icons, and such: <<conf_ppty_types>>, <<conf_ppty_parts>>, <<conf_ppty_tags>>.
2278
2284
 
2279
- The various sample configurations found in the link:{releasehx_demo_repo}/blob/main/configs/[demo repository] illustrate many of these options.
2285
+ The various sample configurations found in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] illustrate many of these options.
2280
2286
 
2281
2287
  A complete link:{default-config_www}[sample config] displays default values and commented descriptions of all available properties.
2282
2288
 
@@ -2550,7 +2556,7 @@ To work with ReleaseHx source, clone both repositories side by side for the most
2550
2556
  +
2551
2557
  [.prompt]
2552
2558
  git clone {this_proj_src_www_url}
2553
- git clone {releasehx_demo_repo}
2559
+ git clone {releasehx-demo_repo_www_url}
2554
2560
  +
2555
2561
  This will give you `<source_dir>/releasehx` and `<source_dir>/releasehx-demo`, side by side.
2556
2562
 
@@ -1,6 +1,7 @@
1
1
  title: ReleaseHx Documentation
2
2
  theme: just-the-docs
3
3
  baseurl: /
4
+ future: true
4
5
 
5
6
  plugins:
6
7
  - jekyll-asciidoc
@@ -31,7 +32,8 @@ exclude:
31
32
  - manpage.adoc
32
33
  - jekyll/
33
34
  - payloads/
34
- - release/
35
+ - _releases/drafts
36
+ - _releases/payloads
35
37
  - yard/
36
38
  - release-procedure.adoc
37
39
 
@@ -1,10 +1,20 @@
1
- == Available Releases
1
+ == Release History
2
2
 
3
- Each release includes detailed notes about new features, improvements, bug fixes, and breaking changes.
3
+ [cols="~,~"]
4
+ |===
5
+ | <<release-0-2-1,0.2.1>>
6
+ | 28 May, 2026
7
+ | <<release-0-2-0,0.2.0>>
8
+ | 27 May, 2026
9
+ | <<release-0-1-2,0.1.2>>
10
+ | 30 January, 2026
11
+ |===
4
12
 
5
- * link:../release/0.2.0[0.2.0] - 2026-05-27
6
- * link:../release/0.1.2[0.1.2] - 2026-01-30
13
+ [[release-0-2-1]]
14
+ include::_releases/0.2.1.adoc[leveloffset=+1]
7
15
 
8
- == Latest Release
16
+ [[release-0-2-0]]
17
+ include::_releases/0.2.0.adoc[leveloffset=+1]
9
18
 
10
- include::release/0.2.0.adoc[leveloffset=+1]
19
+ [[release-0-1-2]]
20
+ include::_releases/0.1.2.adoc[leveloffset=+1]
@@ -12,23 +12,25 @@
12
12
  :this_proj_slug: releasehx
13
13
  :this_proj_name: ReleaseHx
14
14
  // tag::universal-settings[]
15
+ // ALL changes within this block must be made in prime template:
16
+ // DocOps/lab/gems/docopslab-dev/templates/README.asciidoc
15
17
  :docopslab_src_www_url: https://github.com/DocOps
16
18
  :docopslab_domain: docopslab.org
17
19
  :docopslab_www_url: https://{docopslab_domain}
18
20
  :docopslab_io_www_url: https://docopslab.github.io
19
21
  :docopslab_ruby_version: 3.2.7
20
- :docopslab_src_www_url: https://raw.githubusercontent.com/DocOps
21
22
  :docopslab_git_src_uri: git@github.com:DocOps
23
+ :docopslab_src_raw_url: https://raw.githubusercontent.com/DocOps
22
24
  :this_proj_src_www_url: {docopslab_src_www_url}/{this_proj_slug}
23
- :this_proj_src_raw_url: https://raw.githubusercontent.com/DocOps/{this_proj_slug}/main
25
+ :this_proj_src_raw_url: {docopslab_src_raw_url}/{this_proj_slug}
26
+ :this_proj_src_main_raw_url: {this_proj_src_raw_url}/main
24
27
  :this_proj_src_main_files_url: {this_proj_src_www_url}/blob/main
25
- :this_proj_src_main_edit_url: {this_proj_src_www_url}/edit/main
26
28
  :this_proj_src_git_uri: {docopslab_git_src_uri}/{this_proj_slug}.git
27
29
  :this_proj_ruby_version: {docopslab_ruby_version}
28
30
  // tag::env-settings[]
29
- :extn:
31
+ :docs_extn:
30
32
  ifdef::env-github[]
31
- :extn: .adoc
33
+ :docs_extn: .adoc
32
34
  :icons: font
33
35
  :caution-caption: :fire:
34
36
  :important-caption: :exclamation:
@@ -37,15 +39,19 @@ ifdef::env-github[]
37
39
  :warning-caption: :warning:
38
40
  endif::[]
39
41
  // end::env-settings[]
42
+ // Settings likely to be overridden locally
43
+ :this_prod_slug: {this_proj_slug}
44
+ :this_prod_name: {this_proj_name}
45
+ :this_prod_src_www_url: {this_proj_src_www_url}
40
46
  // end::universal-settings[]
41
- :releasehx_demo_repo: {docopslab_src_www_url}/releasehx-demo
47
+ :releasehx-demo_repo_www_url: {docopslab_src_www_url}/releasehx-demo
42
48
  // tag::product-settings[]
43
49
  :this_prod_slug: {this_proj_slug}
44
50
  // tag::version-settings[]
45
51
  :this_prod_vrsn_major: 0
46
52
  :this_prod_vrsn_minor: 2
47
53
  :this_prod_vrsn_majmin: {this_prod_vrsn_major}.{this_prod_vrsn_minor}
48
- :this_prod_vrsn_patch: 0
54
+ :this_prod_vrsn_patch: 1
49
55
  :this_prod_vrsn: {this_prod_vrsn_majmin}.{this_prod_vrsn_patch}
50
56
  :next_prod_vrsn: 0.3.0
51
57
  :next_prod_vrsn_majmin: 0.3
@@ -79,6 +85,8 @@ endif::[]
79
85
  :enrich_file_types: HTML, PDF
80
86
  :enrich_extensions: .html, .pdf
81
87
  // end::product-settings[]
88
+ :asciisourcerer_www_url: {docopslab_src_www_url}/asciisourcerer
89
+ :schemagraphy_www_url: {docopslab_src_www_url}/schemagraphy
82
90
  // end::global-settings[]
83
91
  :toc: macro
84
92
  :toclevels: 3
@@ -459,7 +467,7 @@ Then have it consult `releasehx://config/sample` as a table of contents before u
459
467
  [[demo-setup]]
460
468
  ==== Demo Repo Setup
461
469
 
462
- If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx_demo_repo}[DocOps/releasehx-demo]` repository as instructed in this section.
470
+ If you want to play around with ReleaseHx before connecting it to your own Issues source via API, use the `link:{releasehx-demo_repo_www_url}[DocOps/releasehx-demo]` repository as instructed in this section.
463
471
 
464
472
  Alternately, skip to <<issue-sources>> to begin configuring your own project/environment.
465
473
 
@@ -630,7 +638,7 @@ Out of the box, there are two issues in the `jira-customfield-note-1.1.0.json` f
630
638
  [.prompt.testable]
631
639
  rhx 1.1.0 --config configs/jira-customfield.yml --api-data _payloads/jira-customfield-note-1.1.0.json --html --pdf
632
640
 
633
- For more on the demo repo, visit its README at {releasehx_demo_repo}.
641
+ For more on the demo repo, visit its README at {releasehx-demo_repo_www_url}.
634
642
 
635
643
  [[custom-configuration]]
636
644
  ==== Custom Configuration
@@ -921,7 +929,7 @@ For *custom field-based* release notes, the entire ADF content in the custom fie
921
929
  No heading extraction is performed.
922
930
  --
923
931
 
924
- See link:{releasehx_demo_repo}[releasehx-demo] repository for working examples with ADF payloads and configurations.
932
+ See link:{releasehx-demo_repo_www_url}[releasehx-demo] repository for working examples with ADF payloads and configurations.
925
933
 
926
934
  [[github-issues]]
927
935
  ==== GitHub Issues
@@ -1348,7 +1356,7 @@ When rendered, the HTML will include:
1348
1356
  }
1349
1357
  ----
1350
1358
 
1351
- For examples of dark theme in action, see the demo configurations in the {releasehx_demo_repo}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
1359
+ For examples of dark theme in action, see the demo configurations in the {releasehx-demo_repo_www_url}[releasehx-demo repository], particularly `github-dark-mode.yml` and `github-bootstrap-dark.yml`.
1352
1360
 
1353
1361
  [[html-wrapper-control]]
1354
1362
  ===== HTML Wrapper Control
@@ -1952,7 +1960,7 @@ ReleaseHx comes with a complete default configuration file as well as a series o
1952
1960
 
1953
1961
  The complete link:{default-config_www}[default config file] displays default values with commented descriptions of all available properties.
1954
1962
 
1955
- The various sample configurations stored in the link:{releasehx_demo_repo}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
1963
+ The various sample configurations stored in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] may be a good start toward establishing your own setup.
1956
1964
 
1957
1965
  [[env-vars]]
1958
1966
  === Environment Variables in ReleaseHx
@@ -2099,7 +2107,7 @@ The extracted value is available in the `path` local variable.
2099
2107
  ==== Sandboxed Ruby Transformations
2100
2108
 
2101
2109
  The `ruby` key provides a powerful way to perform complex data transformations using a secure, sandboxed Ruby environment.
2102
- This sandbox is powered by the `SchemaGraphy::SafeTransform` class, which ensures that only an explicit allowlist of safe methods and language features can be used.
2110
+ This sandbox is powered by the `SchemaGraphy::SafeTransform` class (from link:{schemagraphy_www_url}[SchemaGraphy gem]), which ensures that only an explicit allowlist of safe methods and language features can be used.
2103
2111
 
2104
2112
  [[sandboxed-ruby-context]]
2105
2113
  ===== Execution Context
@@ -2186,7 +2194,7 @@ For example, if your GitHub issues use labels like:
2186
2194
  Your ReleaseHx application will need an alternate mapping because the default GitHub mapping expects native `issue_type.name` fields.
2187
2195
 
2188
2196
  An example alternate mapping for label-based GitHub type extraction can be found at:
2189
- link:{releasehx_demo_repo}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
2197
+ link:{releasehx-demo_repo_www_url}/blob/main/_mappings_/legacy-labels/github.yaml[`releasehx-demo/_mappings_/legacy-labels/github.yaml`]
2190
2198
 
2191
2199
  This mapping includes Ruby logic to:
2192
2200
 
@@ -2238,7 +2246,7 @@ To use an alternate mapping:
2238
2246
 
2239
2247
  . Test with representative payload data to ensure proper extraction
2240
2248
 
2241
- The link:{releasehx_demo_repo}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
2249
+ The link:{releasehx-demo_repo_www_url}[demo repository] contains working examples of these alternate mappings alongside their corresponding configurations and test payloads.
2242
2250
 
2243
2251
  [NOTE]
2244
2252
  ReleaseHx by default looks for a mapping file that matches the name of the API you are using.
@@ -2252,9 +2260,8 @@ The custom mappings path can be set using <<conf_ppty_paths_mappings_dir>> setti
2252
2260
 
2253
2261
  ReleaseHx generally uses enhanced *Liquid 4 templates* to generate new files and content from RHYML and configuration data.
2254
2262
 
2255
- Notably, it employs *link:https://jekyllrb.com/docs/liquid/[Jekyll's extended tags and filters]*, as well as some additional tag and several filters provided by Sourcerer.
2256
-
2257
- Here we document the custom filters added by the Sourcerer module and ReleaseHx itself.
2263
+ Notably, it employs *link:https://jekyllrb.com/docs/liquid/[Jekyll's extended tags and filters]*, as well as some additional tag and several filters provided by AsciiSourcerer.
2264
+ Here we document the custom filters added by the link:{asciisourcerer_www_url}[AsciiSourcerer gem] and ReleaseHx itself.
2258
2265
 
2259
2266
  [[advanced-template-configuration]]
2260
2267
  ==== Advanced Template Configuration
@@ -2275,7 +2282,7 @@ Using the ReleaseHx config file, you can manipulate:
2275
2282
 
2276
2283
  Most of this can be manipulated using the following sections: <<conf_ppty_history>>, <<conf_ppty_changelog>>, <<conf_ppty_notes>>, <<conf_ppty_links>>, as well as within change-metadata config blocks, where you can alter labels, icons, and such: <<conf_ppty_types>>, <<conf_ppty_parts>>, <<conf_ppty_tags>>.
2277
2284
 
2278
- The various sample configurations found in the link:{releasehx_demo_repo}/blob/main/configs/[demo repository] illustrate many of these options.
2285
+ The various sample configurations found in the link:{releasehx-demo_repo_www_url}/blob/main/configs/[demo repository] illustrate many of these options.
2279
2286
 
2280
2287
  A complete link:{default-config_www}[sample config] displays default values and commented descriptions of all available properties.
2281
2288
 
@@ -2487,18 +2494,6 @@ Solution::
2487
2494
  . Review Jekyll's Liquid documentation for supported tags and filters
2488
2495
 
2489
2496
 
2490
- ifdef::site-gen-jekyll[]
2491
- [[apis]]
2492
- == APIs
2493
-
2494
- Documntation for th ReleaseHx, SchemaGraphy, and Sourcerer APIs is available at:
2495
-
2496
- * link:/api/releasehx[ReleaseHx API]
2497
- * link:/api/schemagraphy[SchemaGraphy API]
2498
- * link:/api/sourcerer[Sourcerer API]
2499
-
2500
- endif::[]
2501
-
2502
2497
 
2503
2498
  ifndef::site-gen-jekyll[]
2504
2499
  // tag::releasehx-api[]
@@ -2561,7 +2556,7 @@ To work with ReleaseHx source, clone both repositories side by side for the most
2561
2556
  +
2562
2557
  [.prompt]
2563
2558
  git clone {this_proj_src_www_url}
2564
- git clone {releasehx_demo_repo}
2559
+ git clone {releasehx-demo_repo_www_url}
2565
2560
  +
2566
2561
  This will give you `<source_dir>/releasehx` and `<source_dir>/releasehx-demo`, side by side.
2567
2562
 
@@ -2681,7 +2676,7 @@ Additionally, the help screen itself is sourced here in this README and included
2681
2676
  The application help and manpage documentation is also sourced in this way.
2682
2677
  (Use `rhx --help` or `rhx --man` to reveal.)
2683
2678
 
2684
- This capability is provided by the Sourcerer module introduced in this gem but intended to be spun off into it own gem for use in all my (and any of your) Ruby projects in the future.
2679
+ This capability is provided by the link:{asciisourcerer_www_url}[AsciiSourcerer gem].
2685
2680
 
2686
2681
  [[common-dev-tasks]]
2687
2682
  === Common Dev Tasks
@@ -2879,71 +2874,54 @@ Dockerfile # Docker image definition
2879
2874
  build/ # Untracked, ephemeral path for generated assets
2880
2875
  docs/ # Documentation build source (Jekyll, YARD)
2881
2876
  .config/ # Config files for various tools
2882
- ├── sourcerer.yml # Sourcerer prebuild manifest
2883
- └── docopslab-dev.yml # DocOpsLab Devtool config
2877
+ ├── sourcerer.yml # Sourcerer prebuild manifest
2878
+ └── docopslab-dev.yml # DocOpsLab Devtool config
2884
2879
  specs/
2885
- ├── data/ # Schema/definition files
2886
- │ ├── config-def.yml # Configuration definition
2887
- │ ├── rhyml-schema.yaml # RHYML schema definition
2888
- │ ├── api-client-schema.yaml # API client schema definition
2889
- │ ├── rhyml-mapping-schema.yaml # API -> RHYML schema definition
2890
- │ └── mcp-manifest.yml # Asset registry for MCP server
2891
- └── tests/
2892
- ├── README.adoc
2893
- ├── rspec/ # RSpec tests
2894
- └── configs/ # Test configs
2880
+ ├── data/ # Schema/definition files
2881
+ │ ├── config-def.yml # Configuration definition
2882
+ │ ├── rhyml-schema.yaml # RHYML schema definition
2883
+ │ ├── api-client-schema.yaml # API client schema definition
2884
+ │ ├── rhyml-mapping-schema.yaml # API -> RHYML schema definition
2885
+ │ └── mcp-manifest.yml # Asset registry for MCP server
2886
+ └── tests/
2887
+ ├── README.adoc
2888
+ ├── rspec/ # RSpec tests
2889
+ └── configs/ # Test configs
2895
2890
  lib/
2896
- ├── releasehx.rb # Application core
2897
- ├── schemagraphy.rb # Special YAML handling
2898
- ├── sourcerer.rb # Single-sourcing tool
2899
2891
  ├── docopslab/
2900
2892
  │ ├── mcp/ # MCP assets and packaging
2901
2893
  │ └── mcp.rb # DocOpsLab MCP entrypoint
2902
- ├── releasehx/
2903
- │ ├── cli.rb # Thor CLI definition
2904
- ├── configuration.rb # CFGYML parsing
2905
- ├── generated.rb # Generated by prebuild (packaged)
2906
- ├── helpers.rb # Utility helpers
2907
- ├── mcp/ # MCP server assets
2908
- ├── mcp.rb # MCP server entrypoint
2909
- ├── README.adoc # Internal developer notes
2910
- ├── rhyml.rb # RHYML entrypoint
2911
- ├── sgyml/ # SGYML helpers
2912
- │ │ └── helpers.rb # module SgymlHelpers
2913
- ├── transforms/ # Input transformations (ADF, etc)
2914
- ├── version.rb # Version constant
2915
- ├── rest/ # module REST
2916
- │ │ ├── yaml_client.rb # ReleaseHx::REST::YamlClient class
2917
- │ └── clients/ # YAML files for API clients (jira.yaml, etc)
2918
- ├── ops/ # Main ReleaseHx methods
2919
- │ │ ├── check_ops.rb # ReleaseHx::CheckOps module
2920
- ├── draft_ops.rb # ReleaseHx::DraftOps module
2921
- ├── enrich_ops.rb # ReleaseHx::EnrichOps module
2922
- ├── template_ops.rb # ReleaseHx::TemplateOps module
2923
- │ └── write_ops.rb # ReleaseHx::WriteOps module
2924
- ├── rhyml/ # module RHYML
2925
- │ │ ├── adapter.rb # maps from JSON using a mapping file
2926
- │ │ ├── change.rb # Change class
2927
- │ │ ├── liquid.rb # Liquid filters for RHYML
2928
- │ │ ├── release.rb # Release class
2929
- │ │ ├── loaders.rb # loads RHYML YAML or JSON from disk
2930
- │ │ ├── mappings/ # API -> RHYML mappings
2931
- │ │ └── templates/ # RHYML output templates
2932
- ├── schemagraphy/
2933
- │ ├── cfgyml/ # CFGYML (OpenCFGY) parsing
2934
- │ ├── attribute_resolver.rb # Resolves {attribute_name} placeholders
2935
- │ ├── loader.rb # `SchemaGraphy::Loader`
2936
- │ ├── regexp_utils.rb # Regular expression utilities
2937
- │ ├── schema_utils.rb # `get_schema_defaults`, etc
2938
- │ ├── tag_utils.rb # `detag`, `tag_of`, etc
2939
- │ ├── templates/ # CFGYML documentation templates
2940
- │ │ └── cfgyml/ # Config reference templates (+ sample gen)
2941
- │ └── templating.rb # Defines handling of parsable YAML nodes
2942
- └── sourcerer/
2943
- ├── builder.rb # Writes snippets to files at build time
2944
- ├── jekyll.rb # Jekyll and Liquid handling for Sourcerer
2945
- ├── plaintext_converter.rb # Pre-processes AsciiDoc source files
2946
- └── templating.rb # Liquid/ERB template handling
2894
+ ├── releasehx.rb # Application core
2895
+ └── releasehx/
2896
+ ├── cli.rb # Thor CLI definition
2897
+ ├── configuration.rb # CFGYML parsing
2898
+ ├── generated.rb # Generated by prebuild (packaged)
2899
+ ├── helpers.rb # Utility helpers
2900
+ ├── mcp/ # MCP server assets
2901
+ ├── mcp.rb # MCP server entrypoint
2902
+ ├── README.adoc # Internal developer notes
2903
+ ├── rhyml.rb # RHYML entrypoint
2904
+ ├── sgyml/ # SGYML helpers
2905
+ └── helpers.rb # module SgymlHelpers
2906
+ ├── transforms/ # Input transformations (ADF, etc)
2907
+ ├── version.rb # Version constant
2908
+ ├── rest/ # module REST
2909
+ ├── yaml_client.rb # ReleaseHx::REST::YamlClient class
2910
+ └── clients/ # YAML files for API clients (jira.yaml, etc)
2911
+ ├── ops/ # Main ReleaseHx methods
2912
+ │ ├── check_ops.rb # ReleaseHx::CheckOps module
2913
+ │ ├── draft_ops.rb # ReleaseHx::DraftOps module
2914
+ │ ├── enrich_ops.rb # ReleaseHx::EnrichOps module
2915
+ ├── template_ops.rb # ReleaseHx::TemplateOps module
2916
+ └── write_ops.rb # ReleaseHx::WriteOps module
2917
+ └── rhyml/ # module RHYML
2918
+ ├── adapter.rb # maps from JSON using a mapping file
2919
+ ├── change.rb # Change class
2920
+ ├── liquid.rb # Liquid filters for RHYML
2921
+ ├── release.rb # Release class
2922
+ ├── loaders.rb # loads RHYML YAML or JSON from disk
2923
+ ├── mappings/ # API -> RHYML mappings
2924
+ └── templates/ # RHYML output templates
2947
2925
  ----
2948
2926
  // end::ai-prompt[]
2949
2927
 
@@ -2957,200 +2935,6 @@ For now it's easier to test inside the one gem that is making immediate use of t
2957
2935
 
2958
2936
  If the MVP pans out (which is uncertain given how weak MCP tech is and how frustrating it was to get it working with various clients), I will upstream it for use in any Ruby projects.
2959
2937
 
2960
- [[sourcerer]]
2961
- === Sourcerer
2962
- // tag::sourcerer[]
2963
- This gem introduces a module called Sourcerer, by which AsciiDoc files can be parsed and their contents harvested for use in the application build.
2964
- The module also handles Liquid template processing with enhanced attribute resolution capabilities.
2965
-
2966
- [NOTE]
2967
- Sourcerer is intended to be spun off as its own gem once it successfully proves the concept in this gem.
2968
- It will probably be called _AsciiSourcerer_ and may replace an older and unmaintained utility of mine called LiquiDoc.
2969
-
2970
- It is invoked in the Rakefile, establishing global namespaces:
2971
-
2972
- * `ReleaseHx::ATTRIBUTES[:globals]` (derived from this `README.adoc` file)
2973
- * `ReleaseHx.read_built_snippet(:<name>)` (such as `:helpscreen`)
2974
-
2975
- The Sourcerer module also generates files like `build/docs/manpage.adoc`, which generates the formatted terminal manual, using content from `build/docs/config-reference.adoc` and this README (`tags="cli_options"`, for instance).
2976
-
2977
- It also generates an AsciiDoc-formatted configuration reference, a machine-readable JSON reference, and a sample config using the `specs/data/config-def.yml` file.
2978
- The Sourcerer system now supports *attribute resolution* from AsciiDoc source files, enabling templates to access README attributes during rendering, ensuring configuration documentation reflects actual default values.
2979
-
2980
- Sourcerer also performs basic testing of select commands in the ASciiDoc file that have been assigned a `testable` role.
2981
-
2982
- This is mostly just showing off what Sourcerer can do, and hopefully setting into habit some best practices for my more complicated apps.
2983
-
2984
- Sourcerer is also where integration with Jekyll's extensions of Liquid occurs, bringing ReleaseHx's templating powers closely in line with how Jekyll's work, as described in <<custom-liquid>>.
2985
- // end::sourcerer[]
2986
-
2987
- [[schemagraphy]]
2988
- === SchemaGraphy
2989
-
2990
- This gem also introduces a module that derives from an unreleased gem I have been working on for some years: SchemaGraphy.
2991
-
2992
- SchemaGraphy is basically an extension of YAML, enabling Ruby developers and end users more broadly to powerfully interpret and schematize YAML-based data.
2993
- Most relevant to our case, as enabled by the `SchemaGraphy` module in this gem, is its handling of *YAML custom tags*, *attribute resolution*, and what I am calling *"`templated fields`"*, where the value of a YAML node is a String that is intended to be further processed by a templating engine like Liquid or ERB, either immediately upon ingest or later in the runtime stack, when it can be mixed with additional data.
2994
-
2995
- SchemaGraphy facilitates handling these and other quirky power-ups we use with our fully valid YAML files, so low-code users can pass some dynamism along in their YAML configs and so forth.
2996
-
2997
- [[attribute-resolution]]
2998
- ==== Attribute Resolution
2999
-
3000
- SchemaGraphy provides *attribute resolution* capabilities through the `AttributeResolver` component.
3001
- This enables YAML files to reference external attributes using placeholder syntax like `{attribute_name}`.
3002
-
3003
- When loading YAML with `.load_yaml_with_attributes(file_path, attributes)`, SchemaGraphy:
3004
-
3005
- . Loads the YAML file normally
3006
- . Searches for `{attribute_name}` patterns in String values
3007
- . Replaces them with corresponding values from the provided attributes Hash
3008
- . Returns the resolved YAML data structure
3009
-
3010
- This is used extensively in ReleaseHx's configuration system to enable single-sourcing of defaults from README attributes.
3011
-
3012
- [[custom-yaml-tag-handling]]
3013
- ==== Custom YAML Tag Handling
3014
-
3015
- To enable end users to pass meta-instructions along with their data, wherever it will make sense to do so, SchemaGraphy offers a straightforward handling system.
3016
-
3017
- Wherever you parse YAML-formatted data using `.load_yaml_with_tags`, custom-tagged Scalar nodes are converted into Maps like so:
3018
-
3019
- .User's YAML
3020
- [source,yaml]
3021
- ----
3022
- some_property: !liquid "{{ some_value }}"
3023
- ----
3024
-
3025
- .Converted data TagMap
3026
- [source,yaml]
3027
- ----
3028
- some_property:
3029
- __tag__: liquid
3030
- value: "{{ some_value }}"
3031
- ----
3032
-
3033
- Developers may therefore conditionally interpret ingested data based on user-defined classifications, wherever the developer supports such things.
3034
-
3035
- Whether a Scalar has been transformed into a TagMap, you can resolve it using:
3036
-
3037
- [source,ruby]
3038
- ----
3039
- SchemaGraphy::TagUtils.detag(some_property)
3040
- # Or, with a local alias
3041
- detag = ->(val) { SchemaGraphy::TagUtils.detag(val) }
3042
- detag(some_property)
3043
- ----
3044
-
3045
- When tags are used this way, to convey a syntax/engine for processing a template or other dynamic content, SchemaGraphy can even help us handle the content in the manner designated by the tag.
3046
- This will come up again in <<templated-fields,the next section>>.
3047
-
3048
- [NOTE]
3049
- This capability is only available on Scalar node values.
3050
- For now, tags applied to other compound node types (Arrays/sequences, Maps/mappings) will be ignored by SchemaGraphy interpreters.
3051
-
3052
- [WARNING]
3053
- When you use `load_yaml_with_tags`, you will encounter errors downstream if a user places a tag on a node where you do not expect it.
3054
-
3055
- [[templated-fields]]
3056
- ==== Templated Property Values in YAML
3057
-
3058
- We are calling these "`templated fields`" to specify that we are talking about enabling end users to use Liquid, ERB, or eventually other templating syntaxes in YAML node values.
3059
-
3060
- In so doing, developer are able to designate that the value of certain YAML nodes should be handled by a templating engine, as well as when and how.
3061
-
3062
- We'll look at how this is done in <<templated-fields-handling>>.
3063
- For now, the point is that sometimes files like `specs/data/config-def.yml` or an API-mapping file call for a little more runtime dynamism than a low-code solution like pure YAML can support.
3064
-
3065
- Therefore, when the value of a user-configurable or environment-deterimined "`setting`" is a string that must be generated from data defined outside that field, we parse and render the template at runtime, using data from the environment or elsewhere.
3066
- For now, it is up to our calling code to provide the appropriate variables to the template depending on the context.
3067
-
3068
- [[config-def]]
3069
- ==== Configuration Definition (CFGYML)
3070
-
3071
- All user-configurable settings have a definition, if not also a default value.
3072
- For single-sourcing purposes, these are defined in a YAML format called CFGYML -- a configuration-file modeling language.
3073
-
3074
- The file is at `{gem_config_definition_path}`.
3075
- It is used to establish the literal default settings carried by the application, and also to document those settings for the user.
3076
-
3077
- This practice lets developers give end users extremely detailed configurations, always well documented.
3078
-
3079
- [[attribute-resolution-in-cfgyml]]
3080
- ===== Attribute Resolution in CFGYML
3081
-
3082
- CFGYML supports *attribute resolution* from AsciiDoc files (like this README) using placeholder syntax.
3083
- Default values can reference README attributes using `{attribute_name}` syntax:
3084
-
3085
- [source,yaml]
3086
- ----
3087
- properties:
3088
- $meta:
3089
- properties:
3090
- markup:
3091
- dflt: "{default_markup}" # Resolved from README.adoc :default_markup: attribute
3092
- ----
3093
-
3094
- This enables single-sourcing of configuration defaults from README attributes, ensuring that documentation and defaults stay synchronized.
3095
-
3096
- [[cfgyml-schema-structure]]
3097
- ===== CFGYML Schema Structure
3098
-
3099
- The basic schema is somewhat straightforward.
3100
- Essentially, you're nesting Map objects within a YAML key `properties`, and each property (setting) of the defined config file can be described and constrained.
3101
-
3102
- Each setting can have a type, description (`desc`), default (`dflt`), and templated-field instructions (`templating`).
3103
- If the setting is itself a of type `Map` (YAML "`mapping`", JSON "`object`"), its own nested parameters can be established with a `properties:` block.
3104
-
3105
- For now, you can designate the type, which you will have to enforce in your code, as well as a default value.
3106
-
3107
- [[sgyml-schemas]]
3108
- ==== SGYML Schemas
3109
-
3110
- Similar to but more complicated than CFGYML definition files are SchemaGraphy schema files.
3111
- This is a partially specified, partially developed, and as-yet-incomplete syntax for designating and constraining YAML documents.
3112
-
3113
- ReleaseHx at this time makes active use of only minimal aspects of these schemas, all of which are contained in the `specs/` directory at the root of the gem source.
3114
-
3115
- Each of the YAML formats used by ReleaseHx has its own schema in the repo.
3116
- The cfgyml-schema.yaml file will eventually be spun off, but the `specs/data/rhyml-schema.yaml` and `specs/data/rhyml-mapping-schema.yaml` files will stay here, defining valid formats for the types of files they apply to.
3117
-
3118
- Since SchemaGraphy itself is still unreleased, CFGYML as introduced in this gem offers only a subset of what it will enable down the road.
3119
-
3120
- Once SchemaGraphy is generally available, this gem will call it as a dependency.
3121
- At that point, a file like `specs/data/config-def.yml` (CFGYML) will be able to impose a more detailed `$schema` for any property.
3122
-
3123
- [[templated-fields-handling]]
3124
- ==== Dynamic Templated-field Handling
3125
-
3126
- The most powerful function of SchemaGraphy schemas that is now available in ReleaseHx is the ability to instruct how templated fields should be processed at different stages, and also to parse and render them as needed.
3127
-
3128
- Templated-field handling can be established between a combination of (1) CFGYML definition files or SGYML schema files and (2) configuration files to be applied at runtime.
3129
-
3130
- Developers can designate a given property to be `type: Template` in a schema or definition.
3131
- This "`typing`" can be a trigger for downstream parsing/rendering of the template.
3132
-
3133
- [NOTE]
3134
- Liquid uses these two stages.
3135
- The _parse_ operation compiles a template into a `Liquid::Template` object.
3136
- The _render_ operation applies a dataset to the loaded template, generating a String with Liquid tags resolved.
3137
-
3138
- [[nyi]]
3139
- ==== Not Yet Implemented
3140
-
3141
- Most aspects of SchemaGraphy/SGYML are not yet available in ReleaseHx, but some are worth pointing out.
3142
-
3143
- data types::
3144
- As of now, the `type` node of any property in `specs/data/config-def.yml` is not particularly functional.
3145
- I do have a whole table of "`data types`" in SGYML, most of which are extremely self-explanatory and drawn from fairly platonic, cross-language terms.
3146
- +
3147
- However, these are entirely unenforced in ReleaseHx -- for now, data still has to be type checked explicitly in the Ruby code, and user configs are not validated against any kind of typing system.
3148
-
3149
- schema docs::
3150
- The schema files do not yet generate complete reference docs for the subject files that they govern.
3151
- So for instance, you'll have to read files like `specs/data/rhyml-schema.yaml` and `specs/data/rhyml-mapping-schema.yaml` directly to understand the format of RHYML files and how they are mapped to REST response payloads.
3152
- // end::schemagraphy[]
3153
-
3154
2938
  [[docs-deployment]]
3155
2939
  === Documentation Deployment
3156
2940
 
@@ -1,4 +1,5 @@
1
1
  = ReleaseHx Release Procedure
2
+ include::../README.adoc[tags="global-settings"]
2
3
 
3
4
  This document outlines the step-by-step procedure for releasing a new version of ReleaseHx.
4
5
 
@@ -10,7 +11,7 @@ It covers all stages from pre-release checks to post-release verification.
10
11
 
11
12
  - [ ] All changes merged to `release/0.x` branch
12
13
  - [ ] 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
+ - [ ] Release notes prepared in `docs/_releases/0.x.y.adoc`
14
15
  - [ ] Clean working tree on `release/0.x`
15
16
  - [ ] RubyGems credentials configured (`~/.gem/credentials`)
16
17
  - [ ] Docker Hub credentials configured (`docker login`)
@@ -123,7 +124,7 @@ Confirm Release Notes::
123
124
  [source,bash]
124
125
  ----
125
126
  # Verify release notes file exists
126
- ls -lh docs/release/0.x.y.adoc
127
+ ls -lh docs/_releases/0.x.y.adoc
127
128
  ----
128
129
 
129
130
  [[stage-build-artifacts]]
@@ -276,6 +277,11 @@ gh release create v0.x.y pkg/releasehx-0.x.y.gem \
276
277
  --notes "See release notes at https://releasehx.docopslab.org/docs/releases/"
277
278
  ----
278
279
 
280
+ [[stage-demo-repo-release]]
281
+ === Stage {counter:stage}: Release releasehx-demo
282
+
283
+ Follow the release process documented in the {releasehx-demo_repo_www_url}[releasehx-demo] repo's `README.adoc`.
284
+
279
285
  [[stage-release-verification]]
280
286
  === Stage {counter:stage}: Post-Release Verification
281
287
 
@@ -2,7 +2,7 @@
2
2
 
3
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
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>
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/_releases/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
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
7
  ls .github/workflows/
8
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
@@ -34,7 +34,7 @@ grep ":this_prod_vrsn" README.adoc
34
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
35
  grep -E "path:|git:" Gemfile
36
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>
37
+ ls -lh docs/_releases/0.x.y.adoc</code></pre></div></dd></dl></div></section>
38
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
39
  # Confirm version number is correct</code></pre></div></dd></dl></div></section>
40
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:
@@ -67,14 +67,15 @@ open https://hub.docker.com/r/docopslab/releasehx</code></pre></div></dd></dl></
67
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
68
  --title "ReleaseHx 0.x.y" \
69
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
70
+ <section class="doc-section level-2"><h3 id="stage-demo-repo-release">Stage 10: Release releasehx-demo</h3><p>Follow the release process documented in the <a href="https://github.com/DocOps/releasehx-demo">releasehx-demo</a> repo&#8217;s <code>README.adoc</code>.</p></section>
71
+ <section class="doc-section level-2"><h3 id="stage-release-verification">Stage 11: 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
72
  rhx --version
72
73
  # 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
74
  docker run --rm docopslab/releasehx:0.x.y rhx --version
74
75
  # 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
76
  open https://releasehx.docopslab.org/docs/releases/
76
77
  # 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-2"><h3 id="stage-post-release-cleanup-optional">Stage 12: 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
79
  <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
80
  <div class="listing-block"><pre class="highlight"><code class="language-bash" data-lang="bash"># Remove stale builder
80
81
  docker buildx rm releasehx-builder
@@ -2,12 +2,12 @@
2
2
  .\" Title: releasehx
3
3
  .\" Author: [see the "AUTHOR(S)" section]
4
4
  .\" Generator: Asciidoctor 2.0.26
5
- .\" Date: 2026-05-14
5
+ .\" Date: 2026-05-27
6
6
  .\" Manual: \ \&
7
7
  .\" Source: \ \&
8
8
  .\" Language: English
9
9
  .\"
10
- .TH "RELEASEHX" "1" "2026-05-14" "\ \&" "\ \&"
10
+ .TH "RELEASEHX" "1" "2026-05-27" "\ \&" "\ \&"
11
11
  .ie \n(.g .ds Aq \(aq
12
12
  .el .ds Aq '
13
13
  .ss \n[.ss] 0
@@ -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.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"}}
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-29", "localyear"=>"2026", "localtime"=>"01:39:22 -0400", "localdatetime"=>"2026-05-29 01:39:22 -0400", "docdate"=>"2026-05-29", "docyear"=>"2026", "doctime"=>"01:35:44 -0400", "docdatetime"=>"2026-05-29 01:35:44 -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://github.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", "docopslab_src_raw_url"=>"https://raw.githubusercontent.com/DocOps", "this_proj_src_www_url"=>"https://github.com/DocOps/releasehx", "this_proj_src_raw_url"=>"https://raw.githubusercontent.com/DocOps/releasehx", "this_proj_src_main_raw_url"=>"https://raw.githubusercontent.com/DocOps/releasehx/main", "this_proj_src_main_files_url"=>"https://github.com/DocOps/releasehx/blob/main", "this_proj_src_git_uri"=>"git@github.com:DocOps/releasehx.git", "this_proj_ruby_version"=>"3.2.7", "docs_extn"=>"", "this_prod_slug"=>"releasehx", "this_prod_name"=>"ReleaseHx", "this_prod_src_www_url"=>"https://github.com/DocOps/releasehx", "releasehx-demo_repo_www_url"=>"https://github.com/DocOps/releasehx-demo", "this_prod_vrsn_major"=>"0", "this_prod_vrsn_minor"=>"2", "this_prod_vrsn_majmin"=>"0.2", "this_prod_vrsn_patch"=>"1", "this_prod_vrsn"=>"0.2.1", "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://github.com/DocOps/asciisourcerer", "schemagraphy_www_url"=>"https://github.com/DocOps/schemagraphy", "toc"=>"", "toclevels"=>"3", "authorcount"=>0, "toc-position"=>"content"}}
6
6
 
7
7
  SNIPPET_LOOKUP = {"helpscreen"=>"helpscreen.txt"}
8
8
 
@@ -9,25 +9,25 @@
9
9
  {%- endif %}
10
10
  {%- if change.parts.size > 0 %}
11
11
  {%- if change.parts.size == 1 %}
12
- part: {{ change.parts[0] }}
12
+ part: {{ change.parts[0] }}
13
13
  {%- else %}
14
- parts:
14
+ parts:
15
15
  {%- for part in change.parts %}
16
- - {{ part }}
16
+ - {{ part }}
17
17
  {%- endfor %}
18
18
  {%- endif %}
19
19
  {%- endif %}
20
20
  {%- if change.hash %}
21
21
  hash: {{ change.hash }}
22
22
  {%- endif %}
23
- summ: |
24
- {{ change.summ }}
23
+ summ: |
24
+ {{ change.summ }}
25
25
  {%- if change.head %}
26
26
  head: {{ change.head }}
27
27
  {%- endif %}
28
- {%- if change.note and change.note.strip != '' %}
28
+ {%- if change.note and change.note != '' %}
29
29
  note: |
30
- {{ _note | indent: 6 }}
30
+ {{ change.note | indent: 4 }}
31
31
  {%- endif %}
32
32
  {%- if change.tags.size > 0 %}
33
33
  tags:
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: releasehx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - DocOpsLab