@baiyibai-antora/extensions 1.0.3 → 1.0.6

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/collector-writer/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extensions/collector-writer/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@
2
2
  * @baiyibai-antora/docs-extensions - external-asset-downloader
3
3
  *
4
4
  * Downloads external assets (images) from HTTP/HTTPS URLs into component directories.
5
- * Supports both individual file URLs and HTTP directory listings (Apache autoindex style).
5
+ * Parses antora.yml files directly to find image: attributes (both commented and uncommented).
6
+ * Supports Apache-style HTTP directory listings for downloading multiple files.
6
7
  *
7
8
  * Configuration in antora-playbook.yml:
8
9
  *
@@ -17,10 +18,11 @@
17
18
  * target_dir: 'modules/ROOT/images'
18
19
  * overwrite: 'never'
19
20
  * concurrency: 5
20
- * directory_listing: true
21
- * url_replace:
22
- * - pattern: '/artifactory/'
23
- * replacement: '/artifactory/api/storage/'
21
+ *
22
+ * In antora.yml, define image URLs like:
23
+ * image: 'https://example.com/images/'
24
+ * image2: 'https://example.com/other-images/'
25
+ * # image3: 'https://example.com/fallback/' (commented fallback)
24
26
  */
25
27
  interface UrlReplaceRule {
26
28
  pattern: string;
@@ -34,8 +36,8 @@ interface AssetDownloaderConfig {
34
36
  target_dir: string;
35
37
  overwrite: 'never' | 'always';
36
38
  concurrency: number;
37
- directory_listing: boolean;
38
39
  url_replace: UrlReplaceRule[];
40
+ trigger_file: string;
39
41
  }
40
42
  interface AntoraLogger {
41
43
  debug?: (msg: string) => void;
@@ -54,18 +56,10 @@ interface Playbook {
54
56
  extensions?: ExtensionEntry[];
55
57
  };
56
58
  }
57
- interface ComponentVersionConfig {
58
- name?: string;
59
- version?: string;
60
- asciidoc?: {
61
- attributes?: Record<string, string>;
62
- };
63
- }
64
59
  interface Registry {
65
60
  getLogger?: (name: string) => AntoraLogger;
66
61
  on: (event: string, callback: (context: {
67
62
  playbook: Playbook;
68
- contentAggregate?: ComponentVersionConfig[];
69
63
  }) => Promise<void>) => void;
70
64
  }
71
65
  export declare function register(context: Registry): void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/external-asset-downloader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAQH,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B;AAUD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAClD;AAED,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;KAC/B,CAAC;CACH;AAED,UAAU,sBAAsB;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE;QACT,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;CACH;AAED,UAAU,QAAQ;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;IAC3C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAC;QAAC,gBAAgB,CAAC,EAAE,sBAAsB,EAAE,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;CACxI;AA2UD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAuDhD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extensions/external-asset-downloader/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAQH,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;CACtB;AAUD,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/B;AAED,UAAU,cAAc;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;CAClD;AAED,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;KAC/B,CAAC;CACH;AAED,UAAU,QAAQ;IAChB,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,YAAY,CAAC;IAC3C,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,QAAQ,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;CAC3F;AAkeD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CA2ChD"}
@@ -3,7 +3,8 @@
3
3
  * @baiyibai-antora/docs-extensions - external-asset-downloader
4
4
  *
5
5
  * Downloads external assets (images) from HTTP/HTTPS URLs into component directories.
6
- * Supports both individual file URLs and HTTP directory listings (Apache autoindex style).
6
+ * Parses antora.yml files directly to find image: attributes (both commented and uncommented).
7
+ * Supports Apache-style HTTP directory listings for downloading multiple files.
7
8
  *
8
9
  * Configuration in antora-playbook.yml:
9
10
  *
@@ -18,10 +19,11 @@
18
19
  * target_dir: 'modules/ROOT/images'
19
20
  * overwrite: 'never'
20
21
  * concurrency: 5
21
- * directory_listing: true
22
- * url_replace:
23
- * - pattern: '/artifactory/'
24
- * replacement: '/artifactory/api/storage/'
22
+ *
23
+ * In antora.yml, define image URLs like:
24
+ * image: 'https://example.com/images/'
25
+ * image2: 'https://example.com/other-images/'
26
+ * # image3: 'https://example.com/fallback/' (commented fallback)
25
27
  */
26
28
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
27
29
  if (k2 === undefined) k2 = k;
@@ -101,9 +103,6 @@ function pick(obj, keys, def) {
101
103
  }
102
104
  return def;
103
105
  }
