@redpanda-data/docs-extensions-and-macros 4.15.7 → 4.15.9
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.
- package/package.json +1 -1
- package/tools/property-extractor/property_extractor.py +20 -4
- package/tools/redpanda-connect/connector-binary-analyzer.js +2 -0
- package/tools/redpanda-connect/generate-rpcn-connector-docs.js +87 -0
- package/tools/redpanda-connect/helpers/bloblangExample.js +23 -3
- package/tools/redpanda-connect/helpers/ensurePeriod.js +27 -0
- package/tools/redpanda-connect/helpers/hasOptionalParams.js +7 -0
- package/tools/redpanda-connect/helpers/index.js +3 -0
- package/tools/redpanda-connect/helpers/toSentenceCase.js +69 -0
- package/tools/redpanda-connect/pr-summary-formatter.js +304 -26
- package/tools/redpanda-connect/report-delta.js +137 -7
- package/tools/redpanda-connect/rpcn-connector-docs-handler.js +86 -54
- package/tools/redpanda-connect/templates/bloblang-function.hbs +28 -2
- package/tools/redpanda-connect/templates/bloblang-functions-overview.hbs +29 -0
- package/tools/redpanda-connect/templates/bloblang-methods-overview.hbs +39 -0
- package/tools/redpanda-connect/templates/connector.hbs +1 -2
- package/tools/redpanda-connect/templates/intro.hbs +1 -1
|
@@ -3,6 +3,118 @@
|
|
|
3
3
|
* Outputs a console-parseable format for GitHub Actions
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Render Bloblang changes section for PR summary
|
|
8
|
+
* @param {object} data - Bloblang change data
|
|
9
|
+
* @param {array} data.newMethods - Array of new methods (with .name and optional .version)
|
|
10
|
+
* @param {array} data.newFunctions - Array of new functions (with .name and optional .version)
|
|
11
|
+
* @param {array} data.removedMethods - Array of removed methods
|
|
12
|
+
* @param {array} data.removedFunctions - Array of removed functions
|
|
13
|
+
* @param {array} data.deprecatedMethods - Array of deprecated methods
|
|
14
|
+
* @param {array} data.deprecatedFunctions - Array of deprecated functions
|
|
15
|
+
* @param {boolean} includeVersion - Whether to include version info in output
|
|
16
|
+
* @returns {array} Array of lines to add to the summary
|
|
17
|
+
*/
|
|
18
|
+
function renderBloblangChanges(data, includeVersion = false) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
const {
|
|
21
|
+
newMethods = [],
|
|
22
|
+
newFunctions = [],
|
|
23
|
+
removedMethods = [],
|
|
24
|
+
removedFunctions = [],
|
|
25
|
+
deprecatedMethods = [],
|
|
26
|
+
deprecatedFunctions = []
|
|
27
|
+
} = data;
|
|
28
|
+
|
|
29
|
+
const hasChanges = newMethods.length > 0 || newFunctions.length > 0 ||
|
|
30
|
+
removedMethods.length > 0 || removedFunctions.length > 0 ||
|
|
31
|
+
deprecatedMethods.length > 0 || deprecatedFunctions.length > 0;
|
|
32
|
+
|
|
33
|
+
if (!hasChanges) {
|
|
34
|
+
return lines;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
lines.push('**Update Bloblang Guide Pages:**');
|
|
38
|
+
lines.push('');
|
|
39
|
+
|
|
40
|
+
if (newMethods.length > 0) {
|
|
41
|
+
lines.push(`New methods to add to \`modules/guides/pages/bloblang/methods.adoc\` (${newMethods.length}):`);
|
|
42
|
+
newMethods.forEach(method => {
|
|
43
|
+
const versionInfo = includeVersion && method.version ? ` — introduced in **${method.version}**` : '';
|
|
44
|
+
const name = typeof method === 'string' ? method : method.name;
|
|
45
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
46
|
+
});
|
|
47
|
+
lines.push('');
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (newFunctions.length > 0) {
|
|
51
|
+
lines.push(`New functions to add to \`modules/guides/pages/bloblang/functions.adoc\` (${newFunctions.length}):`);
|
|
52
|
+
newFunctions.forEach(func => {
|
|
53
|
+
const versionInfo = includeVersion && func.version ? ` — introduced in **${func.version}**` : '';
|
|
54
|
+
const name = typeof func === 'string' ? func : func.name;
|
|
55
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
56
|
+
});
|
|
57
|
+
lines.push('');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (removedMethods.length > 0) {
|
|
61
|
+
lines.push(`Removed methods to delete from \`modules/guides/pages/bloblang/methods.adoc\` (${removedMethods.length}):`);
|
|
62
|
+
removedMethods.forEach(method => {
|
|
63
|
+
const versionInfo = includeVersion && method.version ? ` — removed in **${method.version}**` : '';
|
|
64
|
+
const name = typeof method === 'string' ? method : method.name;
|
|
65
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
66
|
+
});
|
|
67
|
+
lines.push('');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (removedFunctions.length > 0) {
|
|
71
|
+
lines.push(`Removed functions to delete from \`modules/guides/pages/bloblang/functions.adoc\` (${removedFunctions.length}):`);
|
|
72
|
+
removedFunctions.forEach(func => {
|
|
73
|
+
const versionInfo = includeVersion && func.version ? ` — removed in **${func.version}**` : '';
|
|
74
|
+
const name = typeof func === 'string' ? func : func.name;
|
|
75
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
76
|
+
});
|
|
77
|
+
lines.push('');
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (deprecatedMethods.length > 0) {
|
|
81
|
+
lines.push(`Deprecated methods - add deprecation notice to \`modules/guides/pages/bloblang/methods.adoc\` (${deprecatedMethods.length}):`);
|
|
82
|
+
deprecatedMethods.forEach(method => {
|
|
83
|
+
const versionInfo = includeVersion && method.version ? ` — deprecated in **${method.version}**` : '';
|
|
84
|
+
const name = typeof method === 'string' ? method : method.name;
|
|
85
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
86
|
+
});
|
|
87
|
+
lines.push('');
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
if (deprecatedFunctions.length > 0) {
|
|
91
|
+
lines.push(`Deprecated functions - add deprecation notice to \`modules/guides/pages/bloblang/functions.adoc\` (${deprecatedFunctions.length}):`);
|
|
92
|
+
deprecatedFunctions.forEach(func => {
|
|
93
|
+
const versionInfo = includeVersion && func.version ? ` — deprecated in **${func.version}**` : '';
|
|
94
|
+
const name = typeof func === 'string' ? func : func.name;
|
|
95
|
+
lines.push(`- [ ] \`${name}\`${versionInfo}`);
|
|
96
|
+
});
|
|
97
|
+
lines.push('');
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
lines.push('**How to add includes:**');
|
|
101
|
+
lines.push('');
|
|
102
|
+
lines.push('For methods, find the appropriate category section in `methods.adoc` and add:');
|
|
103
|
+
lines.push('```asciidoc');
|
|
104
|
+
lines.push('include::redpanda-connect:partial$bloblang-methods/method_name.adoc[leveloffset=+2]');
|
|
105
|
+
lines.push('```');
|
|
106
|
+
lines.push('');
|
|
107
|
+
lines.push('For functions, add to the Functions section in `functions.adoc`:');
|
|
108
|
+
lines.push('```asciidoc');
|
|
109
|
+
lines.push('include::redpanda-connect:partial$bloblang-functions/function_name.adoc[leveloffset=+2]');
|
|
110
|
+
lines.push('```');
|
|
111
|
+
lines.push('');
|
|
112
|
+
lines.push('**Note:** Partials are auto-generated. Includes must be added manually in alphabetical order within their section.');
|
|
113
|
+
lines.push('');
|
|
114
|
+
|
|
115
|
+
return lines;
|
|
116
|
+
}
|
|
117
|
+
|
|
6
118
|
/**
|
|
7
119
|
* Generate PR summary for multiple releases
|
|
8
120
|
* @param {object} masterDiff - Master diff with releases array
|
|
@@ -21,9 +133,9 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
21
133
|
|
|
22
134
|
lines.push('<!-- PR_SUMMARY_START -->');
|
|
23
135
|
lines.push('');
|
|
24
|
-
lines.push('##
|
|
136
|
+
lines.push('## Redpanda Connect Documentation Update');
|
|
25
137
|
lines.push('');
|
|
26
|
-
lines.push(
|
|
138
|
+
lines.push(`**Multi-Release Update:** ${startVersion} → ${endVersion}`);
|
|
27
139
|
lines.push(`**Releases Processed:** ${processedReleases}`);
|
|
28
140
|
|
|
29
141
|
if (binaryAnalysis) {
|
|
@@ -44,10 +156,10 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
44
156
|
lines.push(`- **${total.newFields}** new fields across ${total.releaseCount || 0} release(s)`);
|
|
45
157
|
}
|
|
46
158
|
if (total.removedComponents > 0) {
|
|
47
|
-
lines.push(`- **${total.removedComponents}** removed connectors
|
|
159
|
+
lines.push(`- **${total.removedComponents}** removed connectors`);
|
|
48
160
|
}
|
|
49
161
|
if (total.removedFields > 0) {
|
|
50
|
-
lines.push(`- **${total.removedFields}** removed fields
|
|
162
|
+
lines.push(`- **${total.removedFields}** removed fields`);
|
|
51
163
|
}
|
|
52
164
|
if (total.deprecatedComponents > 0) {
|
|
53
165
|
lines.push(`- **${total.deprecatedComponents}** deprecated connectors`);
|
|
@@ -56,7 +168,19 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
56
168
|
lines.push(`- **${total.deprecatedFields}** deprecated fields`);
|
|
57
169
|
}
|
|
58
170
|
if (total.changedDefaults > 0) {
|
|
59
|
-
lines.push(`- **${total.changedDefaults}** changed default values
|
|
171
|
+
lines.push(`- **${total.changedDefaults}** changed default values`);
|
|
172
|
+
}
|
|
173
|
+
if (total.newBloblangMethods > 0) {
|
|
174
|
+
lines.push(`- **${total.newBloblangMethods}** new Bloblang methods`);
|
|
175
|
+
}
|
|
176
|
+
if (total.removedBloblangMethods > 0) {
|
|
177
|
+
lines.push(`- **${total.removedBloblangMethods}** removed Bloblang methods`);
|
|
178
|
+
}
|
|
179
|
+
if (total.newBloblangFunctions > 0) {
|
|
180
|
+
lines.push(`- **${total.newBloblangFunctions}** new Bloblang functions`);
|
|
181
|
+
}
|
|
182
|
+
if (total.removedBloblangFunctions > 0) {
|
|
183
|
+
lines.push(`- **${total.removedBloblangFunctions}** removed Bloblang functions`);
|
|
60
184
|
}
|
|
61
185
|
|
|
62
186
|
lines.push('');
|
|
@@ -76,7 +200,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
76
200
|
|
|
77
201
|
for (const release of releases) {
|
|
78
202
|
const releaseNotesUrl = `https://github.com/redpanda-data/connect/releases/tag/v${release.toVersion}`;
|
|
79
|
-
lines.push(`####
|
|
203
|
+
lines.push(`#### Version ${release.toVersion}`);
|
|
80
204
|
lines.push(`> [Release notes](${releaseNotesUrl})`);
|
|
81
205
|
lines.push('');
|
|
82
206
|
|
|
@@ -140,7 +264,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
140
264
|
// Removed components
|
|
141
265
|
const removedComponents = details.removedComponents || [];
|
|
142
266
|
if (summary.removedComponents > 0 && removedComponents.length > 0) {
|
|
143
|
-
lines.push(
|
|
267
|
+
lines.push(`**Removed Connectors (${summary.removedComponents}):**`);
|
|
144
268
|
lines.push('');
|
|
145
269
|
removedComponents.forEach(comp => {
|
|
146
270
|
lines.push(`- \`${comp.name}\` (${comp.type})`);
|
|
@@ -151,7 +275,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
151
275
|
// Removed fields
|
|
152
276
|
const removedFields = details.removedFields || [];
|
|
153
277
|
if (summary.removedFields > 0 && removedFields.length > 0) {
|
|
154
|
-
lines.push(
|
|
278
|
+
lines.push(`**Removed Fields (${summary.removedFields}):**`);
|
|
155
279
|
lines.push('');
|
|
156
280
|
lines.push('| Component | Field |');
|
|
157
281
|
lines.push('|-----------|-------|');
|
|
@@ -176,7 +300,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
176
300
|
// Changed defaults
|
|
177
301
|
const changedDefaults = details.changedDefaults || [];
|
|
178
302
|
if (summary.changedDefaults > 0 && changedDefaults.length > 0) {
|
|
179
|
-
lines.push(
|
|
303
|
+
lines.push(`**Changed Defaults (${summary.changedDefaults}):**`);
|
|
180
304
|
lines.push('');
|
|
181
305
|
lines.push('| Component | Field | Old Default | New Default |');
|
|
182
306
|
lines.push('|-----------|-------|-------------|-------------|');
|
|
@@ -192,7 +316,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
192
316
|
// Writer action items (aggregate)
|
|
193
317
|
lines.push('---');
|
|
194
318
|
lines.push('');
|
|
195
|
-
lines.push('###
|
|
319
|
+
lines.push('### Writer Action Items');
|
|
196
320
|
lines.push('');
|
|
197
321
|
|
|
198
322
|
// Collect all new connectors across all releases with full details
|
|
@@ -200,6 +324,12 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
200
324
|
const allRemovedConnectors = [];
|
|
201
325
|
const allDeprecatedFields = [];
|
|
202
326
|
const allChangedDefaults = [];
|
|
327
|
+
const allNewBloblangMethods = [];
|
|
328
|
+
const allRemovedBloblangMethods = [];
|
|
329
|
+
const allNewBloblangFunctions = [];
|
|
330
|
+
const allRemovedBloblangFunctions = [];
|
|
331
|
+
const allDeprecatedBloblangMethods = [];
|
|
332
|
+
const allDeprecatedBloblangFunctions = [];
|
|
203
333
|
|
|
204
334
|
releases.forEach(release => {
|
|
205
335
|
const details = release.details || {};
|
|
@@ -253,6 +383,48 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
253
383
|
version: release.toVersion
|
|
254
384
|
});
|
|
255
385
|
});
|
|
386
|
+
|
|
387
|
+
// New/removed Bloblang methods
|
|
388
|
+
(details.newBloblangMethods || []).forEach(methodName => {
|
|
389
|
+
allNewBloblangMethods.push({
|
|
390
|
+
name: methodName,
|
|
391
|
+
version: release.toVersion
|
|
392
|
+
});
|
|
393
|
+
});
|
|
394
|
+
(details.removedBloblangMethods || []).forEach(methodName => {
|
|
395
|
+
allRemovedBloblangMethods.push({
|
|
396
|
+
name: methodName,
|
|
397
|
+
version: release.toVersion
|
|
398
|
+
});
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
// New/removed Bloblang functions
|
|
402
|
+
(details.newBloblangFunctions || []).forEach(funcName => {
|
|
403
|
+
allNewBloblangFunctions.push({
|
|
404
|
+
name: funcName,
|
|
405
|
+
version: release.toVersion
|
|
406
|
+
});
|
|
407
|
+
});
|
|
408
|
+
(details.removedBloblangFunctions || []).forEach(funcName => {
|
|
409
|
+
allRemovedBloblangFunctions.push({
|
|
410
|
+
name: funcName,
|
|
411
|
+
version: release.toVersion
|
|
412
|
+
});
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
// Deprecated Bloblang methods/functions
|
|
416
|
+
(details.deprecatedBloblangMethods || []).forEach(methodName => {
|
|
417
|
+
allDeprecatedBloblangMethods.push({
|
|
418
|
+
name: methodName,
|
|
419
|
+
version: release.toVersion
|
|
420
|
+
});
|
|
421
|
+
});
|
|
422
|
+
(details.deprecatedBloblangFunctions || []).forEach(funcName => {
|
|
423
|
+
allDeprecatedBloblangFunctions.push({
|
|
424
|
+
name: funcName,
|
|
425
|
+
version: release.toVersion
|
|
426
|
+
});
|
|
427
|
+
});
|
|
256
428
|
});
|
|
257
429
|
|
|
258
430
|
// Priority 1: New connectors needing documentation
|
|
@@ -292,7 +464,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
292
464
|
|
|
293
465
|
// Priority 2: Removed connectors needing migration docs
|
|
294
466
|
if (allRemovedConnectors.length > 0) {
|
|
295
|
-
lines.push('
|
|
467
|
+
lines.push('**Update Migration Guide for Removed Connectors:**');
|
|
296
468
|
lines.push('');
|
|
297
469
|
allRemovedConnectors.forEach(conn => {
|
|
298
470
|
lines.push(`- [ ] \`${conn.name}\` ${conn.type} — removed in **${conn.version}**`);
|
|
@@ -302,7 +474,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
302
474
|
|
|
303
475
|
// Priority 3: Deprecated fields needing docs update
|
|
304
476
|
if (allDeprecatedFields.length > 0) {
|
|
305
|
-
lines.push('
|
|
477
|
+
lines.push('**Update Docs for Deprecated Fields:**');
|
|
306
478
|
lines.push('');
|
|
307
479
|
allDeprecatedFields.forEach(field => {
|
|
308
480
|
const guidance = field.description ? ` (${truncateToSentence(field.description, 1)})` : '';
|
|
@@ -313,7 +485,7 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
313
485
|
|
|
314
486
|
// Priority 4: Changed defaults that may affect users
|
|
315
487
|
if (allChangedDefaults.length > 0) {
|
|
316
|
-
lines.push('
|
|
488
|
+
lines.push('**Review Changed Defaults for Breaking Changes:**');
|
|
317
489
|
lines.push('');
|
|
318
490
|
allChangedDefaults.forEach(change => {
|
|
319
491
|
const oldVal = change.oldDefault !== undefined ? JSON.stringify(change.oldDefault) : 'none';
|
|
@@ -323,6 +495,17 @@ function generateMultiVersionPRSummary(masterDiff, binaryAnalysis = null, drafte
|
|
|
323
495
|
lines.push('');
|
|
324
496
|
}
|
|
325
497
|
|
|
498
|
+
// Bloblang methods and functions
|
|
499
|
+
const bloblangLines = renderBloblangChanges({
|
|
500
|
+
newMethods: allNewBloblangMethods,
|
|
501
|
+
newFunctions: allNewBloblangFunctions,
|
|
502
|
+
removedMethods: allRemovedBloblangMethods,
|
|
503
|
+
removedFunctions: allRemovedBloblangFunctions,
|
|
504
|
+
deprecatedMethods: allDeprecatedBloblangMethods,
|
|
505
|
+
deprecatedFunctions: allDeprecatedBloblangFunctions
|
|
506
|
+
}, true); // includeVersion = true for multi-version summaries
|
|
507
|
+
lines.push(...bloblangLines);
|
|
508
|
+
|
|
326
509
|
// Add commercial name reminder if there are new connectors
|
|
327
510
|
if (allNewConnectors.length > 0) {
|
|
328
511
|
lines.push('---');
|
|
@@ -368,7 +551,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
368
551
|
|
|
369
552
|
// Single version format (original logic)
|
|
370
553
|
// Quick Summary Section
|
|
371
|
-
lines.push('##
|
|
554
|
+
lines.push('## Redpanda Connect Documentation Update');
|
|
372
555
|
lines.push('');
|
|
373
556
|
lines.push(`**OSS Version:** ${diffData.comparison.oldVersion} → ${diffData.comparison.newVersion}`);
|
|
374
557
|
|
|
@@ -383,7 +566,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
383
566
|
const hasChanges = Object.values(stats).some(v => v > 0) || (draftedConnectors && draftedConnectors.length > 0);
|
|
384
567
|
|
|
385
568
|
if (!hasChanges) {
|
|
386
|
-
lines.push('
|
|
569
|
+
lines.push('**No changes detected** - Documentation is up to date');
|
|
387
570
|
lines.push('');
|
|
388
571
|
lines.push('<!-- PR_SUMMARY_END -->');
|
|
389
572
|
return lines.join('\n');
|
|
@@ -418,11 +601,11 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
418
601
|
}
|
|
419
602
|
|
|
420
603
|
if (stats.removedComponents > 0) {
|
|
421
|
-
lines.push(`- **${stats.removedComponents}** removed connector${stats.removedComponents !== 1 ? 's' : ''}
|
|
604
|
+
lines.push(`- **${stats.removedComponents}** removed connector${stats.removedComponents !== 1 ? 's' : ''}`);
|
|
422
605
|
}
|
|
423
606
|
|
|
424
607
|
if (stats.removedFields > 0) {
|
|
425
|
-
lines.push(`- **${stats.removedFields}** removed field${stats.removedFields !== 1 ? 's' : ''}
|
|
608
|
+
lines.push(`- **${stats.removedFields}** removed field${stats.removedFields !== 1 ? 's' : ''}`);
|
|
426
609
|
}
|
|
427
610
|
|
|
428
611
|
if (stats.deprecatedComponents > 0) {
|
|
@@ -433,15 +616,39 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
433
616
|
lines.push(`- **${stats.deprecatedFields}** deprecated field${stats.deprecatedFields !== 1 ? 's' : ''}`);
|
|
434
617
|
}
|
|
435
618
|
|
|
619
|
+
if (stats.newBloblangMethods > 0) {
|
|
620
|
+
lines.push(`- **${stats.newBloblangMethods}** new Bloblang method${stats.newBloblangMethods !== 1 ? 's' : ''}`);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
if (stats.newBloblangFunctions > 0) {
|
|
624
|
+
lines.push(`- **${stats.newBloblangFunctions}** new Bloblang function${stats.newBloblangFunctions !== 1 ? 's' : ''}`);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
if (stats.removedBloblangMethods > 0) {
|
|
628
|
+
lines.push(`- **${stats.removedBloblangMethods}** removed Bloblang method${stats.removedBloblangMethods !== 1 ? 's' : ''}`);
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
if (stats.removedBloblangFunctions > 0) {
|
|
632
|
+
lines.push(`- **${stats.removedBloblangFunctions}** removed Bloblang function${stats.removedBloblangFunctions !== 1 ? 's' : ''}`);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
if (stats.deprecatedBloblangMethods > 0) {
|
|
636
|
+
lines.push(`- **${stats.deprecatedBloblangMethods}** deprecated Bloblang method${stats.deprecatedBloblangMethods !== 1 ? 's' : ''}`);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
if (stats.deprecatedBloblangFunctions > 0) {
|
|
640
|
+
lines.push(`- **${stats.deprecatedBloblangFunctions}** deprecated Bloblang function${stats.deprecatedBloblangFunctions !== 1 ? 's' : ''}`);
|
|
641
|
+
}
|
|
642
|
+
|
|
436
643
|
if (stats.changedDefaults > 0) {
|
|
437
|
-
lines.push(`- **${stats.changedDefaults}** default value change${stats.changedDefaults !== 1 ? 's' : ''}
|
|
644
|
+
lines.push(`- **${stats.changedDefaults}** default value change${stats.changedDefaults !== 1 ? 's' : ''}`);
|
|
438
645
|
}
|
|
439
646
|
|
|
440
647
|
lines.push('');
|
|
441
648
|
|
|
442
649
|
// Writer Reminder for Commercial Names
|
|
443
650
|
if (stats.newComponents > 0) {
|
|
444
|
-
lines.push('###
|
|
651
|
+
lines.push('### Writer Action Required');
|
|
445
652
|
lines.push('');
|
|
446
653
|
lines.push('For each new connector, add the `:page-commercial-names:` attribute to the frontmatter:');
|
|
447
654
|
lines.push('');
|
|
@@ -524,7 +731,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
524
731
|
if (stats.changedDefaults > 0) breakingChanges.push('changed defaults');
|
|
525
732
|
|
|
526
733
|
if (breakingChanges.length > 0) {
|
|
527
|
-
lines.push('###
|
|
734
|
+
lines.push('### Breaking Changes Detected');
|
|
528
735
|
lines.push('');
|
|
529
736
|
lines.push(`This update includes **${breakingChanges.join(', ')}** that may affect existing configurations.`);
|
|
530
737
|
lines.push('');
|
|
@@ -598,7 +805,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
598
805
|
}
|
|
599
806
|
|
|
600
807
|
if (missingDescriptions.length > 0) {
|
|
601
|
-
lines.push('###
|
|
808
|
+
lines.push('### Missing Descriptions');
|
|
602
809
|
lines.push('');
|
|
603
810
|
lines.push(`**${missingDescriptions.length}** item${missingDescriptions.length !== 1 ? 's' : ''} missing descriptions - these need writer attention:`);
|
|
604
811
|
lines.push('');
|
|
@@ -643,7 +850,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
643
850
|
if (missingDescriptions.length > 0) {
|
|
644
851
|
actionItems.push({
|
|
645
852
|
priority: 0,
|
|
646
|
-
text:
|
|
853
|
+
text: `Add descriptions for ${missingDescriptions.length} component${missingDescriptions.length !== 1 ? 's' : ''}/field${missingDescriptions.length !== 1 ? 's' : ''} (see Missing Descriptions section)`
|
|
647
854
|
});
|
|
648
855
|
}
|
|
649
856
|
|
|
@@ -721,9 +928,20 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
721
928
|
|
|
722
929
|
lines.push('');
|
|
723
930
|
|
|
931
|
+
// Bloblang methods and functions
|
|
932
|
+
const bloblangLines = renderBloblangChanges({
|
|
933
|
+
newMethods: diffData.details.newBloblangMethods || [],
|
|
934
|
+
newFunctions: diffData.details.newBloblangFunctions || [],
|
|
935
|
+
removedMethods: diffData.details.removedBloblangMethods || [],
|
|
936
|
+
removedFunctions: diffData.details.removedBloblangFunctions || [],
|
|
937
|
+
deprecatedMethods: diffData.details.deprecatedBloblangMethods || [],
|
|
938
|
+
deprecatedFunctions: diffData.details.deprecatedBloblangFunctions || []
|
|
939
|
+
}, false); // includeVersion = false for single-version summaries
|
|
940
|
+
lines.push(...bloblangLines);
|
|
941
|
+
|
|
724
942
|
// Detailed breakdown (expandable)
|
|
725
943
|
lines.push('<details>');
|
|
726
|
-
lines.push('<summary><strong
|
|
944
|
+
lines.push('<summary><strong>Detailed Changes</strong> (click to expand)</summary>');
|
|
727
945
|
lines.push('');
|
|
728
946
|
|
|
729
947
|
// New Connectors
|
|
@@ -861,7 +1079,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
861
1079
|
|
|
862
1080
|
// Removed Connectors
|
|
863
1081
|
if (stats.removedComponents > 0) {
|
|
864
|
-
lines.push('####
|
|
1082
|
+
lines.push('#### Removed Connectors');
|
|
865
1083
|
lines.push('');
|
|
866
1084
|
diffData.details.removedComponents.forEach(c => {
|
|
867
1085
|
lines.push(`- **${c.name}** (${c.type})`);
|
|
@@ -871,7 +1089,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
871
1089
|
|
|
872
1090
|
// Removed Fields
|
|
873
1091
|
if (stats.removedFields > 0) {
|
|
874
|
-
lines.push('####
|
|
1092
|
+
lines.push('#### Removed Fields');
|
|
875
1093
|
lines.push('');
|
|
876
1094
|
|
|
877
1095
|
const fieldsByComponent = {};
|
|
@@ -927,7 +1145,7 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
927
1145
|
|
|
928
1146
|
// Changed Defaults
|
|
929
1147
|
if (stats.changedDefaults > 0) {
|
|
930
|
-
lines.push('####
|
|
1148
|
+
lines.push('#### Changed Default Values');
|
|
931
1149
|
lines.push('');
|
|
932
1150
|
|
|
933
1151
|
const changesByComponent = {};
|
|
@@ -950,6 +1168,66 @@ function generatePRSummary(diffData, binaryAnalysis = null, draftedConnectors =
|
|
|
950
1168
|
});
|
|
951
1169
|
}
|
|
952
1170
|
|
|
1171
|
+
// New Bloblang Methods
|
|
1172
|
+
if (stats.newBloblangMethods > 0 && diffData.details.newBloblangMethods) {
|
|
1173
|
+
lines.push('#### New Bloblang Methods');
|
|
1174
|
+
lines.push('');
|
|
1175
|
+
diffData.details.newBloblangMethods.forEach(methodName => {
|
|
1176
|
+
lines.push(`- \`${methodName}\``);
|
|
1177
|
+
});
|
|
1178
|
+
lines.push('');
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
// New Bloblang Functions
|
|
1182
|
+
if (stats.newBloblangFunctions > 0 && diffData.details.newBloblangFunctions) {
|
|
1183
|
+
lines.push('#### New Bloblang Functions');
|
|
1184
|
+
lines.push('');
|
|
1185
|
+
diffData.details.newBloblangFunctions.forEach(funcName => {
|
|
1186
|
+
lines.push(`- \`${funcName}\``);
|
|
1187
|
+
});
|
|
1188
|
+
lines.push('');
|
|
1189
|
+
}
|
|
1190
|
+
|
|
1191
|
+
// Removed Bloblang Methods
|
|
1192
|
+
if (stats.removedBloblangMethods > 0 && diffData.details.removedBloblangMethods) {
|
|
1193
|
+
lines.push('#### Removed Bloblang Methods');
|
|
1194
|
+
lines.push('');
|
|
1195
|
+
diffData.details.removedBloblangMethods.forEach(methodName => {
|
|
1196
|
+
lines.push(`- \`${methodName}\``);
|
|
1197
|
+
});
|
|
1198
|
+
lines.push('');
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
// Removed Bloblang Functions
|
|
1202
|
+
if (stats.removedBloblangFunctions > 0 && diffData.details.removedBloblangFunctions) {
|
|
1203
|
+
lines.push('#### Removed Bloblang Functions');
|
|
1204
|
+
lines.push('');
|
|
1205
|
+
diffData.details.removedBloblangFunctions.forEach(funcName => {
|
|
1206
|
+
lines.push(`- \`${funcName}\``);
|
|
1207
|
+
});
|
|
1208
|
+
lines.push('');
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
// Deprecated Bloblang Methods
|
|
1212
|
+
if (stats.deprecatedBloblangMethods > 0 && diffData.details.deprecatedBloblangMethods) {
|
|
1213
|
+
lines.push('#### Deprecated Bloblang Methods');
|
|
1214
|
+
lines.push('');
|
|
1215
|
+
diffData.details.deprecatedBloblangMethods.forEach(methodName => {
|
|
1216
|
+
lines.push(`- \`${methodName}\``);
|
|
1217
|
+
});
|
|
1218
|
+
lines.push('');
|
|
1219
|
+
}
|
|
1220
|
+
|
|
1221
|
+
// Deprecated Bloblang Functions
|
|
1222
|
+
if (stats.deprecatedBloblangFunctions > 0 && diffData.details.deprecatedBloblangFunctions) {
|
|
1223
|
+
lines.push('#### Deprecated Bloblang Functions');
|
|
1224
|
+
lines.push('');
|
|
1225
|
+
diffData.details.deprecatedBloblangFunctions.forEach(funcName => {
|
|
1226
|
+
lines.push(`- \`${funcName}\``);
|
|
1227
|
+
});
|
|
1228
|
+
lines.push('');
|
|
1229
|
+
}
|
|
1230
|
+
|
|
953
1231
|
// Cloud Support Gap Analysis
|
|
954
1232
|
if (binaryAnalysis && binaryAnalysis.comparison.notInCloud.length > 0) {
|
|
955
1233
|
lines.push('#### 🔍 Cloud Support Gap Analysis');
|