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,1426 @@
1
+ properties:
2
+ $meta:
3
+ desc: |
4
+ The metadata settings for the configuration file.
5
+ properties:
6
+ markup:
7
+ type: String
8
+ desc: |
9
+ The markup format used in strings in this configuration file.
10
+ May be `asciidoc` or `markdown`.
11
+
12
+ This probably matters less than you might imagine, as ReleaseHx will use AsciiDoc-style `+++_italic_+++` and `+++*bold*+++` syntax, and there should not be much call for divergent syntax like for links or images.
13
+ All default values are cross-compatible.
14
+ dflt: "{default_markup}"
15
+ slug_type:
16
+ type: String
17
+ desc: |
18
+ The format of slugs used in your application, for use with `sluggerize` Liquid filter.
19
+
20
+ Must be `kebab` (ex: `hyphen-delimited-slug`) or `snake` (ex: `underscore_delimited_slug`).
21
+ dflt: "{default_slug_type}"
22
+ tplt_lang:
23
+ type: String
24
+ desc: |
25
+ The default format used in fields of `Template` type.
26
+ Must be `liquid` or `erb`.
27
+ dflt: "{default_tplt_lang}"
28
+ origin:
29
+ desc: |
30
+ The API or file source for the issues.
31
+ properties:
32
+ source:
33
+ type: String
34
+ desc: |
35
+ The type of API or file to use for the issues source.
36
+ May be `jira`, `github`, `gitlab`, or `rhyml`.
37
+ cmmt: Issue source API type (jira, github, gitlab, rhyml)
38
+ dflt: rhyml
39
+ docs: |
40
+ The `jira`, `github`, and `gitlab` types are all REST APIs that return an individualized JSON payload upon request, to be converted to RHYML format.
41
+
42
+ Alternately, you may use a file directly written in <<rhyml,RHYML-style YAML>> (`rhyml`).
43
+
44
+ If you wish to mix Git and API sources, this field should still reference the API.
45
+
46
+ Custom APIs are also available, but you will need to create a custom client in the `_apis` directory (<<conf_ppty_paths_api_clients_dir>>), and a custom mapping in the `_mappings` directory (<<conf_ppty_paths_mappings_dir).
47
+ project:
48
+ type: Slug
49
+ desc: |
50
+ The string used to identify the project in the remote API.
51
+ Only required if the API requires a project identifier.
52
+ href:
53
+ type: URI
54
+ desc: |
55
+ The local or remote URI for the API or JSON file.
56
+ Either the REST API endpoint path or the path to a local or remote JSON file containing the issues data.
57
+
58
+ This field may be templated, accepting Liquid placeholders like `{{ proj }}` (the sibling `project` property) or `{{ version }}` (the argued release version code).
59
+ templating:
60
+ delay: false
61
+ auth:
62
+ desc: |
63
+ Properties related to API authentication.
64
+
65
+ This block should be unnecessary if you use a supported API (Jira, GitHub, GitLab), unless you wish to use differently named environment variables for API credentials.
66
+ properties:
67
+ mode:
68
+ desc: |
69
+ The type of authentication to use.
70
+
71
+ Options are: `basic`, `token`, `bearer`, `header`, `query`, `none`.
72
+ header:
73
+ type: String
74
+ desc: |
75
+ The header to use for authentication.
76
+ Only used if `origin.auth.mode` is `header`.
77
+ cred_uri:
78
+ type: URI
79
+ desc: |
80
+ The location of the API credentials file for declaring API authentication arguments without environment variables.
81
+
82
+ The value can be a local path with read access or an HTTP path (not recommended unless ReleaseHx is always executed on an organizational VPN).
83
+ docs: |
84
+ The default order of credential strings defaults to:
85
+
86
+ ....
87
+ API_KEY
88
+ USERNAME
89
+ ORGANIZATION
90
+ ....
91
+
92
+ However, this format can be customized using <<conf_ppty_cred_key_line>>, <<conf_ppty_cred_user_line>>, and <<conf_ppty_cred_org_line>>.
93
+
94
+ Note that each of these lines can be overridden with an environment variable: <<conf_ppty_origin_auth_key_env>>, <<conf_ppty_origin_auth_user_env>>, and <<conf_ppty_origin_auth_org_env>>.
95
+
96
+ [IMPORTANT]
97
+ This file should probably be added to `.gitignore` in your application repo.
98
+ dflt: "{default_api_cred_env}"
99
+ cred_key_line:
100
+ type: Number
101
+ desc: |
102
+ Number of the line of the credentials file (at <<conf_ppty_origin_auth_cred_uri>>) on which the key or token string appears.
103
+ dflt: 1
104
+ cred_user_line:
105
+ type: Number
106
+ desc: |
107
+ Number of the line of the credentials file (at <<conf_ppty_origin_auth_cred_uri>>) on which the user string appears.
108
+ dflt: 2
109
+ cred_org_line:
110
+ type: Number
111
+ desc: |
112
+ Number of the line of the credentials file (at <<conf_ppty_origin_auth_cred_uri>>) on which the org string appears.
113
+ dflt: 3
114
+ key_env:
115
+ type: String
116
+ desc: |
117
+ Name of the environment variable containing the API key or token.
118
+ Will override the key line in an existing credentials file (see <<conf_ppty_origin_auth_cred_uri>>).
119
+ dflt: "{default_api_key_env}"
120
+ user_env:
121
+ type: String
122
+ desc: |
123
+ Name of the environment variable containing the API username.
124
+ Will override the user line in an existing credentials file (see <<conf_ppty_origin_auth_cred_uri>>).
125
+ dflt: "{default_api_user_env}"
126
+ org_env:
127
+ type: String
128
+ desc: |
129
+ Name of the environment variable containing the organization credential.
130
+ Will override the org line in an existing credentials file (see <<conf_ppty_origin_auth_cred_uri>>).
131
+ dflt: "{default_api_org_env}"
132
+
133
+ conversions:
134
+ desc: |
135
+ Details about content origination, as well as markup sources and conversion.
136
+ Used to assist mapping between API source payloads and the corresponding properties of their target RHYML _change_ records.
137
+ properties:
138
+ summ:
139
+ type: String
140
+ desc: |
141
+ The source of the summary (Changelog) content.
142
+ Must be `issue_heading`, `custom_field`, or `commit_message_heading`.
143
+
144
+ If `issue_heading`, the summary or title field will be used.
145
+ If `commit_message_heading`, the first line of the Git commit will be used.
146
+ dflt: issue
147
+ head:
148
+ type: String
149
+ desc: |
150
+ The source of release-note headlines, when it is not the same as the summary.
151
+
152
+ Unless a `head` is available in the RHYML source, the `summ` will be used.
153
+ By default, ReleaseHx does not generate a `head` property for work items.
154
+
155
+ Potential values: `issue_heading`, `release_note_heading`, or `commit_message_heading`.
156
+ docs: |
157
+ When set to *`issue_heading`*, the RHYML `head` property will derive from the issue title or summary.
158
+
159
+ When set to *`release_note_heading`* or *`commit_message_heading`*, the `head` property will derive from the first line of the release note or commit message, respectively, so long as it matches the Regular Expression set in `ppty.release_note_heading_pattern`.
160
+ When set to `commit_message_heading`, the RHYML `head` property will derive from the first line of the commit message.
161
+ note:
162
+ type: String
163
+ desc: |
164
+ The source of the release notes content.
165
+ Must be `issue_body`, `custom_field`, or `commit_message`.
166
+
167
+ Defaults to `issue_body` for GitHub and GitLab, but to `custom_field` for Jira.
168
+ note_custom_field:
169
+ type: String
170
+ desc: |
171
+ The name of the custom field to use for the release notes content.
172
+ Only used if `conversions.note` is `custom_field`.
173
+
174
+ This purposely has no default, as you will probably have to look up the actual field ID, which will be something like `customfield_10010`.
175
+ note_pattern:
176
+ type: RegExp
177
+ desc: |
178
+ The Regular Expressions pattern to match in the body of an issue or commit message, after which all content is considered the release `note` matter.
179
+
180
+ Defaults to a Markdown or AsciiDoc header or HTML comment with the case-insensitive string `release note` in it.
181
+
182
+ Uses Capture group `note` in the Regular Expression to establish the entire note content.
183
+
184
+ See the `conversions.head_pattern` property for details on extracting a heading (`head` in RHYML) from the `note` content.
185
+ dflt: '/^((#|=)+ (Draft )?Release Note.*)|(<!-- (draft )?release note -->)\n(?<note>\w(.|\n)+)/gmi'
186
+ head_pattern:
187
+ type: RegExp
188
+ desc: |
189
+ The Regular Expressions pattern to match in the `note` text to be used to establish a heading for the note (`head`).
190
+ This text is removed from the `note` value during a draft operation, if the pattern matches.
191
+
192
+ Defaults to a Markdown or AsciiDoc header or HTML comment with the case-insensitive string `release note` in it.
193
+
194
+ The `head` capture group is snipped from text matching this pattern.
195
+ dflt: /^(?<head>[A-Z].*[^.!])\n\n[A-Z].*/gm
196
+
197
+
198
+ markup:
199
+ type: String
200
+ desc: |
201
+ The origin markup format for notes.
202
+ May be `markdown` or `asciidoc`.
203
+ dflt: markdown
204
+ engine:
205
+ type: String
206
+ desc: |
207
+ The markup converter to use for the issues.
208
+ Defaults to `asciidoctor` for AsciiDoc and `redcarpet` for Markdown.
209
+ Options include `asciidoctor`, `redcarpet`, `commonmarker`, `kramdown`, or `pandoc`.
210
+
211
+ extensions:
212
+ desc: Default file extensions.
213
+ properties:
214
+ markdown:
215
+ desc: File extension for Markdown drafts.
216
+ type: String
217
+ dflt: 'md'
218
+ asciidoc:
219
+ desc: File extension for AsciiDoc drafts.
220
+ type: String
221
+ dflt: 'adoc'
222
+ yaml:
223
+ desc: File extension for YAML drafts.
224
+ type: String
225
+ dflt: 'yml'
226
+
227
+ types:
228
+ type: Map
229
+ desc: |
230
+ Issue types to include in the release history, in the order of display.
231
+
232
+ List as many as you wish to match up with corresponding metadata at the source.
233
+ properties:
234
+ label_prefix:
235
+ type: String
236
+ desc: |
237
+ The prefix used in issue labels to identify type labels.
238
+ For example, 'type:' would match labels like 'type:feature', 'type:bug'.
239
+ Another common pattern is 'kind:' for labels like 'kind:feature', 'kind:enhancement'.
240
+
241
+ If set to an empty string or null, type detection will only look for direct label matches
242
+ against the configured type slugs (e.g., looking for 'bug', 'feature' labels directly).
243
+ dflt: ''
244
+ docs: |
245
+ This setting allows you to customize how your organization names type labels.
246
+ The mapping system will look for labels that start with this prefix to determine the type of each change.
247
+
248
+ Examples:
249
+
250
+ * `type:` matches `type:feature`, `type:bug`
251
+ * `kind:` matches `kind:enhancement`, `kind:defect`
252
+ * `category-` matches `category-feature`, `category-bugfix`
253
+
254
+ When no prefix is configured (empty string), the system will look for labels that directly match
255
+ the `slug` property of each configured type.
256
+ feature:
257
+ desc: |
258
+ A new capability, functionality, or interface element.
259
+ properties:
260
+ slug: &type_slug_ppty
261
+ type: String
262
+ desc: |
263
+ The literal string used in the Issues system for tagging or labeling an issue to be handled, if different than the key name.
264
+ dflt: feature
265
+ text: &type_text_ppty
266
+ type: String
267
+ desc: |
268
+ The display label for the type in the release history output.
269
+ Defaults to the capitalized key name.
270
+ dflt: New feature
271
+ head: &type_head_ppty
272
+ type: String
273
+ desc: |
274
+ The header for the type in the release history output.
275
+ Defaults in templates to the `text` property pluralized.
276
+ dflt: New features
277
+ icon: &type_icon_ppty
278
+ type: String
279
+ desc: |
280
+ The icon to use for issues of this type.
281
+ dflt: plus-square-o
282
+ bug:
283
+ desc: |
284
+ A fix for a previously reported issue.
285
+ properties:
286
+ slug:
287
+ <<: *type_slug_ppty
288
+ dflt: bug
289
+ text:
290
+ <<: *type_text_ppty
291
+ dflt: Bug fix
292
+ head:
293
+ <<: *type_head_ppty
294
+ dflt: Bug fixes
295
+ icon:
296
+ <<: *type_icon_ppty
297
+ dflt: bug
298
+ improvement:
299
+ desc: |
300
+ An enhancement to an existing capability, functionality, or interface element.
301
+ properties:
302
+ slug:
303
+ <<: *type_slug_ppty
304
+ dflt: improvement
305
+ text:
306
+ <<: *type_text_ppty
307
+ dflt: Improvement
308
+ head:
309
+ <<: *type_head_ppty
310
+ dflt: Improvements
311
+ icon:
312
+ <<: *type_icon_ppty
313
+ dflt: wrench
314
+ documentation:
315
+ desc: |
316
+ An update to the documentation.
317
+ properties:
318
+ slug:
319
+ <<: *type_slug_ppty
320
+ dflt: documentation
321
+ text:
322
+ <<: *type_text_ppty
323
+ dflt: Documentation
324
+ head:
325
+ <<: *type_head_ppty
326
+ dflt: Docs Changes
327
+ icon:
328
+ <<: *type_icon_ppty
329
+ dflt: book
330
+ <type_name>:
331
+ desc: |
332
+ The corresponding issue type.
333
+
334
+ The key should be a simple string for referencing the slug in RHYML and ReleaseHx templates.
335
+ This is what will be entered in a change's `type` property in RHYML.
336
+ properties:
337
+ slug:
338
+ <<: *type_slug_ppty
339
+ dflt: null
340
+ text: &type_text_ppty
341
+ type: String
342
+ desc: |
343
+ The display label for the type in the release history output.
344
+ Defaults to the capitalized key name.
345
+ dflt: null
346
+ head:
347
+ <<: *type_head_ppty
348
+ dflt: null
349
+ icon:
350
+ <<: *type_icon_ppty
351
+ dflt: null
352
+
353
+ parts:
354
+ type: Map
355
+ desc: |
356
+ The map of product components to include in the release history, in the order of display.
357
+
358
+ List as many as you wish to match up with corresponding metadata at the source.
359
+ properties:
360
+ label_prefix:
361
+ type: String
362
+ desc: |
363
+ The prefix used in issue labels to identify component/part labels.
364
+ For example, 'part:' would match labels like 'part:frontend', 'part:backend'.
365
+ Another common pattern is 'component:' for labels like 'component:ui', 'component:api'.
366
+ dflt: 'part:'
367
+ docs: |
368
+ This setting allows you to customize how your organization names component labels.
369
+ The mapping system will look for labels that start with this prefix to determine which parts/components are affected by each change.
370
+
371
+ Examples:
372
+
373
+ * `part:` matches `part:frontend`, `part:backend`
374
+ * `component:` matches `component:ui`, `component:api`
375
+ * `area-` matches `area-security`, `area-performance`
376
+ <part_name>:
377
+ desc: |
378
+ The corresponding product component.
379
+
380
+ The key should be a simple string for referencing the slug in RHYML and ReleaseHx templates.
381
+ This is what will be entered in a change's `part` property in RHYML.
382
+ type: Map
383
+ properties:
384
+ slug:
385
+ type: String
386
+ desc: |
387
+ The literal string used in the Issues system for tagging or labeling an issue to be handled, if different than the key name.
388
+
389
+ [NOTE]
390
+ This technically does not have to be a "`Slug`" String, if the system permits spaces, colons, etc.
391
+ It just needs to _exactly_ match whatever String the remote API returns to represent the label/tag.
392
+ text:
393
+ type: String
394
+ desc: |
395
+ The display text for the component in the release history output.
396
+ Defaults to the capitalized key name.
397
+ head:
398
+ type: String
399
+ desc: |
400
+ The header for the component in the release history output.
401
+ Defaults in templates to the `text` property pluralized.
402
+ icon:
403
+ type: String
404
+ desc: |
405
+ The icon to use for issues that affect this component.
406
+
407
+ tags:
408
+ type: Array
409
+ desc: |
410
+ Handling for tags, labels, or toggles associated with source Issues.
411
+
412
+ Subordinate property keys (other than `include` and `exclude`) represent individual tag names, with the default set documented here.
413
+ The property `<your_tag_name>` represents arbitrarily named tags, any number of which you are welcome to add.
414
+
415
+ This block serves to filter out any unrelated labels/tags ingested from APIs during the conversion from payload to RHYML draft.
416
+ Only tags with their own property here will be ported from the issue source to the RHYML change record's `tags` Array.
417
+ properties:
418
+ _include:
419
+ type: Array
420
+ desc: |
421
+ The tags, labels, or toggles that trigger inclusion in the release history.
422
+ dflt: [highlight, deprecation, removal, breaking, experimental, changelog]
423
+ _exclude:
424
+ type: Array
425
+ desc: |
426
+ The list of tags that cause a change/issue to be excluded from the release history.
427
+ dflt: []
428
+ highlight:
429
+ desc:
430
+ The tag, label, or toggle that indicates an issue is to be highlighted or prioritized in sorts.
431
+ properties:
432
+ head: &tag_head_ppty
433
+ desc: How this tag will display as a grouping title.
434
+ type: String
435
+ dflt: Highlights
436
+ text: &tag_text_ppty
437
+ desc: How this tag will display as a label.
438
+ type: String
439
+ dflt: highlight
440
+ slug: &tag_slug_ppty
441
+ type: String
442
+ desc: |
443
+ The literal string used in the Issues system for tagging or labeling an issue to be handled, if different than the key name.
444
+
445
+ [NOTE]
446
+ This technically does not have to be a "`Slug`" String, if the system permits spaces.
447
+ It just needs to exactly match whatever String the remote API returns to represent the label/tag.
448
+ dflt: highlighted
449
+ icon: &tag_icon_ppty
450
+ type: String
451
+ desc: |
452
+ The icon to use for issues so-tagged.
453
+ dflt: star
454
+ drop: &tag_drop_ppty
455
+ type: Boolean
456
+ desc: |
457
+ Whether to drop this tag when creating a RHYML object from API source.
458
+ Basically decides whether this tag is user-facing.
459
+ dflt: false
460
+ groupable: &tag_groupable_ppty
461
+ type: Boolean
462
+ desc: |
463
+ Whether this tag can be used to group issues in the release history.
464
+ dflt: true
465
+ breaking:
466
+ desc:
467
+ The tag, label, or toggle that indicates a potentially disruptive change.
468
+ properties:
469
+ head:
470
+ <<: *tag_head_ppty
471
+ dflt: Breaking Changes
472
+ text:
473
+ <<: *tag_text_ppty
474
+ dflt: Breaking
475
+ slug:
476
+ <<: *tag_slug_ppty
477
+ dflt: breaking
478
+ icon:
479
+ <<: *tag_icon_ppty
480
+ dflt: exclamation-triangle
481
+ drop: *tag_drop_ppty
482
+ groupable: *tag_groupable_ppty
483
+ removal:
484
+ desc:
485
+ The tag, label, or toggle that indicates a change includes a feature removal.
486
+ properties:
487
+ head:
488
+ <<: *tag_head_ppty
489
+ dflt: Feature Removals
490
+ text:
491
+ <<: *tag_text_ppty
492
+ dflt: Removed
493
+ slug:
494
+ <<: *tag_slug_ppty
495
+ dflt: removal
496
+ icon:
497
+ <<: *tag_icon_ppty
498
+ dflt: sign-out
499
+ drop: *tag_drop_ppty
500
+ groupable:
501
+ <<: *tag_groupable_ppty
502
+ deprecation:
503
+ desc:
504
+ The tag, label, or toggle that indicates an issue includes a feature discontinuation announcement.
505
+ properties:
506
+ head:
507
+ <<: *tag_head_ppty
508
+ dflt: Deprecations
509
+ text:
510
+ <<: *tag_text_ppty
511
+ dflt: Deprecated
512
+ slug:
513
+ <<: *tag_slug_ppty
514
+ dflt: deprecation
515
+ icon:
516
+ <<: *tag_icon_ppty
517
+ dflt: exclamation-triangle
518
+ drop: *tag_drop_ppty
519
+ groupable: *tag_groupable_ppty
520
+ security:
521
+ desc: |
522
+ The tag, label, or toggle that indicates a change includes a security-related alteration.
523
+ properties:
524
+ head:
525
+ <<: *tag_head_ppty
526
+ dflt: Security Fixes
527
+ text:
528
+ <<: *tag_text_ppty
529
+ dflt: Security
530
+ slug:
531
+ <<: *tag_slug_ppty
532
+ dflt: security
533
+ icon:
534
+ <<: *tag_icon_ppty
535
+ dflt: shield
536
+ drop: *tag_drop_ppty
537
+ groupable: *tag_groupable_ppty
538
+ experimental:
539
+ desc:
540
+ The tag, label, or toggle that indicates a feature that is not yet stable or may not be permanent.
541
+ properties:
542
+ head:
543
+ <<: *tag_head_ppty
544
+ dflt: Experimental Features
545
+ text:
546
+ <<: *tag_text_ppty
547
+ dflt: Experimental
548
+ slug:
549
+ <<: *tag_slug_ppty
550
+ dflt: experimental
551
+ icon:
552
+ <<: *tag_icon_ppty
553
+ dflt: flask
554
+ drop: *tag_drop_ppty
555
+ groupable: *tag_groupable_ppty
556
+ internal:
557
+ desc:
558
+ The tag, label, or toggle that indicates an issue documents a feature that is not intended for "`public`" use or visibility.
559
+ properties:
560
+ head:
561
+ <<: *tag_head_ppty
562
+ dflt: Internal Changes
563
+ text:
564
+ <<: *tag_text_ppty
565
+ dflt: Internal
566
+ slug:
567
+ <<: *tag_slug_ppty
568
+ dflt: internal
569
+ icon:
570
+ <<: *tag_icon_ppty
571
+ dflt: lock
572
+ drop: *tag_drop_ppty
573
+ groupable: *tag_groupable_ppty
574
+ changelog:
575
+ desc: |
576
+ The tag, label, or toggle that indicates an issue should appear in the Changelog even if it does not have a Release Note.
577
+
578
+ There is no icon associated with changelog-tagged issues, as it is only declaring that an issue belongs in the Changelog.
579
+ properties:
580
+ slug:
581
+ <<: *tag_slug_ppty
582
+ dflt: changelog
583
+ drop:
584
+ <<: *tag_drop_ppty
585
+ dflt: true
586
+ groupable:
587
+ <<: *tag_groupable_ppty
588
+ dflt: false
589
+ release_note_needed:
590
+ desc:
591
+ The tag, label, or toggle that indicates an issue requires a release note to be written.
592
+ This is used by the `rhx` CLI to determine which issues are expected to contain release notes when the release-note content is empty.
593
+
594
+ This tag can be automatically removed, and it does not show up in published Changelog or Release Notes (unless you add it).
595
+ properties:
596
+ slug:
597
+ <<: *tag_slug_ppty
598
+ dflt: release_note_needed
599
+ drop:
600
+ <<: *tag_drop_ppty
601
+ dflt: true
602
+ groupable:
603
+ <<: *tag_groupable_ppty
604
+ dflt: false
605
+ <your_tag_name>:
606
+ desc:
607
+ Unlimited custom tags of your choosing, associated with a tag, label, or toggle in the Issues system _or_ manually assignable in RHYML.
608
+ docs: |
609
+ These property represents any arbitrarily named tags you might wish to add.
610
+ No `slug` sub-property is available because the name of this property should exactly match your tag/label.
611
+ properties:
612
+ head:
613
+ <<: *tag_head_ppty
614
+ dflt: null
615
+ text:
616
+ <<: *tag_text_ppty
617
+ dflt: null
618
+ icon:
619
+ <<: *tag_icon_ppty
620
+ dflt: null
621
+ drop:
622
+ <<: *tag_drop_ppty
623
+ dflt: null
624
+ groupable:
625
+ <<: *tag_groupable_ppty
626
+ dflt: null
627
+
628
+ links:
629
+ desc: |
630
+ Path templates and other metadata for building links to online references like issues (web) and commits (git).
631
+ properties:
632
+ web:
633
+ desc: Properties to enable linking to issue-management system ticket URLs corresponding to individual changes.
634
+ properties:
635
+ href:
636
+ type: Liquid
637
+ desc: |
638
+ The URL template for the links to the issue-management system ticket URL.
639
+ May include `{{ tick }}` placeholder or any other from the change object.
640
+ docs: |
641
+ For example:
642
+
643
+ * `https://jira.example.com/issues/{{ tick }}`
644
+ * `https://github.com/example/project/issues/{{ tick }}`
645
+
646
+ Web links must still be enabled in <<conf_ppty_history_items_show_issue_links>>, <<conf_ppty_changelog_items_show_issue_links>>, or <<conf_ppty_notes_items_show_issue_links>> properties.
647
+ icon:
648
+ type: String
649
+ desc: The icon to use for the issue links.
650
+ dflt: ticket
651
+ text:
652
+ type: Liquid
653
+ desc: |
654
+ The text label to use for the issue links.
655
+ May include placeholders for any variables in the `change` object.
656
+ dflt: '{{ tick }}'
657
+ git:
658
+ desc: |
659
+ Properties to enable linking to the Git commit URL corresponding to individual changes.
660
+ properties:
661
+ href:
662
+ type: Liquid
663
+ desc: |
664
+ The URL template for the git links in the release history listings.
665
+ May include `{{ hash }}` placeholder.
666
+ docs: |
667
+ For example:
668
+
669
+ * `https://git.example.com/project/commit/{{ hash }}`
670
+ * `https://github.com/example/project/commit/{{ hash }}`
671
+
672
+ Git links must still be enabled in <<conf_ppty_history_items_show_git_links>>, <<conf_ppty_changelog_items_show_git_links>>, or <<conf_ppty_notes_items_show_git_links>> properties.
673
+ icon:
674
+ type: String
675
+ desc: The icon to use for the git links.
676
+ dflt: code-fork
677
+ text:
678
+ type: Liquid
679
+ desc: |
680
+ The text label to use for the git links.
681
+ May include `{{ hash }}` placeholder.
682
+ dflt: '{{ hash | slice: 0, 7 }}'
683
+ user:
684
+ properties:
685
+ href:
686
+ type: Template
687
+ desc: |
688
+ A template for forming links to bio or homepages for the lead contributor of a change.
689
+ May include `{{ username }}` placeholder.
690
+ docs: |
691
+ For example:
692
+
693
+ * `https://github.com/{{ username }}`
694
+ templating:
695
+ delay: true
696
+ default: liquid
697
+ icon:
698
+ type: String
699
+ desc: The icon to use for the user links.
700
+ dflt: user
701
+ text:
702
+ type: Liquid
703
+ desc: |
704
+ The text label to use for the user links.
705
+ May include `{{ username }}` placeholder.
706
+ dflt: '{{ username }}'
707
+ get:
708
+ desc: |
709
+ Properties to enable linking to the download or installation instructions for the release.
710
+ properties:
711
+ href:
712
+ type: Liquid
713
+ desc: |
714
+ The URL template for the release download page.
715
+ May include `{{ code }}` (version ID) as placeholder.
716
+ docs: |
717
+ For example:
718
+
719
+ * `https://example.com/releases/{{ code }}`
720
+ * `https://example.com/dl/{{ code | replace: '.', '-' }}`
721
+
722
+ The existence of this property causes the download link or element to appear in the Release History page.
723
+ icon:
724
+ type: String
725
+ desc: The icon to use for the download links.
726
+ dflt: download
727
+ text:
728
+ type: Liquid
729
+ desc: |
730
+ The text label to use for the download links.
731
+ May include `{{ code }}` (version ID) as placeholder.
732
+ dflt: 'Download {{ code }}'
733
+
734
+ paths:
735
+ desc: |
736
+ The configuration for the paths to include in the release history listings.
737
+ properties:
738
+ drafts_dir:
739
+ type: Path
740
+ desc: |
741
+ The path to the output directory for generated drafts (YAML, Markdown, AsciiDoc).
742
+ dflt: "{default_drafts_dir}"
743
+ enrich_dir:
744
+ type: Path
745
+ desc: |
746
+ The path to the output directory for enriched files (HTML, PDF).
747
+ dflt: "{default_enrich_dir}"
748
+ output_dir:
749
+ type: Path
750
+ desc: |
751
+ The base directory from which any other output paths are relative.
752
+ This is the parent directory for <<conf_ppty_paths_drafts_dir>> and <<conf_ppty_paths_enrich_dir>>.
753
+ It also serves as a base path for any argued files.
754
+
755
+ Example: If this property is set to `_output`, and <<conf_ppty_paths_drafts_dir>> is `_drafts`, then running `rhx 1.1.0 --md --yaml --asciidoc` would generate the files at `_releasehx/_drafts/`.
756
+ dflt: "{default_output_dir}"
757
+ draft_filename:
758
+ type: FileName
759
+ desc: |
760
+ The filename template for the draft files.
761
+ docs: |
762
+ May include `{{ version }}` and `{{ format_ext }}` as placeholders, where `format_ext` is determined at file-write time and based on preferences defined in the `config.extensions` block.
763
+ dflt: '{{ version }}.{{ format_ext }}'
764
+ templating:
765
+ delay: true
766
+ default: liquid
767
+ enrich_filename:
768
+ type: FileName
769
+ desc: |
770
+ The filename template for the enriched files.
771
+ docs: |
772
+ May include `{{ version }}` and `{{ format_ext }}` as placeholders, where `format_ext`.
773
+
774
+ Published file extensions must be: `.html`, `.pdf`.
775
+ They can be set with <<conf_ppty_extensions_html>> and <<conf_ppty_extensions_pdf>> properties, respectively.
776
+ dflt: 'release-history-{{ version }}.{{ format_ext }}'
777
+ templating:
778
+ delay: true
779
+ default: liquid
780
+ payloads_dir:
781
+ type: Path
782
+ desc: |
783
+ The path to the directory for storing API payloads.
784
+ This is used to store the raw API responses for debugging and reference.
785
+ dflt: "{default_payloads_dir}"
786
+ cache:
787
+ desc: |
788
+ Settings for the ReleaseHx application cache.
789
+ properties:
790
+ enabled:
791
+ type: Boolean
792
+ desc: |
793
+ Enable automatic caching of API responses to improve performance and reduce API calls.
794
+ dflt: false
795
+ ttl_hours:
796
+ type: Integer
797
+ desc: |
798
+ Time-to-live for cached API responses in hours.
799
+ After this time, cached responses will be considered stale and fresh data will be fetched from the API.
800
+ dflt: 24
801
+ dir:
802
+ type: Path
803
+ desc: |
804
+ The directory where cached API responses are stored.
805
+ Cache files are organized by API type, project, and version.
806
+ dflt: "{default_cache_dir}"
807
+ prompt_gitignore:
808
+ type: Boolean
809
+ desc: |
810
+ Quietly check the project's git status after writing to cache and, if cache is found untracked, suggest adding this cache path to .gitignore or deleting and disabling caching.
811
+ dflt: true
812
+ templates_dir:
813
+ type: Path
814
+ desc: |
815
+ The path to the templates directory.
816
+ dflt: "{default_templates_dir}"
817
+ mappings_dir:
818
+ type: String
819
+ desc: |
820
+ The path to the directory containing user-defined API mappings.
821
+
822
+ ReleaseHx checks here first for a file named `<origin_source_name>.yaml` or `<origin_source_name>.yml`, where `<origin_source_name>` is set in the `origin.source` property.
823
+ If no file is found, the mapping is expected to be supplied by the gem (see `<GEM_ROOT>/mappings/`).
824
+ dflt: "{default_mappings_dir}"
825
+ api_clients_dir:
826
+ type: String
827
+ desc: |
828
+ The path to the directory containing user-defined API client definitions.
829
+
830
+ ReleaseHx checks here first for a file named `<api_from_name>.yaml`, where `<api_from_name>` is set in the <<conf_ppty_origin_source>>` property.
831
+ If no file is found, the client class is expected to be supplied by the gem (see `<GEM_ROOT>/lib/releasehx/apis/`).
832
+ dflt: "{default_api_clients_dir}"
833
+
834
+ modes:
835
+ desc: |
836
+ Default settings for `rhx` command executions.
837
+ properties:
838
+ wrapped:
839
+ type: Boolean
840
+ desc: |
841
+ Include (or exclude) head, header, and footer elements when enriching to HTML.
842
+ dflt: false
843
+ html_frontmatter:
844
+ type: Boolean
845
+ desc: |
846
+ Include frontmatter in the rendered HTML.
847
+
848
+ See the `templates.page_frontmatter` property for details.
849
+ dflt: true
850
+ markdown_frontmatter:
851
+ type: Boolean
852
+ desc: |
853
+ Include frontmatter in Markdown drafts.
854
+
855
+ Uses the `templates.markdown_frontmatter` template.
856
+ dflt: false
857
+ asciidoc_frontmatter:
858
+ type: Boolean
859
+ desc: |
860
+ Include frontmatter in AsciiDoc drafts.
861
+
862
+ Uses the `templates.asciidoc_frontmatter` template.
863
+ fetch:
864
+ type: String
865
+ desc: |
866
+ What to fetch when gathering issues from API.
867
+
868
+ Valid entries:
869
+
870
+ * `all-tagged` -- fetches issues with `release_note_needed` tag.
871
+ dflt: notes-only
872
+ remove_excess_lines:
873
+ type: Integer
874
+ desc: |
875
+ Reduces _N_+ consecutive blank lines to _N_ lines.
876
+ dflt: 1
877
+
878
+ rhyml:
879
+ desc: |
880
+ Settings related to RHYML data objects and documents.
881
+ properties:
882
+ # authoring properties
883
+ markup:
884
+ type: String
885
+ desc: |
886
+ The markup format for the `note` or `memo` properties of RHYML objects.
887
+
888
+ Change to `asciidoc` to convert upstream Markdown to AsciiDoc.
889
+
890
+ This setting can be set (and overridden) with the `$config.markup` property in any given RHYML document.
891
+ dflt: markdown
892
+ # drafting properties
893
+ chid:
894
+ type: Slug
895
+ desc: |
896
+ The template for automatic change ID/slug construction, if available at draft-time.
897
+ docs: |
898
+ A liquid template with access to local variables including:
899
+
900
+ Release variables::
901
+
902
+ * `release.code`
903
+ * `release.date`
904
+ * `release.hash`
905
+
906
+ Work/change item variables::
907
+
908
+ * `change.tick`
909
+ * `change.hash`
910
+ * `change.type`
911
+ * `change.part`
912
+ * `change.summ`
913
+
914
+ The template established here is only for drafting `chid` slugs.
915
+ It is not used down the line to validate `chid` entries, which will be valid as long as they are Slug-formatted strings.
916
+
917
+ dflt: |
918
+ {{- change.tick }}-{{ change.summ | truncate: 20 | slugify }}
919
+ templating:
920
+ delay: true
921
+ default: liquid
922
+ empty_notes:
923
+ type: String
924
+ desc: |
925
+ What to do for issues that lack a release note but have the `release_note_needed` tag (or a label otherwise declared in <<conf_ppty_tags_release_note_needed_slug>>).
926
+
927
+ * `skip` the issue when drafting notes (can update with `--amend`)
928
+ * `empty` include the issue with an empty note
929
+ * `dump` the complete issue body/description and commit message as the `note` property
930
+ // * `ai` generate a note using generative AI
931
+ dflt: skip
932
+ empty_notes_content:
933
+ type: String
934
+ desc: |
935
+ The content to use for empty notes when <<conf_ppty_rhyml_empty_notes>> is set to 'empty'
936
+ dflt: RELEASE NOTE NEEDED
937
+ max_parts:
938
+ type: Integer
939
+ desc: |
940
+ The maximum number of affected _part_ categories that can be recorded for a single change.
941
+
942
+ When `0`, _part_ records are disabled for all changes.
943
+ When `1`, only one _part_ is allowed per change (String).
944
+ When `2` or more, a single affiliated _part_ category may be recorded using the `part` property, but more than one must be recorded using the `parts` property (Array).
945
+ dflt: 1
946
+ pasterize_summ:
947
+ type: Boolean
948
+ desc: |
949
+ Whether to convert verbs in the `summ` property to past tense when drafting.
950
+ Replaces common words like `adds` with `added`, `fix` with `fixed`, etc.
951
+ dflt: false
952
+ pasterize_head:
953
+ type: Boolean
954
+ desc: |
955
+ Whether to convert verbs in the `head` property to past tense when drafting.
956
+ Replaces common words like `adds` with `added`, `fix` with `fixed`, etc.
957
+ dflt: false
958
+ # git_version_tag:
959
+ # type: Liquid
960
+ # desc: |
961
+ # For "`raw Git`" setups, this is the Git-tag label format for the version.
962
+ # Uses the variable `version` as the _argued version_.
963
+ # dflt: 'v{{ version }}'
964
+ # docs: |
965
+ # All commits from (1) the previous instance of a tag matching the `templates.git_version_tag_pattern` expression to (2) the instance of the tag matching the _argued version_, all (3) from the `templates.git_branch_name`, will be collected as potential entries for Changelog/Release Notes.
966
+ #
967
+ # Take the following example:
968
+ # _this property_ is set to the default template and the sibling `git_version_tag_pattern` property is set to its default.
969
+ #
970
+ # Running `rhx 1.1.2 --yaml` will collect _all_ commits prior to the _argued_ version tag (`v1.1.2`) and the previous Git tag that matches the pattern.
971
+ #
972
+ # Tags like `v1.1.1-alpha` will not operate as a boundary unless they are incorporated into the pattern.
973
+ # git_version_tag_pattern:
974
+ # type: RegExp
975
+ # desc: |
976
+ # The Regular Expressions pattern to count as a previous version in the Git history, for "`raw Git`" setups.
977
+ # dflt: /^v\d+\.\d+\.\d+$/
978
+ # docs: |
979
+ # The
980
+ # git_branch_name:
981
+ # type: Liquid
982
+ # desc: |
983
+ # For "`raw Git`" setups, this is the Git-branch name format for the determining version.
984
+ # All commits on this branch will be considered potential entries for Changelog/Release Notes.
985
+ #
986
+ # When using Git tags to determine version, this property should be set to a branch like `main` or `trunk` `release`.
987
+ # dflt: 'v{{ version }}'
988
+
989
+ history:
990
+ desc: |
991
+ Configurations for the overall document, when applicable.
992
+ properties:
993
+ head:
994
+ type: String
995
+ desc: |
996
+ The header for the release history output.
997
+ dflt: Release History -- {{ release.code }} - {{ release.date }}
998
+ templating:
999
+ delay: true
1000
+ default: liquid
1001
+ htag:
1002
+ type: String
1003
+ desc: |
1004
+ The heading level (H1, H2, etc) for the release history header.
1005
+ dflt: h1
1006
+ markdown_frontmatter:
1007
+ type: Liquid
1008
+ desc: |
1009
+ Designates the content inserted at the top of Markdown files as document-level metadata.
1010
+ docs: |
1011
+ A Liquid template to be prepended at the top of Markdown draft files.
1012
+
1013
+ Templates may contain the following variables, automatically generated, as applicable:
1014
+
1015
+ * `date` (DateTime)
1016
+ * `version` (String)
1017
+ * `title` (String)
1018
+ dflt: &markdown_frontmatter_tplt |
1019
+ ---
1020
+ title: Release History for {{ release.code }}
1021
+ version: {{ release.code }}
1022
+ date: {{ release.date }}
1023
+ ---
1024
+ asciidoc_frontmatter:
1025
+ type: Liquid
1026
+ desc: |
1027
+ Designates the way front-matter is inserted at the top of AsciiDoc files.
1028
+ Several variables are available to templates.
1029
+
1030
+ AsciiDoc frontmatter templates may also contain AsciiDoc attribute placeholders.
1031
+ dflt: |
1032
+ :page-title: Release History for {{ release.code }}
1033
+ :page-version: {{ release.code }}
1034
+ :page-date: {{ release.date }}
1035
+ html_frontmatter:
1036
+ type: Liquid
1037
+ desc: |
1038
+ Designates the way front-matter is inserted at the top of _unwrapped_ rendered HTML.
1039
+ docs: |
1040
+ The `frontmatter` property is a Liquid template that is inserted at the top of the rendered HTML file.
1041
+
1042
+ It may include `{{ title }}`, `{{ version }}`, `{{ date }}`, as well as any `vars`-scoped variables as you pass in.
1043
+ dflt: *markdown_frontmatter_tplt
1044
+ items:
1045
+ desc: |
1046
+ Settings pertaining to displayed items across Changelog and Release Notes sections.
1047
+
1048
+ Most of these settings can be defined separately for each section under <<conf_ppty_changelog_items>> and <<conf_ppty_notes_items>>.
1049
+ If an identically named setting exists, it will override the primary designator defined in this `config.history.items` block.
1050
+ properties:
1051
+ allow_redundant: &allow_redundant_ppty
1052
+ type: Boolean
1053
+ desc: |
1054
+ Whether to allow duplicate entries in a given section, for instance across groups for `part:group` sorts where a change affects multiple parts.
1055
+ dflt: false
1056
+ show_issue_links: &show_issue_links_ppty
1057
+ type: Boolean
1058
+ desc: |
1059
+ Whether to include web links in item metadata.
1060
+
1061
+ Requires `links.web` to be defined.
1062
+ dflt: false
1063
+ show_git_links: &show_git_links_ppty
1064
+ type: Boolean
1065
+ desc: |
1066
+ Whether to include git links in item metadata.
1067
+
1068
+ Requires `links.git` to be defined.
1069
+ dflt: false
1070
+ metadata_labels: &metadata_labels_ppty
1071
+ type: String
1072
+ desc: |
1073
+ If and where to display icons in relation to labels in item metadata.
1074
+
1075
+ Use `before` or `after` to choose a spot, `none` or `'$nil'` to disable.
1076
+ dflt: before
1077
+ metadata_icons: &metadata_icons_ppty
1078
+ type: Boolean
1079
+ desc: |
1080
+ Whether to include icons for metadata in item metadata.
1081
+ dflt: before
1082
+ show_lead: &show_lead_ppty
1083
+ type: Boolean
1084
+ desc: |
1085
+ Whether to include the lead-in text for the section in the item metadata.
1086
+ This is useful for displaying the section header in the item metadata.
1087
+ dflt: false
1088
+ show_type_label: &show_type_label_ppty
1089
+ type: Boolean
1090
+ desc: |
1091
+ Whether to show the type label in the item metadata output.
1092
+ If `false`, the type will be listed unlabeled in the output, for templates that support this option.
1093
+
1094
+ Corresponds to the <<conf_ppty_history_labeling_type_label>> property, which defines the content displayed when this property is `true` for a given section of the history output.
1095
+ dflt: false
1096
+ show_parts_label: &show_parts_label_ppty
1097
+ type: Boolean
1098
+ desc: |
1099
+ Whether to show the parts label in the item metadata output.
1100
+ If `false`, parts will be listed unlabeled in the output, for templates that support this option.
1101
+
1102
+ Corresponds to the <<conf_ppty_history_labeling_parts_label>> property (and optionally the <<conf_ppty_history_labeling_part_label>>), which defines the content displayed when this property is `true` for a given section of the history output.
1103
+ dflt: false
1104
+ show_tags_label: &show_tags_label_ppty
1105
+ type: Boolean
1106
+ desc: |
1107
+ Whether to show the tags label in the item metadata output.
1108
+ If `false`, tags will be listed unlabeled in the output, for templates that support this option.
1109
+
1110
+ Corresponds to the <<conf_ppty_history_labeling_tags_label>> property (and optionally the <<conf_ppty_history_labeling_tag_label>>), which defines the content displayed when this property is `true` for a given section of the history output.
1111
+ dflt: false
1112
+ show_lead_label: &show_lead_label_ppty
1113
+ type: Boolean
1114
+ desc: |
1115
+ Whether to show the lead label in the item metadata output.
1116
+ If `false`, the lead will be listed unlabeled in the output, for templates that support this option.
1117
+
1118
+ Corresponds to the <<conf_ppty_history_labeling_lead_label>> property, which defines the content displayed when this property is `true` for a given section of the history output.
1119
+ dflt: false
1120
+ show_auths_label: &show_auths_label_ppty
1121
+ type: Boolean
1122
+ desc: |
1123
+ Whether to show the authors label in the item metadata output.
1124
+ If `false`, authors will be listed unlabeled in the output, for templates that support this option.
1125
+
1126
+ Corresponds to the <<conf_ppty_history_labeling_auth_label>> property, which defines the content displayed when this property is `true` for a given section of the history output.
1127
+ dflt: false
1128
+ labeling:
1129
+ desc: |
1130
+ Settings for labeling items in the release history output.
1131
+ These properties establish how metadata and other elements apply to a given subject's nomenclature.
1132
+ If you want to refer to "`tags`" as "`labels`" or "`parts`" as "`components`", map those namespaces here.
1133
+ properties:
1134
+ singularize_labels:
1135
+ type: Boolean
1136
+ desc: |
1137
+ Whether to singularize labels in the output _when only one instance_ of the category is present.
1138
+ For instance, if a change has only one part and the `conf_ppty_history_labeling_part_label` is set to `Part`, the output will use labeling like *Part:* instead of *Parts:*.
1139
+
1140
+ This also applies to `tag_label` and `auth_label` as well as the `part_label`.
1141
+ The `type` and `lead` labels are not affected by this setting.
1142
+ dflt: true
1143
+ type_label:
1144
+ type: String
1145
+ desc: |
1146
+ The label to use for the type of change.
1147
+ Defaults to the `type.text` property of the change.
1148
+ dflt: type
1149
+ type_icon:
1150
+ type: String
1151
+ desc: |
1152
+ The icon to use for the type of change.
1153
+ Defaults to the `type.icon` property of the change.
1154
+ parts_label:
1155
+ type: String
1156
+ desc: |
1157
+ The label to use for the part/component affected by the change.
1158
+ dflt: Components
1159
+ part_label:
1160
+ type: String
1161
+ desc: |
1162
+ The label to use for the _singular_ part/component affected by the change, when only one part is permitted.
1163
+
1164
+ This value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or when the change has only one part _and_ <<conf_ppty_history_labeling_singularize_labels>> is `true`.
1165
+ dflt: Part
1166
+ parts_icon:
1167
+ type: String
1168
+ desc: |
1169
+ The icon to use for the part/component affected by the change.
1170
+ dflt: puzzle-piece
1171
+ tags_label:
1172
+ type: Array
1173
+ desc: |
1174
+ The tags associated with the change, if any.
1175
+ Defaults to an empty array.
1176
+ dflt: Tags
1177
+ tag_label:
1178
+ type: String
1179
+ desc: |
1180
+ The label to use for the _singular_ tag associated with the change, when only one tag is permitted.
1181
+
1182
+ This value will apply either when <<conf_ppty_rhyml_max_parts>> is set to `1` or when the change has only one tag _and_ <<conf_ppty_history_labeling_singularize_labels>> is `true`.
1183
+
1184
+ In supporting templates, this label will only be displayed if the show_tags_label` setting is `true` for the relevant section.
1185
+ dflt: Tag
1186
+ tags_icon:
1187
+ type: String
1188
+ desc: |
1189
+ The icon to use for the tags associated with the change.
1190
+ dflt: tags
1191
+ lead_label:
1192
+ type: String
1193
+ desc: |
1194
+ The label to use for the lead contributor of the change.
1195
+ dflt: Contributed by
1196
+ lead_icon:
1197
+ type: String
1198
+ desc: |
1199
+ The icon to use for the lead contributor of the change.
1200
+ dflt: user
1201
+ auths_label:
1202
+ type: String
1203
+ desc: |
1204
+ The label to use for the authors of the change.
1205
+ This is used when multiple authors are present.
1206
+ dflt: Contributors
1207
+ auth_label:
1208
+ type: String
1209
+ desc: |
1210
+ The label to use for the _singular_ author of the change, when only one author is listed and <<conf_ppty_history_labeling_singularize_labels>> is `true`.
1211
+ join_string:
1212
+ type: String
1213
+ desc: |
1214
+ The string to use to join multiple tags, parts, or authors in the output.
1215
+ Defaults to a comma and space (`, `).
1216
+ dflt: ', '
1217
+
1218
+ changelog:
1219
+ desc: |
1220
+ The configuration for the changelog output.
1221
+ properties:
1222
+ head:
1223
+ type: String
1224
+ desc: |
1225
+ The header for the changelog output.
1226
+ dflt: Changelog
1227
+ templating:
1228
+ delay: true
1229
+ default: liquid
1230
+ text:
1231
+ type: String
1232
+ desc: |
1233
+ The text for the changelog output.
1234
+ Change to `null` to hide.
1235
+ dflt: |
1236
+ Summaries of all user-facing changes made since the previous release.
1237
+ templating:
1238
+ delay: true
1239
+ default: liquid
1240
+ htag:
1241
+ type: String
1242
+ desc: |
1243
+ The heading level (H1, H2, etc) for the changelog section header.
1244
+ dflt: h2
1245
+ spot:
1246
+ type: Integer
1247
+ desc: |
1248
+ Where in the document to place the changelog (`1` = top, `2` = bottom).
1249
+ dflt: 2
1250
+ sort:
1251
+ type: Array
1252
+ desc: |
1253
+ The sort order for the changelog output.
1254
+ docs: &sort_docs_property |
1255
+ Indicate whether you wish to _group_ output by this sort criterion, or else just order by that criteria, with or without a label denoting the criterion.
1256
+
1257
+ If `<criterion>:group` (default), the output will be grouped into sections with the group instance
1258
+ If `<criterion>:grouping1`, the criterion will be added to the first of 2 grouping tiers into which the output will be divided.
1259
+ If `<criterion>:grouping2`, the criterion will be added to the second of 2 grouping tiers into which the output will be divided.
1260
+ If `<criterion>:label`, the output will be order by the criterion, with a label indicating the criterion.
1261
+ If `<criterion>:none`, the output will be ordered by the criterion, with no label.
1262
+
1263
+ For example:
1264
+
1265
+ [source,yaml]
1266
+ ----
1267
+ sort:
1268
+ - 'part:group'
1269
+ - 'type:label'
1270
+ ----
1271
+
1272
+ Would produce something like:
1273
+
1274
+ [source,markdown]
1275
+ ----
1276
+ ## Web UI
1277
+
1278
+ - Feature description or summary [New feature]
1279
+
1280
+ - Another feature description or summary [New feature]
1281
+
1282
+ - Improvement description or summary [Improvement]
1283
+
1284
+ ## Backend
1285
+
1286
+ - Feature description or summary [New feature]
1287
+
1288
+ - Bug fix description or summary [Bug Fixes]
1289
+ ----
1290
+
1291
+ For 2-tiered grouping arrangements, use something like:
1292
+
1293
+ [source,yaml]
1294
+ ----
1295
+ sort:
1296
+ - 'part:grouping1'
1297
+ - 'type:grouping2'
1298
+ ----
1299
+
1300
+ This would output for instance:
1301
+
1302
+ [source,markdown]
1303
+ ----
1304
+ ## Web UI
1305
+
1306
+ ### New features
1307
+ - Feature description or summary
1308
+ - Another feature description or summary
1309
+
1310
+ ### Improvements
1311
+ - Improvement description or summary
1312
+ ----
1313
+
1314
+ You may also use tag-based groupings, but the tags must be listed explicitly.
1315
+
1316
+ [source,yaml]
1317
+ ----
1318
+ sort:
1319
+ - 'breaking:group'
1320
+ - 'deprecation:group'
1321
+ - 'type:group'
1322
+ - 'part:label'
1323
+ ----
1324
+
1325
+ This would output something akin to:
1326
+
1327
+ [source,markdown]
1328
+ ----
1329
+ ## Breaking Changes
1330
+ - We are breaking this thing! [Web UI]
1331
+
1332
+ ## Deprecations
1333
+ - We are deprecating this thing! [Backend]
1334
+
1335
+ ## New features
1336
+ - Feature description or summary [Web UI]
1337
+ - Another feature description or summary [Web UI]
1338
+
1339
+ ## Improvements
1340
+ - Improvement description or summary [Backend]
1341
+ ----
1342
+
1343
+ dflt: ['part:grouping1']
1344
+ items: # was items
1345
+ desc: |
1346
+ Settings that affect the frame/shape and arrangement of individual changelog entries.
1347
+ properties:
1348
+ frame:
1349
+ type: String
1350
+ desc: |
1351
+ The layout for the changelog entry display.
1352
+
1353
+ Can be `ordered`, `unordered`, `paragraph`, or `basic`.
1354
+ dflt: unordered
1355
+ allow_redundant: *allow_redundant_ppty
1356
+ show_git_links: *show_git_links_ppty
1357
+ show_issue_links: *show_issue_links_ppty
1358
+ metadata_labels: *metadata_labels_ppty
1359
+ metadata_icons: *metadata_icons_ppty
1360
+ show_lead: *show_lead_ppty
1361
+ show_type_label: *show_type_label_ppty
1362
+ show_parts_label: *show_parts_label_ppty
1363
+ show_tags_label: *show_tags_label_ppty
1364
+ show_lead_label: *show_lead_label_ppty
1365
+ show_auths_label: *show_auths_label_ppty
1366
+
1367
+ notes:
1368
+ desc: |
1369
+ The configuration for the Release Notes listing section.
1370
+ properties:
1371
+ head:
1372
+ type: String
1373
+ desc: |
1374
+ The header for the notes output.
1375
+ dflt: Release Notes
1376
+ templating:
1377
+ delay: true
1378
+ default: liquid
1379
+ text:
1380
+ type: String
1381
+ desc: |
1382
+ The text for the release notes output.
1383
+ Change to `null` to hide.
1384
+ dflt: |
1385
+ Descriptions of any specially notable changes or additions since the previous release.
1386
+ templating:
1387
+ delay: true
1388
+ default: liquid
1389
+ htag:
1390
+ type: String
1391
+ desc: |
1392
+ The heading level (H1, H2, etc) for the release notes section header.
1393
+ dflt: h2
1394
+ spot:
1395
+ type: Integer
1396
+ desc: |
1397
+ Where in the document to place the Release Notes relative to the Changelog.
1398
+ dflt: 1
1399
+ sort:
1400
+ type: Array
1401
+ desc: |
1402
+ The sort *order* for the release notes output.
1403
+ docs: *sort_docs_property
1404
+ dflt: ['highlight:grouping1', 'deprecation:grouping1', 'removal:grouping1', 'breaking:grouping1', 'type:grouping1', 'part:grouping2']
1405
+ items:
1406
+ desc: |
1407
+ Settings that affect the frame/shape and arrangement of individual release-note item displays.
1408
+ properties:
1409
+ frame:
1410
+ type: String
1411
+ desc: |
1412
+ The layout for the release-note item display.
1413
+
1414
+ Can be `table-cols-1`, `table-cols-2`, `desc-list`, or `admonition`.
1415
+ dflt: table-cols-1
1416
+ allow_redundant: *allow_redundant_ppty
1417
+ show_git_links: *show_git_links_ppty
1418
+ show_issue_links: *show_issue_links_ppty
1419
+ metadata_labels: *metadata_labels_ppty
1420
+ metadata_icons: *metadata_icons_ppty
1421
+ show_lead: *show_lead_ppty
1422
+ show_type_label: *show_type_label_ppty
1423
+ show_parts_label: *show_parts_label_ppty
1424
+ show_tags_label: *show_tags_label_ppty
1425
+ show_lead_label: *show_lead_label_ppty
1426
+ show_auths_label: *show_auths_label_ppty