104
- function ensureArray(v) {
105
- return Array.isArray(v) ? v : v ? [v] : [];
106
- }
107
106
  function readConfig(playbook) {
108
107
  const extEntries = playbook?.antora?.extensions || [];
109
108
  const me = extEntries.find((e) => {
@@ -111,22 +110,22 @@ function readConfig(playbook) {
111
110
  return req.includes('external-asset-downloader');
112
111
  }) || {};
113
112
  const raw = (me.assetDownloader || me.assetdownloader || {});
114
- const target_dir = pick(raw, ['target_dir', 'targetdir'], '');
113
+ const target_dir = pick(raw, ['target_dir', 'targetDir', 'targetdir'], '');
115
114
  if (!target_dir) {
116
115
  return null;
117
116
  }
118
- const rawUrlReplace = pick(raw, ['url_replace', 'urlreplace'], []);
119
- const url_replace = ensureArray(rawUrlReplace);
117
+ const rawUrlReplace = pick(raw, ['url_replace', 'urlReplace', 'urlreplace'], []);
118
+ const url_replace = Array.isArray(rawUrlReplace) ? rawUrlReplace : rawUrlReplace ? [rawUrlReplace] : [];
120
119
  return {
121
120
  enabled: pick(raw, ['enabled'], true),
122
121
  quiet: pick(raw, ['quiet'], true),
123
- attribute_prefix: pick(raw, ['attribute_prefix', 'attributeprefix'], 'image'),
124
- include_commented: pick(raw, ['include_commented', 'includecommented'], true),
122
+ attribute_prefix: pick(raw, ['attribute_prefix', 'attributePrefix', 'attributeprefix'], 'image'),
123
+ include_commented: pick(raw, ['include_commented', 'includeCommented', 'includecommented'], true),
125
124
  target_dir,
126
125
  overwrite: pick(raw, ['overwrite'], 'never'),
127
126
  concurrency: pick(raw, ['concurrency'], 5),
128
- directory_listing: pick(raw, ['directory_listing', 'directorylisting'], false),
129
127
  url_replace,
128
+ trigger_file: pick(raw, ['trigger_file', 'triggerFile', 'triggerfile'], ''),
130
129
  };
131
130
  }
132
131
  async function fileExists(filePath) {
@@ -141,42 +140,6 @@ async function fileExists(filePath) {
141
140
  async function ensureDir(dirPath) {
142
141
  await fsp.mkdir(dirPath, { recursive: true });
143
142
  }
144
- function downloadFile(url, destPath) {
145
- return new Promise((resolve, reject) => {
146
- const parsedUrl = new url_1.URL(url);
147
- const protocol = parsedUrl.protocol === 'https:' ? https : http;
148
- const request = protocol.get(url, (response) => {
149
- if (response.statusCode === 301 || response.statusCode === 302) {
150
- const redirectUrl = response.headers.location;
151
- if (redirectUrl) {
152
- downloadFile(redirectUrl, destPath).then(resolve).catch(reject);
153
- return;
154
- }
155
- }
156
- if (response.statusCode !== 200) {
157
- reject(new Error(`HTTP ${response.statusCode} for ${url}`));
158
- return;
159
- }
160
- const chunks = [];
161
- response.on('data', (chunk) => chunks.push(chunk));
162
- response.on('end', async () => {
163
- try {
164
- await fsp.writeFile(destPath, Buffer.concat(chunks));
165
- resolve();
166
- }
167
- catch (err) {
168
- reject(err);
169
- }
170
- });
171
- response.on('error', reject);
172
- });
173
- request.on('error', reject);
174
- request.setTimeout(30000, () => {
175
- request.destroy();
176
- reject(new Error(`Timeout downloading ${url}`));
177
- });
178
- });
179
- }
180
143
  function fetchUrlContent(url) {
181
144
  return new Promise((resolve, reject) => {
182
145
  const parsedUrl = new url_1.URL(url);
@@ -196,7 +159,7 @@ function fetchUrlContent(url) {
196
159
  const chunks = [];
197
160
  response.on('data', (chunk) => chunks.push(chunk));
198
161
  response.on('end', () => {
199
- resolve(Buffer.concat(chunks).toString('utf8'));
162
+ resolve(Buffer.concat(chunks));
200
163
  });
201
164
  response.on('error', reject);
202
165
  });
@@ -207,6 +170,19 @@ function fetchUrlContent(url) {
207
170
  });
208
171
  });
209
172
  }
173
+ async function downloadFile(url, destPath, logger) {
174
+ try {
175
+ const data = await fetchUrlContent(url);
176
+ await ensureDir(path.dirname(destPath));
177
+ await fsp.writeFile(destPath, data);
178
+ return true;
179
+ }
180
+ catch (err) {
181
+ logger.warn(`Download failed for ${url}: ${err.message}`);
182
+ return false;
183
+ }
184
+ }
185
+ /* ------------------------------- URL replace ------------------------------ */
210
186
  function applyUrlReplace(url, rules) {
211
187
  let result = url;
212
188
  for (const rule of rules) {
@@ -215,8 +191,69 @@ function applyUrlReplace(url, rules) {
215
191
  }
216
192
  return result;
217
193
  }
194
+ /* ------------------------------ YAML parsing ------------------------------ */
195
+ function firstDefined(...args) {
196
+ for (const a of args)
197
+ if (a !== undefined)
198
+ return a;
199
+ return '';
200
+ }
201
+ function isEmptyStringLiteral(s) {
202
+ return s === '' || s === '""' || s === "''";
203
+ }
204
+ async function getImageUrlsFromAntoraYml(playbook, logger, cfg) {
205
+ const candidatePaths = [
206
+ path.join(playbook?.dir || process.cwd(), 'antora.yml'),
207
+ path.join(process.cwd(), 'antora.yml'),
208
+ ];
209
+ let content = null;
210
+ for (const p of candidatePaths) {
211
+ try {
212
+ content = await fsp.readFile(p, 'utf8');
213
+ logger.debug(`Found antora.yml at: ${p}`);
214
+ break;
215
+ }
216
+ catch (err) {
217
+ const error = err;
218
+ if (error.code !== 'ENOENT') {
219
+ logger.warn(`Error reading ${p}: ${error.message}`);
220
+ }
221
+ }
222
+ }
223
+ if (!content) {
224
+ logger.debug('No antora.yml found');
225
+ return [];
226
+ }
227
+ const lines = content.split(/\r?\n/);
228
+ const active = [];
229
+ const commented = [];
230
+ const prefix = cfg.attribute_prefix;
231
+ const reActive = new RegExp(`^\\s*${prefix}\\d*\\s*:\\s*(?:"([^"]*)"|'([^']*)'|([^#\\s][^#]*))\\s*(?:#.*)?$`);
232
+ const reCommented = new RegExp(`^\\s*#\\s*${prefix}\\d*\\s*:\\s*(?:"([^"]*)"|'([^']*)'|([^#\\s][^#]*))\\s*(?:#.*)?$`);
233
+ for (const line of lines) {
234
+ let m = line.match(reActive);
235
+ if (m) {
236
+ const val = firstDefined(m[1], m[2], m[3]).trim();
237
+ if (!isEmptyStringLiteral(val) && val.startsWith('http')) {
238
+ active.push(val);
239
+ }
240
+ continue;
241
+ }
242
+ if (cfg.include_commented) {
243
+ m = line.match(reCommented);
244
+ if (m) {
245
+ const val = firstDefined(m[1], m[2], m[3]).trim();
246
+ if (val && val.startsWith('http')) {
247
+ commented.push(val);
248
+ }
249
+ }
250
+ }
251
+ }
252
+ return active.length ? active : commented;
253
+ }
218
254
  function parseDirectoryListing(html, baseUrl, logger) {
219
255
  const files = [];
256
+ const subdirs = [];
220
257
  const linkRegex = /<a\s+[^>]*href\s*=\s*["']([^"']+)["'][^>]*>/gi;
221
258
  let match;
222
259
  while ((match = linkRegex.exec(html)) !== null) {
@@ -225,6 +262,12 @@ function parseDirectoryListing(html, baseUrl, logger) {
225
262
  continue;
226
263
  }
227
264
  if (href.endsWith('/')) {
265
+ try {
266
+ const subdirUrl = new url_1.URL(href, baseUrl).href;
267
+ subdirs.push(subdirUrl);
268
+ logger.debug(`Found subdirectory in listing: ${href}`);
269
+ }
270
+ catch { /* ignore */ }
228
271
  continue;
229
272
  }
230
273
  if (href.startsWith('http://') || href.startsWith('https://')) {
@@ -251,7 +294,7 @@ function parseDirectoryListing(html, baseUrl, logger) {
251
294
  }
252
295
  }
253
296
  }
254
- return files;
297
+ return { files, subdirs };
255
298
  }
256
299
  function looksLikeDirectory(url) {
257
300
  try {
@@ -268,120 +311,202 @@ function looksLikeDirectory(url) {
268
311
  return false;
269
312
  }
270
313
  }
271
- async function downloadFromDirectory(directoryUrl, cfg, componentName, logger) {
272
- const tasks = [];
314
+ async function limitConcurrency(taskFns, limit) {
315
+ const queue = [...taskFns];
316
+ const workers = Array.from({ length: Math.min(limit, queue.length) }, async () => {
317
+ while (queue.length > 0) {
318
+ const fn = queue.shift();
319
+ if (fn)
320
+ await fn();
321
+ }
322
+ });
323
+ await Promise.all(workers);
324
+ }
325
+ async function downloadDirectory(directoryUrl, imagesDir, logger, opts) {
273
326
  try {
274
- const fetchUrl = applyUrlReplace(directoryUrl, cfg.url_replace);
327
+ const normalizedUrl = directoryUrl.replace(/\/+$/, '') + '/';
328
+ const fetchUrl = applyUrlReplace(normalizedUrl, opts.url_replace);
275
329
  logger.debug(`Fetching directory listing from: ${fetchUrl}`);
276
- const html = await fetchUrlContent(fetchUrl);
277
- const fileUrls = parseDirectoryListing(html, directoryUrl, logger);
278
- logger.debug(`Found ${fileUrls.length} files in directory`);
279
- for (const fileUrl of fileUrls) {
330
+ const htmlBuffer = await fetchUrlContent(fetchUrl);
331
+ const html = htmlBuffer.toString('utf8');
332
+ const listing = parseDirectoryListing(html, normalizedUrl, logger);
333
+ const fileUrls = listing.files;
334
+ const subdirUrls = listing.subdirs;
335
+ if (fileUrls.length === 0 && subdirUrls.length === 0) {
336
+ logger.warn('No files or subdirectories found in directory listing');
337
+ return { downloaded: 0, skipped: 0, failed: 0, total: 0 };
338
+ }
339
+ logger.debug(`Found ${fileUrls.length} file(s) in remote directory`);
340
+ let downloaded = 0;
341
+ let skipped = 0;
342
+ let failed = 0;
343
+ const tasks = fileUrls.map((fileUrl) => async () => {
280
344
  try {
281
345
  const parsedUrl = new url_1.URL(fileUrl);
282
346
  const filename = path.basename(parsedUrl.pathname);
283
- if (filename) {
284
- tasks.push({ url: fileUrl, filename, componentName });
347
+ if (!filename)
348
+ return;
349
+ const localPath = path.join(imagesDir, filename);
350
+ let exists = false;
351
+ try {
352
+ await fsp.access(localPath);
353
+ exists = true;
354
+ }
355
+ catch {
356
+ exists = false;
357
+ }
358
+ if (exists && opts.overwrite !== 'always') {
359
+ logger.debug(`Skipped: ${filename}`);
360
+ skipped++;
361
+ return;
362
+ }
363
+ const ok = await downloadFile(fileUrl, localPath, logger);
364
+ if (ok) {
365
+ logger.debug(`${exists ? 'Overwrote' : 'Downloaded'}: ${filename}`);
366
+ downloaded++;
367
+ }
368
+ else {
369
+ failed++;
285
370
  }
286
371
  }
287
- catch {
288
- // Invalid URL, skip
372
+ catch (err) {
373
+ logger.warn(`Error processing file: ${err.message}`);
374
+ failed++;
375
+ }
376
+ });
377
+ await limitConcurrency(tasks, opts.concurrency);
378
+ let totalFiles = fileUrls.length;
379
+ for (const subdirUrl of subdirUrls) {
380
+ try {
381
+ const subdirName = new url_1.URL(subdirUrl).pathname.replace(/\/$/, '').split('/').pop() || '';
382
+ if (!subdirName)
383
+ continue;
384
+ const subdirLocalPath = path.join(imagesDir, subdirName);
385
+ logger.debug(`Recursing into subdirectory: ${subdirUrl} -> ${subdirLocalPath}`);
386
+ const subdirStats = await downloadDirectory(subdirUrl, subdirLocalPath, logger, opts);
387
+ downloaded += subdirStats.downloaded;
388
+ skipped += subdirStats.skipped;
389
+ failed += subdirStats.failed;
390
+ totalFiles += subdirStats.total;
391
+ }
392
+ catch (err) {
393
+ logger.warn(`Error recursing into subdirectory ${subdirUrl}: ${err.message}`);
394
+ failed++;
289
395
  }
290
396
  }
397
+ return { downloaded, skipped, failed, total: totalFiles };
291
398
  }
292
399
  catch (err) {
293
- logger.warn(`Failed to fetch directory listing from ${directoryUrl}: ${err.message}`);
400
+ logger.error(`Error downloading directory: ${err.message}`);
401
+ return { downloaded: 0, skipped: 0, failed: 0, total: 0 };
294
402
  }
295
- return tasks;
296
403
  }
297
- async function processDownloads(tasks, cfg, logger) {
298
- const { concurrency, overwrite, target_dir } = cfg;
299
- async function downloadOne(task) {
300
- const destPath = path.resolve(process.cwd(), target_dir, task.filename);
301
- if (overwrite === 'never' && await fileExists(destPath)) {
302
- logger.debug(`Skip (exists): ${task.filename}`);
303
- return;
304
- }
305
- await ensureDir(path.dirname(destPath));
306
- try {
307
- await downloadFile(task.url, destPath);
308
- logger.info(`Downloaded: ${task.filename} from ${task.componentName}`);
309
- }
310
- catch (err) {
311
- logger.warn(`Failed to download ${task.url}: ${err.message}`);
404
+ /* ---------------------------- main work function -------------------------- */
405
+ async function downloadImages(playbook, logger, cfg) {
406
+ const totalStats = { downloaded: 0, skipped: 0, failed: 0, total: 0 };
407
+ try {
408
+ logger.debug('Scanning for remote image URLs');
409
+ const imageUrls = await getImageUrlsFromAntoraYml(playbook, logger, cfg);
410
+ if (imageUrls.length === 0) {
411
+ logger.debug('No remote image URLs configured. Skipping download.');
412
+ return totalStats;
312
413
  }
313
- }
314
- for (let i = 0; i < tasks.length; i += concurrency) {
315
- const batch = tasks.slice(i, i + concurrency);
316
- await Promise.all(batch.map(downloadOne));
317
- }
318
- }
319
- function extractUrlsFromAttributes(attrs, attributePrefix) {
320
- if (!attrs)
321
- return [];
322
- const results = [];
323
- const prefixRegex = new RegExp(`^${attributePrefix}\\d*$`, 'i');
324
- for (const [key, value] of Object.entries(attrs)) {
325
- if (!prefixRegex.test(key))
326
- continue;
327
- if (!value || typeof value !== 'string')
328
- continue;
329
- if (value.startsWith('http://') || value.startsWith('https://')) {
330
- try {
331
- const parsedUrl = new url_1.URL(value);
332
- const filename = path.basename(parsedUrl.pathname) || `${key}.png`;
333
- results.push({ url: value, filename });
414
+ logger.debug(`Found ${imageUrls.length} image URL(s) to fetch`);
415
+ const imagesDir = path.join(playbook.dir || process.cwd(), cfg.target_dir);
416
+ await ensureDir(imagesDir);
417
+ for (const imageUrl of imageUrls) {
418
+ const urlNoParams = imageUrl.split('?')[0];
419
+ logger.debug(`Downloading images from: ${imageUrl}`);
420
+ if (looksLikeDirectory(urlNoParams)) {
421
+ const stats = await downloadDirectory(imageUrl, imagesDir, logger, {
422
+ overwrite: cfg.overwrite,
423
+ concurrency: cfg.concurrency,
424
+ url_replace: cfg.url_replace,
425
+ });
426
+ totalStats.downloaded += stats.downloaded;
427
+ totalStats.skipped += stats.skipped;
428
+ totalStats.failed += stats.failed;
429
+ totalStats.total += stats.total;
430
+ if (stats.failed > 0) {
431
+ logger.warn(`Directory download had failures: ${imageUrl}`);
432
+ }
334
433
  }
335
- catch {
336
- // Invalid URL, skip
434
+ else {
435
+ const imageFilename = path.basename(urlNoParams);
436
+ if (!imageFilename) {
437
+ logger.warn(`Could not extract filename from URL: ${imageUrl}`);
438
+ continue;
439
+ }
440
+ const localPath = path.join(imagesDir, imageFilename);
441
+ let exists = false;
442
+ try {
443
+ await fsp.access(localPath);
444
+ exists = true;
445
+ }
446
+ catch {
447
+ exists = false;
448
+ }
449
+ totalStats.total++;
450
+ if (exists && cfg.overwrite !== 'always') {
451
+ logger.debug(`Skipped (exists): ${imageFilename}`);
452
+ totalStats.skipped++;
453
+ }
454
+ else {
455
+ const ok = await downloadFile(imageUrl, localPath, logger);
456
+ logger.debug(`${ok ? (exists ? 'Overwrote' : 'Downloaded') : 'Failed'}: ${imageFilename}`);
457
+ if (ok) {
458
+ totalStats.downloaded++;
459
+ }
460
+ else {
461
+ totalStats.failed++;
462
+ }
463
+ }
337
464
  }
338
465
  }
466
+ return totalStats;
467
+ }
468
+ catch (err) {
469
+ logger.error(`Error processing images: ${err.message}`);
470
+ return totalStats;
339
471
  }
340
- return results;
341
472
  }
473
+ /* ----------------------------- module register ---------------------------- */
342
474
  function register(context) {
343
- const antoraLogger = context.getLogger ? context.getLogger('antora-asset-downloader') : undefined;
475
+ const antoraLogger = context.getLogger ? context.getLogger('external-asset-downloader') : undefined;
344
476
  const logger = makeLogger(antoraLogger);
345
- context.on('contentAggregated', async ({ playbook, contentAggregate }) => {
477
+ logger.debug('AssetDownloader extension registered');
478
+ context.on('beforeProcess', async ({ playbook }) => {
346
479
  const cfg = readConfig(playbook);
347
480
  if (!cfg) {
348
- logger.debug('Asset downloader not configured (no target_dir), skipping');
481
+ logger.warn('Asset downloader not configured (no target_dir), skipping');
349
482
  return;
350
483
  }
351
484
  if (!cfg.enabled) {
352
- logger.debug('Asset downloader disabled');
485
+ logger.warn('Asset downloader disabled');
353
486
  return;
354
487
  }
355
488
  quietMode = cfg.quiet;
356
- if (!contentAggregate || contentAggregate.length === 0) {
357
- logger.debug('No content aggregate available');
358
- return;
489
+ if (cfg.trigger_file) {
490
+ const triggerPath = path.resolve(playbook.dir || process.cwd(), cfg.trigger_file);
491
+ if (await fileExists(triggerPath)) {
492
+ logger.debug(`Trigger file exists, skipping download: ${cfg.trigger_file}`);
493
+ return;
494
+ }
359
495
  }
360
- logger.event('Scanning for external assets to download');
361
- const tasks = [];
362
- for (const componentVersion of contentAggregate) {
363
- const attrs = componentVersion.asciidoc?.attributes;
364
- const componentName = componentVersion.name || 'unknown';
365
- const urls = extractUrlsFromAttributes(attrs, cfg.attribute_prefix);
366
- for (const { url, filename } of urls) {
367
- if (cfg.directory_listing && looksLikeDirectory(url)) {
368
- logger.debug(`Directory URL detected: ${url}`);
369
- const dirTasks = await downloadFromDirectory(url, cfg, componentName, logger);
370
- tasks.push(...dirTasks);
496
+ try {
497
+ const stats = await downloadImages(playbook, logger, cfg);
498
+ if (stats.total > 0) {
499
+ if (stats.downloaded === stats.total) {
500
+ logger.event(`All ${stats.total} images downloaded successfully`);
371
501
  }
372
502
  else {
373
- tasks.push({ url, filename, componentName });
374
- logger.debug(`Found asset: ${url} -> ${filename} (${componentName})`);
503
+ logger.event(`Image download complete: ${stats.downloaded} downloaded, ${stats.skipped} skipped, ${stats.failed} failed (total: ${stats.total})`);
375
504
  }
376
505
  }
377
506
  }
378
- if (tasks.length === 0) {
379
- logger.debug('No external assets found to download');
380
- return;
507
+ catch (err) {
508
+ logger.error(`Failed to download images: ${err.message}`);
381
509
  }
382
- logger.event(`Downloading ${tasks.length} external asset(s)`);
383
- await processDownloads(tasks, cfg, logger);
384
- logger.event('Asset download complete');
385
510
  });
386
511
  }
387
512
  //# sourceMappingURL=index.js.map