@redpanda-data/docs-extensions-and-macros 5.0.3 → 5.0.4
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.
|
@@ -135,12 +135,97 @@ module.exports.register = function ({ config }) {
|
|
|
135
135
|
}
|
|
136
136
|
});
|
|
137
137
|
|
|
138
|
+
// Find latest available Redpanda properties JSON in content catalog
|
|
139
|
+
// This ensures we use a version that actually exists, even if latest-redpanda-tag
|
|
140
|
+
// points to a newer release that doesn't have docs/attachments yet
|
|
141
|
+
// Component name is 'streaming' (or 'ROOT' for backwards compatibility)
|
|
142
|
+
const propertiesFiles = contentCatalog.findBy({
|
|
143
|
+
family: 'attachment'
|
|
144
|
+
}).filter(f => {
|
|
145
|
+
if (!f?.src?.stem || !f?.src?.component) return false;
|
|
146
|
+
const isStreamingComponent = f.src.component === 'streaming' || f.src.component === 'ROOT';
|
|
147
|
+
const isReferenceModule = f.src.module === 'reference';
|
|
148
|
+
const isPropertiesFile = f.src.stem.startsWith('redpanda-properties-');
|
|
149
|
+
return isStreamingComponent && isReferenceModule && isPropertiesFile;
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
let availablePropertiesTag = null;
|
|
153
|
+
if (propertiesFiles.length > 0) {
|
|
154
|
+
const versions = propertiesFiles
|
|
155
|
+
.map(f => f.src.stem.replace('redpanda-properties-', ''))
|
|
156
|
+
// Only accept stable versions (no prerelease suffix like -backup, -rc1, etc.)
|
|
157
|
+
.filter(v => {
|
|
158
|
+
const normalized = v.replace(/^v/, '');
|
|
159
|
+
return semver.valid(normalized) && semver.prerelease(normalized) === null;
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
if (versions.length > 0) {
|
|
163
|
+
availablePropertiesTag = versions.sort((a, b) =>
|
|
164
|
+
semver.rcompare(a.replace(/^v/, ''), b.replace(/^v/, ''))
|
|
165
|
+
)[0];
|
|
166
|
+
|
|
167
|
+
// Set on all component versions
|
|
168
|
+
components.forEach(component => {
|
|
169
|
+
component.versions.forEach(({ asciidoc }) => {
|
|
170
|
+
asciidoc.attributes['available-properties-tag'] = availablePropertiesTag;
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
logger.debug(`Found ${propertiesFiles.length} properties JSON files, latest available: ${availablePropertiesTag}`);
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
logger.debug('No properties JSON files found in content catalog');
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Find latest available Connect JSON in content catalog
|
|
181
|
+
// Component name is 'connect' (or 'redpanda-connect' for backwards compatibility)
|
|
182
|
+
const connectFiles = contentCatalog.findBy({
|
|
183
|
+
family: 'attachment'
|
|
184
|
+
}).filter(f => {
|
|
185
|
+
if (!f?.src?.stem || !f?.src?.component) return false;
|
|
186
|
+
const isConnectComponent = f.src.component === 'connect' || f.src.component === 'redpanda-connect';
|
|
187
|
+
const isComponentsModule = f.src.module === 'components';
|
|
188
|
+
const isConnectFile = f.src.stem.startsWith('connect-');
|
|
189
|
+
return isConnectComponent && isComponentsModule && isConnectFile;
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
let availableConnectVersion = null;
|
|
193
|
+
if (connectFiles.length > 0) {
|
|
194
|
+
const versions = connectFiles
|
|
195
|
+
.map(f => f.src.stem.replace('connect-', ''))
|
|
196
|
+
// Only accept stable versions (no prerelease suffix)
|
|
197
|
+
.filter(v => semver.valid(v) && semver.prerelease(v) === null);
|
|
198
|
+
|
|
199
|
+
if (versions.length > 0) {
|
|
200
|
+
availableConnectVersion = versions.sort((a, b) =>
|
|
201
|
+
semver.rcompare(a, b)
|
|
202
|
+
)[0];
|
|
203
|
+
|
|
204
|
+
// Set on all component versions
|
|
205
|
+
components.forEach(component => {
|
|
206
|
+
component.versions.forEach(({ asciidoc }) => {
|
|
207
|
+
asciidoc.attributes['available-connect-version'] = availableConnectVersion;
|
|
208
|
+
});
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
logger.debug(`Found ${connectFiles.length} connect JSON files, latest available: ${availableConnectVersion}`);
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
logger.debug('No connect JSON files found in content catalog');
|
|
215
|
+
}
|
|
216
|
+
|
|
138
217
|
logger.info('Updated Redpanda documentation versions successfully:');
|
|
139
218
|
logger.info(`- Redpanda: ${latestVersions.redpanda.latestRedpandaRelease.version}${latestVersions.redpanda.latestRcRelease ? ', beta: ' + latestVersions.redpanda.latestRcRelease.version : ''}`);
|
|
140
219
|
logger.info(`- Connect: ${latestVersions.connect}`);
|
|
141
220
|
logger.info(`- Console: ${latestVersions.console.latestStableRelease}${latestVersions.console.latestBetaRelease ? ', beta: ' + latestVersions.console.latestBetaRelease : ''}`);
|
|
142
221
|
logger.info(`- Operator: ${latestVersions.operator?.latestStableRelease || 'unknown'}${latestVersions.operator?.latestBetaRelease ? ', beta: ' + latestVersions.operator.latestBetaRelease : ''}`);
|
|
143
222
|
logger.info(`- Helm chart: ${latestVersions.helmChart?.latestStableRelease || 'unknown'}${latestVersions.helmChart?.latestBetaRelease ? ', beta: ' + latestVersions.helmChart.latestBetaRelease : ''}`);
|
|
223
|
+
if (availablePropertiesTag) {
|
|
224
|
+
logger.info(`- Available properties JSON: ${availablePropertiesTag}`);
|
|
225
|
+
}
|
|
226
|
+
if (availableConnectVersion) {
|
|
227
|
+
logger.info(`- Available Connect JSON: ${availableConnectVersion}`);
|
|
228
|
+
}
|
|
144
229
|
} catch (error) {
|
|
145
230
|
logger.error(`Error updating versions: ${error}`);
|
|
146
231
|
}
|
|
@@ -174,4 +259,50 @@ module.exports.register = function ({ config }) {
|
|
|
174
259
|
}
|
|
175
260
|
});
|
|
176
261
|
}
|
|
262
|
+
};
|
|
263
|
+
|
|
264
|
+
// Export helper functions for testing
|
|
265
|
+
module.exports.filterPropertiesFiles = function(files) {
|
|
266
|
+
return files.filter(f => {
|
|
267
|
+
if (!f?.src?.stem || !f?.src?.component) return false;
|
|
268
|
+
const isStreamingComponent = f.src.component === 'streaming' || f.src.component === 'ROOT';
|
|
269
|
+
const isReferenceModule = f.src.module === 'reference';
|
|
270
|
+
const isPropertiesFile = f.src.stem.startsWith('redpanda-properties-');
|
|
271
|
+
return isStreamingComponent && isReferenceModule && isPropertiesFile;
|
|
272
|
+
});
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
module.exports.filterConnectFiles = function(files) {
|
|
276
|
+
return files.filter(f => {
|
|
277
|
+
if (!f?.src?.stem || !f?.src?.component) return false;
|
|
278
|
+
const isConnectComponent = f.src.component === 'connect' || f.src.component === 'redpanda-connect';
|
|
279
|
+
const isComponentsModule = f.src.module === 'components';
|
|
280
|
+
const isConnectFile = f.src.stem.startsWith('connect-');
|
|
281
|
+
return isConnectComponent && isComponentsModule && isConnectFile;
|
|
282
|
+
});
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
module.exports.extractLatestPropertiesVersion = function(files, semver) {
|
|
286
|
+
const versions = files
|
|
287
|
+
.map(f => f.src.stem.replace('redpanda-properties-', ''))
|
|
288
|
+
.filter(v => {
|
|
289
|
+
const normalized = v.replace(/^v/, '');
|
|
290
|
+
return semver.valid(normalized) && semver.prerelease(normalized) === null;
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
if (versions.length === 0) return null;
|
|
294
|
+
|
|
295
|
+
return versions.sort((a, b) =>
|
|
296
|
+
semver.rcompare(a.replace(/^v/, ''), b.replace(/^v/, ''))
|
|
297
|
+
)[0];
|
|
298
|
+
};
|
|
299
|
+
|
|
300
|
+
module.exports.extractLatestConnectVersion = function(files, semver) {
|
|
301
|
+
const versions = files
|
|
302
|
+
.map(f => f.src.stem.replace('connect-', ''))
|
|
303
|
+
.filter(v => semver.valid(v) && semver.prerelease(v) === null);
|
|
304
|
+
|
|
305
|
+
if (versions.length === 0) return null;
|
|
306
|
+
|
|
307
|
+
return versions.sort((a, b) => semver.rcompare(a, b))[0];
|
|
177
308
|
};
|