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.
- checksums.yaml +7 -0
- data/README.adoc +2915 -0
- data/bin/releasehx +7 -0
- data/bin/rhx +7 -0
- data/bin/rhx-mcp +7 -0
- data/bin/sourcerer +32 -0
- data/build/docs/CNAME +1 -0
- data/build/docs/Gemfile.lock +95 -0
- data/build/docs/_config.yml +36 -0
- data/build/docs/config-reference.adoc +4104 -0
- data/build/docs/config-reference.json +1546 -0
- data/build/docs/index.adoc +2915 -0
- data/build/docs/landing.adoc +21 -0
- data/build/docs/manpage.adoc +68 -0
- data/build/docs/releasehx.1 +281 -0
- data/build/docs/releasehx_readme.html +367 -0
- data/build/docs/sample-config.adoc +9 -0
- data/build/docs/sample-config.yml +251 -0
- data/build/docs/schemagraphy_readme.html +0 -0
- data/build/docs/sourcerer_readme.html +46 -0
- data/build/snippets/helpscreen.txt +29 -0
- data/lib/docopslab/mcp/asset_packager.rb +30 -0
- data/lib/docopslab/mcp/manifest.rb +67 -0
- data/lib/docopslab/mcp/resource_pack.rb +46 -0
- data/lib/docopslab/mcp/server.rb +92 -0
- data/lib/docopslab/mcp.rb +6 -0
- data/lib/releasehx/cli.rb +937 -0
- data/lib/releasehx/configuration.rb +215 -0
- data/lib/releasehx/generated.rb +17 -0
- data/lib/releasehx/helpers.rb +58 -0
- data/lib/releasehx/mcp/asset_packager.rb +21 -0
- data/lib/releasehx/mcp/assets/agent-config-guide.md +178 -0
- data/lib/releasehx/mcp/assets/config-def.yml +1426 -0
- data/lib/releasehx/mcp/assets/config-reference.adoc +4104 -0
- data/lib/releasehx/mcp/assets/config-reference.json +1546 -0
- data/lib/releasehx/mcp/assets/sample-config.yml +251 -0
- data/lib/releasehx/mcp/manifest.rb +18 -0
- data/lib/releasehx/mcp/resource_pack.rb +26 -0
- data/lib/releasehx/mcp/server.rb +57 -0
- data/lib/releasehx/mcp.rb +7 -0
- data/lib/releasehx/ops/check_ops.rb +136 -0
- data/lib/releasehx/ops/draft_ops.rb +173 -0
- data/lib/releasehx/ops/enrich_ops.rb +221 -0
- data/lib/releasehx/ops/template_ops.rb +61 -0
- data/lib/releasehx/ops/write_ops.rb +124 -0
- data/lib/releasehx/rest/clients/github.yml +46 -0
- data/lib/releasehx/rest/clients/gitlab.yml +31 -0
- data/lib/releasehx/rest/clients/jira.yml +31 -0
- data/lib/releasehx/rest/yaml_client.rb +418 -0
- data/lib/releasehx/rhyml/adapter.rb +740 -0
- data/lib/releasehx/rhyml/change.rb +167 -0
- data/lib/releasehx/rhyml/liquid.rb +13 -0
- data/lib/releasehx/rhyml/loaders.rb +37 -0
- data/lib/releasehx/rhyml/mappings/github.yaml +60 -0
- data/lib/releasehx/rhyml/mappings/gitlab.yaml +73 -0
- data/lib/releasehx/rhyml/mappings/jira.yaml +29 -0
- data/lib/releasehx/rhyml/mappings/verb_past_tenses.yml +98 -0
- data/lib/releasehx/rhyml/release.rb +144 -0
- data/lib/releasehx/rhyml.rb +15 -0
- data/lib/releasehx/sgyml/helpers.rb +45 -0
- data/lib/releasehx/transforms/adf_to_markdown.rb +307 -0
- data/lib/releasehx/version.rb +7 -0
- data/lib/releasehx.rb +69 -0
- data/lib/schemagraphy/attribute_resolver.rb +48 -0
- data/lib/schemagraphy/cfgyml/definition.rb +90 -0
- data/lib/schemagraphy/cfgyml/doc_builder.rb +52 -0
- data/lib/schemagraphy/cfgyml/path_reference.rb +24 -0
- data/lib/schemagraphy/data_query/json_pointer.rb +42 -0
- data/lib/schemagraphy/loader.rb +59 -0
- data/lib/schemagraphy/regexp_utils.rb +215 -0
- data/lib/schemagraphy/safe_expression.rb +189 -0
- data/lib/schemagraphy/schema_utils.rb +124 -0
- data/lib/schemagraphy/tag_utils.rb +32 -0
- data/lib/schemagraphy/templating.rb +104 -0
- data/lib/schemagraphy.rb +17 -0
- data/lib/sourcerer/builder.rb +120 -0
- data/lib/sourcerer/jekyll/bootstrapper.rb +78 -0
- data/lib/sourcerer/jekyll/liquid/file_system.rb +74 -0
- data/lib/sourcerer/jekyll/liquid/filters.rb +215 -0
- data/lib/sourcerer/jekyll/liquid/tags.rb +44 -0
- data/lib/sourcerer/jekyll/monkeypatches.rb +73 -0
- data/lib/sourcerer/jekyll.rb +26 -0
- data/lib/sourcerer/plaintext_converter.rb +75 -0
- data/lib/sourcerer/templating.rb +190 -0
- data/lib/sourcerer.rb +322 -0
- data/specs/data/api-client-schema.yaml +160 -0
- data/specs/data/config-def.yml +1426 -0
- data/specs/data/mcp-manifest.yml +50 -0
- data/specs/data/rhyml-mapping-schema.yaml +410 -0
- data/specs/data/rhyml-schema.yaml +152 -0
- metadata +376 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
resources:
|
|
2
|
+
- href: releasehx://agent/guide
|
|
3
|
+
name: agent-guide
|
|
4
|
+
desc: Agent guide for ReleaseHx configuration discovery
|
|
5
|
+
mime: text/markdown
|
|
6
|
+
path: docs/agent/mcp-server/agent-config-guide.md
|
|
7
|
+
file: agent-config-guide.md
|
|
8
|
+
- href: releasehx://config/sample
|
|
9
|
+
name: config-sample
|
|
10
|
+
desc: Sample config tree with defaults and comments
|
|
11
|
+
mime: text/yaml
|
|
12
|
+
path: build/docs/sample-config.yml
|
|
13
|
+
file: sample-config.yml
|
|
14
|
+
- href: releasehx://config/schema
|
|
15
|
+
name: config-schema
|
|
16
|
+
desc: Authoritative configuration definition (CFGYML)
|
|
17
|
+
mime: text/yaml
|
|
18
|
+
path: specs/data/config-def.yml
|
|
19
|
+
file: config-def.yml
|
|
20
|
+
- href: releasehx://config/reference.json
|
|
21
|
+
name: config-reference-json
|
|
22
|
+
desc: JSON reference document for configuration settings
|
|
23
|
+
mime: application/json
|
|
24
|
+
path: build/docs/config-reference.json
|
|
25
|
+
file: config-reference.json
|
|
26
|
+
- href: releasehx://config/reference.adoc
|
|
27
|
+
name: config-reference-adoc
|
|
28
|
+
desc: AsciiDoc configuration reference
|
|
29
|
+
mime: text/asciidoc
|
|
30
|
+
path: build/docs/config-reference.adoc
|
|
31
|
+
file: config-reference.adoc
|
|
32
|
+
|
|
33
|
+
tools:
|
|
34
|
+
- name: config.reference.get
|
|
35
|
+
title: Config Reference Lookup
|
|
36
|
+
desc: Retrieve config reference details using JSON Pointer
|
|
37
|
+
input_schema:
|
|
38
|
+
type: object
|
|
39
|
+
properties:
|
|
40
|
+
pointer:
|
|
41
|
+
type: string
|
|
42
|
+
desc: JSON Pointer string for the reference JSON
|
|
43
|
+
required:
|
|
44
|
+
- pointer
|
|
45
|
+
annotations:
|
|
46
|
+
title: Config Reference Lookup
|
|
47
|
+
read_only_hint: true
|
|
48
|
+
destructive_hint: false
|
|
49
|
+
idempotent_hint: true
|
|
50
|
+
open_world_hint: false
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
$schema:
|
|
2
|
+
desc: |
|
|
3
|
+
This schema describes an object that maps the conversion from a given data structure to the RHYML data structure, for organizing release-history information.
|
|
4
|
+
|
|
5
|
+
Typically for converting REST API payloads from JSON to RHYML-compliant YAML.
|
|
6
|
+
The mapping is used to extract relevant fields from the source data structure and transform them into the appropriate RHYML format.
|
|
7
|
+
type: Map
|
|
8
|
+
|
|
9
|
+
$anchors:
|
|
10
|
+
path_ppty: &path_ppty
|
|
11
|
+
type: String
|
|
12
|
+
desc: |
|
|
13
|
+
The path expression to locate the sought data in the source structure.
|
|
14
|
+
This can be a JSONPath or JMESPath expression.
|
|
15
|
+
sgyml: &path_sgyml_ppty
|
|
16
|
+
tags:
|
|
17
|
+
jsonpath:
|
|
18
|
+
desc: Using `!jsonpath` overrides default `jmespath` for `$config.path_lang`.
|
|
19
|
+
jmespath:
|
|
20
|
+
desc: Using `!jmespath` overrides default `jsonpath` for `$config.path_lang`.
|
|
21
|
+
tplt_ppty: &tplt_ppty
|
|
22
|
+
type: Template
|
|
23
|
+
desc: |
|
|
24
|
+
The template expression to transform the data retrieved by the path expression (as the variable `path`).
|
|
25
|
+
This can include various template functions, such as string manipulation, formatting, etc.
|
|
26
|
+
sgyml: &tplt_sgyml_ppty
|
|
27
|
+
tags:
|
|
28
|
+
liquid:
|
|
29
|
+
desc: Using `!liquid` overrides default `erb` setting established in `$config.tplt_lang`.
|
|
30
|
+
erb:
|
|
31
|
+
desc: Using `!erb` overrides default `liquid` setting established in `$config.tplt_lang`.
|
|
32
|
+
properties:
|
|
33
|
+
$meta:
|
|
34
|
+
req: [changes_array_path]
|
|
35
|
+
acc: [_config, tick, hash, part, note, summ, tags, lead, auths]
|
|
36
|
+
$config:
|
|
37
|
+
desc: Data about how to process and interpret the other properties.
|
|
38
|
+
type: Map
|
|
39
|
+
properties:
|
|
40
|
+
path_lang:
|
|
41
|
+
type: String
|
|
42
|
+
desc: |
|
|
43
|
+
The language used for path expressions.
|
|
44
|
+
Can be `jsonpath` or `jmespath`).
|
|
45
|
+
|
|
46
|
+
This is how to point to specific parts of the source data structure to retrieve data for populating a target property.
|
|
47
|
+
default: jmespath
|
|
48
|
+
tplt_lang:
|
|
49
|
+
type: String
|
|
50
|
+
desc: |
|
|
51
|
+
The template syntax used for transforming the input string.
|
|
52
|
+
Can be`liquid` or `erb`.
|
|
53
|
+
default: liquid
|
|
54
|
+
desc:
|
|
55
|
+
type: String
|
|
56
|
+
desc: |
|
|
57
|
+
A brief description of the mapping.
|
|
58
|
+
vrsn:
|
|
59
|
+
type: Scalar
|
|
60
|
+
desc: |
|
|
61
|
+
The version of the mapping schema.
|
|
62
|
+
|
|
63
|
+
May be a sequential number or a descriptive string.
|
|
64
|
+
note:
|
|
65
|
+
type: String
|
|
66
|
+
desc: |
|
|
67
|
+
Additional notes or comments about the mapping.
|
|
68
|
+
This can include information about versioning/divergence.
|
|
69
|
+
# The following properties are the ones that will be mapped from the
|
|
70
|
+
# source data structure to the RHYML format.
|
|
71
|
+
changes_array_path:
|
|
72
|
+
desc: |
|
|
73
|
+
The path expression to locate the array of changes in the source data structure.
|
|
74
|
+
|
|
75
|
+
This is typically `$.issues` or `$.items` and must be an Array of Objects (in JSON parlance).
|
|
76
|
+
type: String
|
|
77
|
+
sgyml: *path_sgyml_ppty
|
|
78
|
+
|
|
79
|
+
note_pattern:
|
|
80
|
+
desc: |
|
|
81
|
+
Pattern for extracting release notes from the note field.
|
|
82
|
+
|
|
83
|
+
The pattern can be specified in any of these formats:
|
|
84
|
+
|
|
85
|
+
. Regexp literal with flags: `/pattern/flags` +
|
|
86
|
+
Example: '/## Release Notes\n(?<note>.*?)(?=\n##|\z)/ms'
|
|
87
|
+
|
|
88
|
+
. Plain pattern (flags applied via config): +
|
|
89
|
+
Example: '## Release Notes\n(?<note>.*?)(?=\n##|\z)'
|
|
90
|
+
|
|
91
|
+
. `%r{}` syntax:
|
|
92
|
+
Example: '%r{## Release Notes\n(?<note>.*?)(?=\n##|\z)}ms'
|
|
93
|
+
|
|
94
|
+
The pattern should include a named capture group 'note' or a single capture group.
|
|
95
|
+
Common flags:
|
|
96
|
+
|
|
97
|
+
* `m`: multiline mode (`^` and `$` match line start/end)
|
|
98
|
+
* `s`: dot matches newline
|
|
99
|
+
type: String
|
|
100
|
+
|
|
101
|
+
head_pattern:
|
|
102
|
+
desc: |
|
|
103
|
+
Pattern for extracting heading from note content.
|
|
104
|
+
|
|
105
|
+
Like note_pattern, supports multiple formats:
|
|
106
|
+
|
|
107
|
+
. `/pattern/flags` +
|
|
108
|
+
Example: `/^## (?<head>.*?)$/m`
|
|
109
|
+
|
|
110
|
+
. Plain pattern
|
|
111
|
+
Example: `^## (?<head>.*?)$`
|
|
112
|
+
|
|
113
|
+
. `%r{pattern}flags` +
|
|
114
|
+
Example: `%r{^## (?<head>.*?)$}m`
|
|
115
|
+
|
|
116
|
+
Should include a named capture group 'head' or a single capture group.
|
|
117
|
+
The `m` flag is commonly used to make `^` and `$` match line boundaries.
|
|
118
|
+
type: String
|
|
119
|
+
|
|
120
|
+
tick:
|
|
121
|
+
desc: |
|
|
122
|
+
The issue ticket number for the change.
|
|
123
|
+
This is typically a unique identifier for the change request or issue.
|
|
124
|
+
properties:
|
|
125
|
+
_meta: {req: [path]}
|
|
126
|
+
path:
|
|
127
|
+
<<: *path_ppty
|
|
128
|
+
docs:
|
|
129
|
+
examples:
|
|
130
|
+
- code: "$.issueId"
|
|
131
|
+
lang: jsonpath
|
|
132
|
+
- code: "iid"
|
|
133
|
+
lang: jmespath
|
|
134
|
+
tplt:
|
|
135
|
+
<<: *tplt_ppty
|
|
136
|
+
docs:
|
|
137
|
+
text: Rarely used on the `tick` property, which is typically a String and should remain identical to the upstream source.
|
|
138
|
+
examples:
|
|
139
|
+
- code: "{{ path | append: '' }}"
|
|
140
|
+
lang: liquid
|
|
141
|
+
desc: Ensures the path is treated as a string.
|
|
142
|
+
type:
|
|
143
|
+
desc: |
|
|
144
|
+
The source field for change type designation.
|
|
145
|
+
This usually indicates the kind of change being made (bug fix, new feature, etc) and is typically a parameter called `type`.
|
|
146
|
+
The `path` property does not yield a simple string
|
|
147
|
+
properties:
|
|
148
|
+
_meta: {req: [path]}
|
|
149
|
+
path:
|
|
150
|
+
<<: *path_ppty
|
|
151
|
+
docs:
|
|
152
|
+
examples:
|
|
153
|
+
- code: "$.type"
|
|
154
|
+
lang: jsonpath
|
|
155
|
+
- code: "type"
|
|
156
|
+
lang: jmespath
|
|
157
|
+
tplt:
|
|
158
|
+
<<: *tplt_ppty
|
|
159
|
+
docs:
|
|
160
|
+
examples:
|
|
161
|
+
- code: "{{ path | default: 'task' }}"
|
|
162
|
+
lang: liquid
|
|
163
|
+
desc: Provides a default value if no type is found.
|
|
164
|
+
- code: "path.nil? ? 'task' : path.first"
|
|
165
|
+
lang: erb
|
|
166
|
+
desc: Provides a default value if no type is found.
|
|
167
|
+
|
|
168
|
+
hash:
|
|
169
|
+
desc: |
|
|
170
|
+
The Git commit SHA256 "`hash`" String associated with the merge commit, or whichever commit adds this change to the product in the Git repository.
|
|
171
|
+
properties:
|
|
172
|
+
_meta: {req: [path]}
|
|
173
|
+
path:
|
|
174
|
+
<<: *path_ppty
|
|
175
|
+
docs:
|
|
176
|
+
examples:
|
|
177
|
+
- code: "$.commit.sha"
|
|
178
|
+
lang: jsonpath
|
|
179
|
+
- code: "hash"
|
|
180
|
+
lang: jmespath
|
|
181
|
+
- code: "$.head_commit.id"
|
|
182
|
+
lang: jsonpath
|
|
183
|
+
tplt:
|
|
184
|
+
<<: *tplt_ppty
|
|
185
|
+
desc: |
|
|
186
|
+
The template expression to transform the hash value retrieved by the path expression.
|
|
187
|
+
This is usually a direct string representation of the hash.
|
|
188
|
+
|
|
189
|
+
While technically these hash Strings can be shortened and still be valid, they are better off _stored_ complete and truncated upon display.
|
|
190
|
+
docs:
|
|
191
|
+
examples:
|
|
192
|
+
- code: "{{ path | default: 'unknown' }}"
|
|
193
|
+
lang: liquid
|
|
194
|
+
desc: Provides a default value if no hash is found.
|
|
195
|
+
- code: "path.nil? ? 'unknown' : path.first"
|
|
196
|
+
lang: erb
|
|
197
|
+
desc: Provides a default value if no hash is found.
|
|
198
|
+
- code: "{{ path | slice: 0, 7 }}"
|
|
199
|
+
lang: liquid
|
|
200
|
+
desc: Shortens the hash to the first 7 characters, commonly used in Git but not recommended for the RHYML `hash` properties.
|
|
201
|
+
part:
|
|
202
|
+
desc: |
|
|
203
|
+
The component, interface, or feature of the product affected by the change.
|
|
204
|
+
This is typically derived from a label or tag in the source data structure.
|
|
205
|
+
properties:
|
|
206
|
+
_meta: {req: [path]}
|
|
207
|
+
path:
|
|
208
|
+
<<: *path_ppty
|
|
209
|
+
docs:
|
|
210
|
+
examples:
|
|
211
|
+
- code: "$.labels[?starts_with(@, 'component:')]"
|
|
212
|
+
lang: jsonpath
|
|
213
|
+
- code: "labels[?contains(@, 'component:')]"
|
|
214
|
+
lang: jmespath
|
|
215
|
+
tplt:
|
|
216
|
+
<<: *tplt_ppty
|
|
217
|
+
docs:
|
|
218
|
+
examples:
|
|
219
|
+
- code: "{{ path | first | split: ':' | last | strip }}"
|
|
220
|
+
lang: liquid
|
|
221
|
+
desc: Extracts the last part of the label after splitting by colon.
|
|
222
|
+
- code: "path.first.split(':').last.strip"
|
|
223
|
+
lang: erb
|
|
224
|
+
desc: Extracts the last part of the label after splitting by colon.
|
|
225
|
+
parts:
|
|
226
|
+
desc: |
|
|
227
|
+
When more than one component, interface, or feature of the product is affected by the change, and you wish all such "`parts`" to be noted.
|
|
228
|
+
|
|
229
|
+
This is typically derived from a label or tag in the source data structure.
|
|
230
|
+
properties:
|
|
231
|
+
_meta: {req: [path]}
|
|
232
|
+
path:
|
|
233
|
+
<<: *path_ppty
|
|
234
|
+
docs:
|
|
235
|
+
examples:
|
|
236
|
+
- code: "$.labels[?starts_with(@, 'component:')]"
|
|
237
|
+
lang: jsonpath
|
|
238
|
+
- code: "labels[?contains(@, 'component:')]"
|
|
239
|
+
lang: jmespath
|
|
240
|
+
tplt:
|
|
241
|
+
<<: *tplt_ppty
|
|
242
|
+
docs:
|
|
243
|
+
examples:
|
|
244
|
+
- code: "{{ path | map: 'split', ':' | map: 'last' | map: 'strip' }}"
|
|
245
|
+
lang: liquid
|
|
246
|
+
note:
|
|
247
|
+
desc: |
|
|
248
|
+
The body or content of the change request or issue.
|
|
249
|
+
This is typically a description or detailed information about the change.
|
|
250
|
+
|
|
251
|
+
Presence of content here designates inclusion in the "`Release Notes`" section/document in typical cases.
|
|
252
|
+
|
|
253
|
+
The `note` property captures the entire note body, which is usually further filtered/transformed based on configuration settings.
|
|
254
|
+
properties:
|
|
255
|
+
_meta: {req: [path]}
|
|
256
|
+
path:
|
|
257
|
+
<<: *path_ppty
|
|
258
|
+
type: String
|
|
259
|
+
templating:
|
|
260
|
+
default: liquid
|
|
261
|
+
delay: false
|
|
262
|
+
docs:
|
|
263
|
+
examples:
|
|
264
|
+
- code: "$.body"
|
|
265
|
+
lang: jsonpath
|
|
266
|
+
- code: "description"
|
|
267
|
+
lang: jmespath
|
|
268
|
+
- code: '!liquid $.fields.{{ }}'
|
|
269
|
+
tplt:
|
|
270
|
+
<<: *tplt_ppty
|
|
271
|
+
docs:
|
|
272
|
+
text: |
|
|
273
|
+
Most formatting is done using configuration settings or template output.
|
|
274
|
+
If the intended note content is a subset or converted form of the body captured by the note `path`, you most likely want to handle that in the config or template.
|
|
275
|
+
summ:
|
|
276
|
+
desc: |
|
|
277
|
+
Usually the issue title, this property maps a summary string from the source to the corresponding element in RHYML.
|
|
278
|
+
properties:
|
|
279
|
+
_meta: {req: [path]}
|
|
280
|
+
path:
|
|
281
|
+
<<: *path_ppty
|
|
282
|
+
docs:
|
|
283
|
+
examples:
|
|
284
|
+
- code: "$.title"
|
|
285
|
+
lang: jsonpath
|
|
286
|
+
- code: "summary"
|
|
287
|
+
lang: jmespath
|
|
288
|
+
tplt:
|
|
289
|
+
<<: *tplt_ppty
|
|
290
|
+
docs:
|
|
291
|
+
examples:
|
|
292
|
+
- code: "{{ path | default: 'No Title' | truncate: 50, '' }}"
|
|
293
|
+
lang: liquid
|
|
294
|
+
desc: Provides a default value if the title is not present.
|
|
295
|
+
- code: "path.nil? || path.empty? ? 'No Title' : path.first[0...50]"
|
|
296
|
+
lang: erb
|
|
297
|
+
desc: Provides a default value if the title is not present.
|
|
298
|
+
|
|
299
|
+
tags:
|
|
300
|
+
desc: |
|
|
301
|
+
An array of tags associated with the change.
|
|
302
|
+
These are typically derived from "`labels`" or "`tags`" in the source data structure.
|
|
303
|
+
|
|
304
|
+
This tags property must be an Array of Scalars in RHYML.
|
|
305
|
+
But each tag in the RHYML model may be constructed uniquely, in cases where not all tags are the same.
|
|
306
|
+
|
|
307
|
+
Any property of this object named like `_<tagname>` will be treated as defining the source and mapping the value of that tag.
|
|
308
|
+
|
|
309
|
+
For any implementation of RHYML, tags will be mapped to their corresponding value names in the source, but the tag values themselves must be retrieved and mapped to strings the RHYML definition can reference.
|
|
310
|
+
The final RHYML `tags` property will only include tags registered in the config.
|
|
311
|
+
properties:
|
|
312
|
+
_meta:
|
|
313
|
+
req: [path]
|
|
314
|
+
arb: true
|
|
315
|
+
path:
|
|
316
|
+
<<: *path_ppty
|
|
317
|
+
docs:
|
|
318
|
+
examples:
|
|
319
|
+
- code: "$.labels"
|
|
320
|
+
lang: jsonpath
|
|
321
|
+
- code: "tags"
|
|
322
|
+
lang: jmespath
|
|
323
|
+
tplt:
|
|
324
|
+
<<: *tplt_ppty
|
|
325
|
+
docs:
|
|
326
|
+
examples:
|
|
327
|
+
- code: "path.map(&:downcase).uniq"
|
|
328
|
+
lang: erb
|
|
329
|
+
desc: Converts all tags to lowercase and removes duplicates.
|
|
330
|
+
<_tagname>:
|
|
331
|
+
key:
|
|
332
|
+
regexp: /^_([\w-]{2,25})$/
|
|
333
|
+
properties:
|
|
334
|
+
_meta:
|
|
335
|
+
req: [path]
|
|
336
|
+
path:
|
|
337
|
+
<<: *path_ppty
|
|
338
|
+
desc: |
|
|
339
|
+
The path expression to locate the specific tag in the source data structure.
|
|
340
|
+
This is most often used when the RHYML tag maps to something other than an item in a `labels` Array.
|
|
341
|
+
|
|
342
|
+
Any tag defined this way is added to the `tags` Array when retrieved.
|
|
343
|
+
tplt:
|
|
344
|
+
<<: *tplt_ppty
|
|
345
|
+
desc: |
|
|
346
|
+
The template expression to transform the tag value retrieved by the path expression.
|
|
347
|
+
docs:
|
|
348
|
+
examples:
|
|
349
|
+
- code: |
|
|
350
|
+
if path && !path.empty?
|
|
351
|
+
path.first.name
|
|
352
|
+
else
|
|
353
|
+
nil
|
|
354
|
+
end
|
|
355
|
+
desc: Conditionally expresses a tag name based on the value of the custom checkbox in the source data.
|
|
356
|
+
lang: erb
|
|
357
|
+
lead:
|
|
358
|
+
desc: |
|
|
359
|
+
The lead or primary assignee for the change request or issue.
|
|
360
|
+
This is typically derived from the assignee or owner of the change.
|
|
361
|
+
|
|
362
|
+
The `lead` property is used to identify the main point of contact for the change.
|
|
363
|
+
It may or may not be expressed in public-facing release histories.
|
|
364
|
+
properties:
|
|
365
|
+
_meta: {req: [path]}
|
|
366
|
+
path:
|
|
367
|
+
<<: *path_ppty
|
|
368
|
+
docs:
|
|
369
|
+
examples:
|
|
370
|
+
- code: "$.assignee"
|
|
371
|
+
lang: jsonpath
|
|
372
|
+
- code: "$.assignees[0]"
|
|
373
|
+
lang: jsonpath
|
|
374
|
+
- code: "assignees[0]"
|
|
375
|
+
lang: jmespath
|
|
376
|
+
desc: |
|
|
377
|
+
The path expression to locate the lead or primary assignee in the source data structure.
|
|
378
|
+
tplt:
|
|
379
|
+
<<: *tplt_ppty
|
|
380
|
+
docs:
|
|
381
|
+
examples:
|
|
382
|
+
- code: "{{ path.login | default: 'Unassigned' }}"
|
|
383
|
+
lang: liquid
|
|
384
|
+
desc: Provides a default value if no assignee is found.
|
|
385
|
+
- code: "path.nil? ? 'Unassigned' : path.first.login"
|
|
386
|
+
lang: erb
|
|
387
|
+
desc: Provides a default value if no assignee is found.
|
|
388
|
+
auths:
|
|
389
|
+
desc: |
|
|
390
|
+
An array of authors or contributors associated with the change request or issue.
|
|
391
|
+
This is typically derived from the authors, owners, reviewers, or contributors of the change and is not typically made public.
|
|
392
|
+
properties:
|
|
393
|
+
_meta: {req: [path]}
|
|
394
|
+
path:
|
|
395
|
+
<<: *path_ppty
|
|
396
|
+
docs:
|
|
397
|
+
examples:
|
|
398
|
+
- code: "$.assignees"
|
|
399
|
+
lang: jsonpath
|
|
400
|
+
- code: "authors"
|
|
401
|
+
lang: jmespath
|
|
402
|
+
- code: |
|
|
403
|
+
[assignee.displayName, creator.displayName, reporter.displayName]
|
|
404
|
+
lang: jmespath
|
|
405
|
+
desc: Makes an array out of the assignee.displayName, creator.displayName, and reporter.displayName.
|
|
406
|
+
desc: |
|
|
407
|
+
The path expression to locate the authors or contributors in the source data structure.
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
$schema:
|
|
2
|
+
type: Map
|
|
3
|
+
desc: |
|
|
4
|
+
The schema for documenting the changes in an individual revision release in RHYML.
|
|
5
|
+
|
|
6
|
+
This object is typically hosted as serialized Array of tabular data under a `releases`
|
|
7
|
+
properties:
|
|
8
|
+
$meta:
|
|
9
|
+
req: [code,changes]
|
|
10
|
+
code:
|
|
11
|
+
desc: The revision (version) number or other identifier of the release.
|
|
12
|
+
type: String
|
|
13
|
+
date:
|
|
14
|
+
desc: The release date.
|
|
15
|
+
type: Date
|
|
16
|
+
hash:
|
|
17
|
+
desc: The Git commit hash (SHA256 ID) for the release.
|
|
18
|
+
type: String
|
|
19
|
+
memo:
|
|
20
|
+
desc: |
|
|
21
|
+
A brief summary of the release.
|
|
22
|
+
May include markup formatting.
|
|
23
|
+
type: String
|
|
24
|
+
$config:
|
|
25
|
+
desc: |
|
|
26
|
+
Settings specific to this document.
|
|
27
|
+
type: Map
|
|
28
|
+
properties:
|
|
29
|
+
markup:
|
|
30
|
+
desc: |
|
|
31
|
+
The markup format for the `note` and `memo` properties of RHYML objects.
|
|
32
|
+
|
|
33
|
+
Change to `asciidoc` to convert upstream Markdown to AsciiDoc.
|
|
34
|
+
|
|
35
|
+
This setting defaults to the value of the `config.rhyml.markup` setting, which defaults to `markdown`.
|
|
36
|
+
type: String
|
|
37
|
+
dflt: markdown
|
|
38
|
+
changes:
|
|
39
|
+
desc: A list of changes completed in this release.
|
|
40
|
+
type: ArrayTable
|
|
41
|
+
aliases: ['work']
|
|
42
|
+
recordset:
|
|
43
|
+
|
|
44
|
+
properties:
|
|
45
|
+
chid:
|
|
46
|
+
desc:
|
|
47
|
+
The change identifier.
|
|
48
|
+
This is a contiguous String (no spaces) that MUST be among all changes in its own release and is recommended to be universally unique (across all releases).
|
|
49
|
+
|
|
50
|
+
By default, when RHYML is automatically generated, this property is constructed from the `tick` String and the first portion of the `summ` String, truncated and slugified.
|
|
51
|
+
|
|
52
|
+
You can override this in the `config.templates.chid` property.
|
|
53
|
+
type: Slug
|
|
54
|
+
|
|
55
|
+
tick:
|
|
56
|
+
desc: The issue ticket number for the change.
|
|
57
|
+
type: Line
|
|
58
|
+
|
|
59
|
+
hash:
|
|
60
|
+
desc: The commit hash for the change.
|
|
61
|
+
type: Line
|
|
62
|
+
|
|
63
|
+
type:
|
|
64
|
+
desc: |
|
|
65
|
+
The type of change.
|
|
66
|
+
|
|
67
|
+
Must be registered in the `types` block of the config.
|
|
68
|
+
type: String
|
|
69
|
+
context:
|
|
70
|
+
has_one: './config-def.yml#/properties/types'
|
|
71
|
+
|
|
72
|
+
part:
|
|
73
|
+
desc: |
|
|
74
|
+
The component, interface, feature, or aspect of the product affected by the change.
|
|
75
|
+
|
|
76
|
+
Must be registered in the `parts` block of the config.
|
|
77
|
+
|
|
78
|
+
If `part` is specified, `parts` cannot be specified.
|
|
79
|
+
type: String
|
|
80
|
+
|
|
81
|
+
parts:
|
|
82
|
+
desc: |
|
|
83
|
+
When more than one component, interface, feature, or aspect of the product is affected by the change, and you wish all such "`parts`" to be noted.
|
|
84
|
+
|
|
85
|
+
All items must be listed in the `parts` block of the config.
|
|
86
|
+
|
|
87
|
+
If `parts` is specified, `part` cannot be specified.
|
|
88
|
+
type: Array
|
|
89
|
+
|
|
90
|
+
summ:
|
|
91
|
+
desc: |
|
|
92
|
+
A brief summary of the change.
|
|
93
|
+
Typically used as the Changelog entry.
|
|
94
|
+
type: String
|
|
95
|
+
|
|
96
|
+
head:
|
|
97
|
+
desc: |
|
|
98
|
+
The headline for a release note, if the value of the `summ` property is not preferred.
|
|
99
|
+
In standard templates, the headline placeholder looks for a `head` property but falls back to `summ`.
|
|
100
|
+
|
|
101
|
+
note:
|
|
102
|
+
desc: |
|
|
103
|
+
A note about the change.
|
|
104
|
+
|
|
105
|
+
May include markup formatting.
|
|
106
|
+
type: String
|
|
107
|
+
|
|
108
|
+
tags:
|
|
109
|
+
desc: |
|
|
110
|
+
An array of tags associated with the change.
|
|
111
|
+
|
|
112
|
+
Must be registered in the `tags` block of the config.
|
|
113
|
+
type: Array
|
|
114
|
+
items:
|
|
115
|
+
type: Slug
|
|
116
|
+
has_one: './config-def.yml#/properties/tags'
|
|
117
|
+
|
|
118
|
+
links:
|
|
119
|
+
desc: |
|
|
120
|
+
A list of documentation or marketing links for the change.
|
|
121
|
+
|
|
122
|
+
The `xref` and `href` properties are mutually exclusive; `href` will supersede.
|
|
123
|
+
type: ArrayTable
|
|
124
|
+
properties:
|
|
125
|
+
text:
|
|
126
|
+
desc: The display text for the link.
|
|
127
|
+
type: String
|
|
128
|
+
xref:
|
|
129
|
+
desc: The local cross-reference for the linked document.
|
|
130
|
+
type: String
|
|
131
|
+
href:
|
|
132
|
+
desc: The URL for the linked document.
|
|
133
|
+
type: String
|
|
134
|
+
|
|
135
|
+
lead:
|
|
136
|
+
desc: |
|
|
137
|
+
The primary contributor to the change.
|
|
138
|
+
Associated with a username in the Issues system.
|
|
139
|
+
type: Slug
|
|
140
|
+
|
|
141
|
+
auths:
|
|
142
|
+
desc: |
|
|
143
|
+
An array of contributors to the change.
|
|
144
|
+
Associated with a username in the Issues system.
|
|
145
|
+
type: ArrayTable
|
|
146
|
+
properties:
|
|
147
|
+
user:
|
|
148
|
+
desc: The username of the contributor.
|
|
149
|
+
type: Slug
|
|
150
|
+
memo:
|
|
151
|
+
desc: A role label or note about the contributor's involvement.
|
|
152
|
+
type: String
|