releasehx 0.1.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 (91) hide show
  1. checksums.yaml +7 -0
  2. data/README.adoc +2915 -0
  3. data/bin/releasehx +7 -0
  4. data/bin/rhx +7 -0
  5. data/bin/rhx-mcp +7 -0
  6. data/bin/sourcerer +32 -0
  7. data/build/docs/CNAME +1 -0
  8. data/build/docs/Gemfile.lock +95 -0
  9. data/build/docs/_config.yml +36 -0
  10. data/build/docs/config-reference.adoc +4104 -0
  11. data/build/docs/config-reference.json +1546 -0
  12. data/build/docs/index.adoc +2915 -0
  13. data/build/docs/landing.adoc +21 -0
  14. data/build/docs/manpage.adoc +68 -0
  15. data/build/docs/releasehx.1 +281 -0
  16. data/build/docs/releasehx_readme.html +367 -0
  17. data/build/docs/sample-config.adoc +9 -0
  18. data/build/docs/sample-config.yml +251 -0
  19. data/build/docs/schemagraphy_readme.html +0 -0
  20. data/build/docs/sourcerer_readme.html +46 -0
  21. data/build/snippets/helpscreen.txt +29 -0
  22. data/lib/docopslab/mcp/asset_packager.rb +30 -0
  23. data/lib/docopslab/mcp/manifest.rb +67 -0
  24. data/lib/docopslab/mcp/resource_pack.rb +46 -0
  25. data/lib/docopslab/mcp/server.rb +92 -0
  26. data/lib/docopslab/mcp.rb +6 -0
  27. data/lib/releasehx/cli.rb +937 -0
  28. data/lib/releasehx/configuration.rb +215 -0
  29. data/lib/releasehx/generated.rb +17 -0
  30. data/lib/releasehx/helpers.rb +58 -0
  31. data/lib/releasehx/mcp/asset_packager.rb +21 -0
  32. data/lib/releasehx/mcp/assets/agent-config-guide.md +178 -0
  33. data/lib/releasehx/mcp/assets/config-def.yml +1426 -0
  34. data/lib/releasehx/mcp/assets/config-reference.adoc +4104 -0
  35. data/lib/releasehx/mcp/assets/config-reference.json +1546 -0
  36. data/lib/releasehx/mcp/assets/sample-config.yml +251 -0
  37. data/lib/releasehx/mcp/manifest.rb +18 -0
  38. data/lib/releasehx/mcp/resource_pack.rb +26 -0
  39. data/lib/releasehx/mcp/server.rb +57 -0
  40. data/lib/releasehx/mcp.rb +7 -0
  41. data/lib/releasehx/ops/check_ops.rb +136 -0
  42. data/lib/releasehx/ops/draft_ops.rb +173 -0
  43. data/lib/releasehx/ops/enrich_ops.rb +221 -0
  44. data/lib/releasehx/ops/template_ops.rb +61 -0
  45. data/lib/releasehx/ops/write_ops.rb +124 -0
  46. data/lib/releasehx/rest/clients/github.yml +46 -0
  47. data/lib/releasehx/rest/clients/gitlab.yml +31 -0
  48. data/lib/releasehx/rest/clients/jira.yml +31 -0
  49. data/lib/releasehx/rest/yaml_client.rb +418 -0
  50. data/lib/releasehx/rhyml/adapter.rb +740 -0
  51. data/lib/releasehx/rhyml/change.rb +167 -0
  52. data/lib/releasehx/rhyml/liquid.rb +13 -0
  53. data/lib/releasehx/rhyml/loaders.rb +37 -0
  54. data/lib/releasehx/rhyml/mappings/github.yaml +60 -0
  55. data/lib/releasehx/rhyml/mappings/gitlab.yaml +73 -0
  56. data/lib/releasehx/rhyml/mappings/jira.yaml +29 -0
  57. data/lib/releasehx/rhyml/mappings/verb_past_tenses.yml +98 -0
  58. data/lib/releasehx/rhyml/release.rb +144 -0
  59. data/lib/releasehx/rhyml.rb +15 -0
  60. data/lib/releasehx/sgyml/helpers.rb +45 -0
  61. data/lib/releasehx/transforms/adf_to_markdown.rb +307 -0
  62. data/lib/releasehx/version.rb +7 -0
  63. data/lib/releasehx.rb +69 -0
  64. data/lib/schemagraphy/attribute_resolver.rb +48 -0
  65. data/lib/schemagraphy/cfgyml/definition.rb +90 -0
  66. data/lib/schemagraphy/cfgyml/doc_builder.rb +52 -0
  67. data/lib/schemagraphy/cfgyml/path_reference.rb +24 -0
  68. data/lib/schemagraphy/data_query/json_pointer.rb +42 -0
  69. data/lib/schemagraphy/loader.rb +59 -0
  70. data/lib/schemagraphy/regexp_utils.rb +215 -0
  71. data/lib/schemagraphy/safe_expression.rb +189 -0
  72. data/lib/schemagraphy/schema_utils.rb +124 -0
  73. data/lib/schemagraphy/tag_utils.rb +32 -0
  74. data/lib/schemagraphy/templating.rb +104 -0
  75. data/lib/schemagraphy.rb +17 -0
  76. data/lib/sourcerer/builder.rb +120 -0
  77. data/lib/sourcerer/jekyll/bootstrapper.rb +78 -0
  78. data/lib/sourcerer/jekyll/liquid/file_system.rb +74 -0
  79. data/lib/sourcerer/jekyll/liquid/filters.rb +215 -0
  80. data/lib/sourcerer/jekyll/liquid/tags.rb +44 -0
  81. data/lib/sourcerer/jekyll/monkeypatches.rb +73 -0
  82. data/lib/sourcerer/jekyll.rb +26 -0
  83. data/lib/sourcerer/plaintext_converter.rb +75 -0
  84. data/lib/sourcerer/templating.rb +190 -0
  85. data/lib/sourcerer.rb +322 -0
  86. data/specs/data/api-client-schema.yaml +160 -0
  87. data/specs/data/config-def.yml +1426 -0
  88. data/specs/data/mcp-manifest.yml +50 -0
  89. data/specs/data/rhyml-mapping-schema.yaml +410 -0
  90. data/specs/data/rhyml-schema.yaml +152 -0
  91. metadata +376 -0
@@ -0,0 +1,21 @@
1
+ :page-permalink: /
2
+ :page-layout: minimal
3
+ :page-liquid: true
4
+ = ReleaseHx
5
+
6
+ ++++
7
+ <div class="hero">
8
+ <div class="hero-body">
9
+ <div class="container">
10
+ <h1 class="title">
11
+ ReleaseHx
12
+ </h1>
13
+ <h2 class="subtitle">
14
+ {{ site.tagline }}
15
+ </h2>
16
+ </div>
17
+ </div>
18
+ </div>
19
+ ++++
20
+
21
+ include::index.adoc[tags="globals,intro,features-list"]
@@ -0,0 +1,68 @@
1
+ [[releasehx-1]]
2
+ = releasehx(1)
3
+ :doctype: manpage
4
+ :manpage:
5
+ :man-linkstyle: pass:[blue R < >]
6
+ :toc: macro
7
+ include::../README.adoc[tags="globals,helpscreen_attrs"]
8
+
9
+
10
+ [[name]]
11
+ == NAME
12
+
13
+ releasehx - {tagline}
14
+
15
+ *Tip:* Type `q` to exit this page.
16
+
17
+
18
+ [[aliases]]
19
+ == ALIASES
20
+
21
+ `rhx`
22
+
23
+
24
+ [[synopsis]]
25
+ == SYNOPSIS
26
+
27
+ [subs=quotes]
28
+ ....
29
+ *releasehx* _VERSION_|_SOURCE_ [_OPTIONS_]
30
+
31
+ *rhx* _VERSION_|_SOURCE_ [_OPTIONS_]
32
+ ....
33
+
34
+
35
+ [[examples]]
36
+ == EXAMPLES
37
+
38
+ `rhx 1.2.3 --md`::
39
+ Fetches and drafts Release Notes and Changelog for version 1.2.3 in Markdown.
40
+
41
+ `rhx 1.2.3 --html --pdf`::
42
+ Renders Release Notes and Changelog for version 1.2.3 from existing YAML, Markdown, or AsciiDoc draft; otherwise fetches from source and enriches directly.
43
+
44
+ `rhx 1.2.3 --check`::
45
+ Scans issues for those missing Release Notes and reports findings.
46
+
47
+ `rhx release-1.2.3.md --html`::
48
+ Renders Release Notes and Changelog for the specified Markdown file.
49
+
50
+
51
+ [[options]]
52
+ == OPTIONS
53
+
54
+ include::../README.adoc[tags="cli_options"]
55
+
56
+ // TODO: CONFIGURATION
57
+
58
+
59
+ [[exit-status]]
60
+ == EXIT STATUS
61
+
62
+ *0*::
63
+ Success.
64
+ Command executed without fatal errors.
65
+
66
+ *1*::
67
+ Failure.
68
+ Command encountered fatal error.
@@ -0,0 +1,281 @@
1
+ '\" t
2
+ .\" Title: releasehx
3
+ .\" Author: [see the "AUTHOR(S)" section]
4
+ .\" Generator: Asciidoctor 2.0.23
5
+ .\" Date: 2025-11-06
6
+ .\" Manual: \ \&
7
+ .\" Source: \ \&
8
+ .\" Language: English
9
+ .\"
10
+ .TH "RELEASEHX" "1" "2025-11-06" "\ \&" "\ \&"
11
+ .ie \n(.g .ds Aq \(aq
12
+ .el .ds Aq '
13
+ .ss \n[.ss] 0
14
+ .nh
15
+ .ad l
16
+ .de URL
17
+ \fI\\$2\fP <\\$1>\\$3
18
+ ..
19
+ .als MTO URL
20
+ .if \n[.g] \{\
21
+ . mso www.tmac
22
+ . am URL
23
+ . ad l
24
+ . .
25
+ . am MTO
26
+ . ad l
27
+ . .
28
+ . LINKSTYLE blue R < >
29
+ .\}
30
+ .SH "NAME"
31
+ releasehx \- Generate formatted release histories from Jira, GitHub, GitLab, YAML, or JSON sources.
32
+ .sp
33
+ \fBTip:\fP Type \f(CRq\fP to exit this page.
34
+ .SH "ALIASES"
35
+ .sp
36
+ \f(CRrhx\fP
37
+ .SH "SYNOPSIS"
38
+ .sp
39
+ .if n .RS 4
40
+ .nf
41
+ .fam C
42
+ \fBreleasehx\fP \fIVERSION\fP|\fISOURCE\fP [\fIOPTIONS\fP]
43
+
44
+ \fBrhx\fP \fIVERSION\fP|\fISOURCE\fP [\fIOPTIONS\fP]
45
+ .fam
46
+ .fi
47
+ .if n .RE
48
+ .SH "EXAMPLES"
49
+ .sp
50
+ \f(CRrhx 1.2.3 \-\-md\fP
51
+ .RS 4
52
+ Fetches and drafts Release Notes and Changelog for version 1.2.3 in Markdown.
53
+ .RE
54
+ .sp
55
+ \f(CRrhx 1.2.3 \-\-html \-\-pdf\fP
56
+ .RS 4
57
+ Renders Release Notes and Changelog for version 1.2.3 from existing YAML, Markdown, or AsciiDoc draft; otherwise fetches from source and enriches directly.
58
+ .RE
59
+ .sp
60
+ \f(CRrhx 1.2.3 \-\-check\fP
61
+ .RS 4
62
+ Scans issues for those missing Release Notes and reports findings.
63
+ .RE
64
+ .sp
65
+ \f(CRrhx release\-1.2.3.md \-\-html\fP
66
+ .RS 4
67
+ Renders Release Notes and Changelog for the specified Markdown file.
68
+ .RE
69
+ .SH "OPTIONS"
70
+ .sp
71
+ \fB\-\-adoc, \-\-ad\fP [\fIPATH\fP]
72
+ .RS 4
73
+ Draft to AsciiDoc.
74
+ Outputs to \f(CR<drafts_dir>/<file_template>\fP or \f(CR<PATH>\fP.
75
+ .sp
76
+ Where \f(CR<drafts_dir>\fP is the value of \f(CRpaths.drafts_dir\fP in the config, and \f(CR<template>\fP is the value of \f(CRtemplates.drafts_filename\fP in the config.
77
+ .RE
78
+ .sp
79
+ \fB\-\-api\-data\fP \fIPATH\fP
80
+ .RS 4
81
+ Ingest from a JSON file instead of REST response.
82
+ Point to any local JSON source file that is formatted like a response payload for your configured API (see [conf_ppty_origin_source]); this overrides the normal REST request even if \f(CR\-\-fetch\fP is argued (though a warning will appear if you pass both options).
83
+ .RE
84
+ .sp
85
+ \fB\-\-append\fP
86
+ .RS 4
87
+ Add any new issues to the end of local YAML source.
88
+ .sp
89
+ When drafting in YAML, adds new issues to the end of the file.
90
+ Be sure to save edits before appending.
91
+ .RE
92
+ .sp
93
+ \fB\-\-check, \-\-scan\fP
94
+ .RS 4
95
+ Find issues with missing release note.
96
+ Scans issues for those missing release notes and reports findings.
97
+ .RE
98
+ .sp
99
+ \fB\-\-config\fP \fIPATH\fP
100
+ .RS 4
101
+ Config location (default: ././.releasehx.yml).
102
+ Use the configuration file at the specified path instead of the default location (\f(CR./.releasehx.yml\fP).
103
+ .RE
104
+ .sp
105
+ \fB\-\-debug\fP
106
+ .RS 4
107
+ Express each step and show inferred states.
108
+ Conveys all INFO and DEBUG messages.
109
+ .RE
110
+ .sp
111
+ \fB\-\-debug\-dump\fP
112
+ .RS 4
113
+ Complete debugging with raw data.
114
+ Includes all INFO and DEBUG output, as well as raw data objects.
115
+ .RE
116
+ .sp
117
+ \fB\-\-empty, \-e\fP [\fIRULE\fP]
118
+ .RS 4
119
+ Set/reverse policy on issues "awaiting notes".
120
+ .sp
121
+ Argue a specific drafting policy, or argue the \(lqopposite\(rq policy, for handling issues that are marked as \f(CRrelease_note_needed\fP but no note is provided.
122
+ Set a specific rule (\f(CRskip\fP, \f(CRempty\fP, \f(CRdump\fP, or \f(CRai`\fP) to have ReleaseHx include the issue when converting issues to changes, even if no expected note content has been added.
123
+ .sp
124
+ Using \f(CR\-e dump\fP will draft the issue with the entire issue body and commit message as the note content, for any qualifying change entry.
125
+ Whereas \f(CR\-e ai\fP will use generative AI to draft note properties from issue body and commit message.
126
+ .sp
127
+ Otherwise use just \f(CR\-\-empty\fP or \f(CR\-e\fP to toggle between \f(CRskip\fP and \f(CRempty\fP, if either of those is your default in \fB[conf_ppty_rhyml_empty_notes]\fP.
128
+ If your default is \f(CRblank\fP, \f(CRdump\fP, or \f(CRai\fP, using \f(CR\-\-empty\fP or \f(CR\-e\fP with no argument will toggle a \f(CRskip\fP policy.
129
+ .RE
130
+ .sp
131
+ \fB\-\-fetch\fP
132
+ .RS 4
133
+ Refresh data from source.
134
+ .sp
135
+ Retrieves fresh data rather than using cached/draft files when converting to HTML/PDF.
136
+ Typically used like:
137
+ .sp
138
+ .if n .RS 4
139
+ .nf
140
+ .fam C
141
+ rhx 1.1.0 \-\-fetch \-\-html
142
+ .fam
143
+ .fi
144
+ .if n .RE
145
+ .sp
146
+ The fetch procedure does write a cached RHYML document before generating final output.
147
+ .RE
148
+ .sp
149
+ \fB\-\-frontmatter, \-\-no\-frontmatter\fP
150
+ .RS 4
151
+ Enrich or draft with/out frontmatter.
152
+ When generating drafts or enriching to HTML output, \fIinclude\fP (\f(CR\-\-frontmatter\fP) or \fIexclude\fP (\f(CR\-\-no\-frontmatter\fP) frontmatter.
153
+ .RE
154
+ .sp
155
+ \fB\-\-html\fP [\fIPATH\fP]
156
+ .RS 4
157
+ Enrich to HTML.
158
+ Writes to \f(CR<output_path>/<file_template>\fP or \f(CR<PATH>\fP.
159
+ .RE
160
+ .sp
161
+ \fB\-\-internal\fP
162
+ .RS 4
163
+ Include issues marked internal or likewise.
164
+ Include issues marked as internal or similarly restricted when drafting content.
165
+ Has no effect on enrichment operations.
166
+ .RE
167
+ .sp
168
+ \fB\-\-api\-data\fP \fIPATH\fP
169
+ .RS 4
170
+ Ingest from a JSON file instead of REST response.
171
+ For API responses, this option saves the payload as PATH.
172
+ During normal output generating, this option writes a copy of RHYML object to PATH.
173
+ .RE
174
+ .sp
175
+ \fB\-\-md\fP [\fIPATH\fP]
176
+ .RS 4
177
+ Draft to Markdown.
178
+ Outputs to \f(CR<drafts_dir>/<file_template>\fP or \f(CR<PATH>\fP.
179
+ .sp
180
+ Where \f(CR<drafts_dir>\fP is the value of \f(CRpaths.drafts_dir\fP in the config, and \f(CR<template>\fP is the value of \f(CRtemplates.drafts_filename\fP in the config.
181
+ .RE
182
+ .sp
183
+ \fB\-\-manpage, \-\-man\fP
184
+ .RS 4
185
+ Show the full manpage documentation.
186
+ Includes this options reference and other documentation, all in the terminal.
187
+ .if n .sp
188
+ .RS 4
189
+ .it 1 an-trap
190
+ .nr an-no-space-flag 1
191
+ .nr an-break-flag 1
192
+ .br
193
+ .ps +1
194
+ .B Tip
195
+ .ps -1
196
+ .br
197
+ .sp
198
+ Use \f(CRq\fP to quit back to prompt.
199
+ .sp .5v
200
+ .RE
201
+ .RE
202
+ .sp
203
+ \fB\-\-mapping\fP
204
+ .RS 4
205
+ Alternate API mapping location.
206
+ File must be a valid RHYML mapping config, usually stored at \f(CR_mapping/<apiname>.yaml\fP.
207
+ .sp
208
+ The mapping base directory can be changed in \fB[conf_ppty_paths_mappings_dir]\fP, but this option must include a complete relative or absolute path.
209
+ .RE
210
+ .sp
211
+ \fB\-\-payload\fP [\fIPATH\fP]
212
+ .RS 4
213
+ Store payload as JSON file at PATH or default
214
+ If no path is argued, defaults to that set in \fB[conf_ppty_paths_payloads_dir]\fP.
215
+ .RE
216
+ .sp
217
+ \fB\-\-output\-dir\fP \fIDIRECTORY\fP
218
+ .RS 4
219
+ Establish base target path for generated files.
220
+ .RE
221
+ .sp
222
+ \fB\-\-over, \-\-force\fP
223
+ .RS 4
224
+ Overwrite any existing files without prompting.
225
+ When writing files, overwrite existing files without prompting for confirmation.
226
+ .RE
227
+ .sp
228
+ \fB\-\-pdf\fP [\fIPATH\fP]
229
+ .RS 4
230
+ Enriches to PDF from default or designated source.
231
+ Writes to \f(CR<output_path>/<file_template>\fP or \f(CR<PATH>\fP.
232
+ .RE
233
+ .sp
234
+ \fB\-\-scan, \-\-check\fP
235
+ .RS 4
236
+ Find issues with missing release note.
237
+ Scans issues for those missing release notes and reports findings..
238
+ .RE
239
+ .sp
240
+ \fB\-\-verbose\fP
241
+ .RS 4
242
+ Express each step to console during execution.
243
+ .RE
244
+ .sp
245
+ \fB\-\-version\fP
246
+ .RS 4
247
+ Display the ReleaseHx version code.
248
+ .RE
249
+ .sp
250
+ \fB\-\-wrap, \-\-no\-wrap\fP
251
+ .RS 4
252
+ Enrich HTML with/out head and body tags.
253
+ 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).
255
+ .RE
256
+ .sp
257
+ \fB\-\-quiet\fP
258
+ .RS 4
259
+ Suppress all output, including warnings.
260
+ .RE
261
+ .sp
262
+ \fB\-\-yaml, \-\-yml\fP [\fIPATH\fP]
263
+ .RS 4
264
+ Draft to YAML.
265
+ Outputs to \f(CR<drafts_dir>/<file_template>\fP or \f(CR<PATH>\fP.
266
+ .sp
267
+ Where \f(CR<drafts_dir>\fP is the value of \f(CRpaths.drafts_dir\fP in the config, and \f(CR<template>\fP is the value of \f(CRtemplates.drafts_filename\fP in the config.
268
+ .RE
269
+ .SH "EXIT STATUS"
270
+ .sp
271
+ \fB0\fP
272
+ .RS 4
273
+ Success.
274
+ Command executed without fatal errors.
275
+ .RE
276
+ .sp
277
+ \fB1\fP
278
+ .RS 4
279
+ Failure.
280
+ Command encountered fatal error.
281
+ .RE