@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.
- package/CHANGELOG.adoc +30 -0
- package/README.adoc +37 -11
- package/dist/extensions/asciidoctorconfig/index.js +1 -1
- package/dist/extensions/asciidoctorconfig/index.js.map +1 -1
- package/dist/extensions/assembler-rename-pdf/index.d.ts.map +1 -1
- package/dist/extensions/assembler-rename-pdf/index.js +46 -13
- package/dist/extensions/assembler-rename-pdf/index.js.map +1 -1
- package/dist/extensions/assembler-ruby-preflight/index.d.ts.map +1 -1
- package/dist/extensions/assembler-ruby-preflight/index.js +37 -39
- package/dist/extensions/assembler-ruby-preflight/index.js.map +1 -1
- package/dist/extensions/collector-writer/index.d.ts.map +1 -1
- package/dist/extensions/collector-writer/index.js +47 -1
- package/dist/extensions/collector-writer/index.js.map +1 -1
- package/dist/extensions/external-asset-downloader/index.d.ts +8 -14
- package/dist/extensions/external-asset-downloader/index.d.ts.map +1 -1
- package/dist/extensions/external-asset-downloader/index.js +255 -130
- package/dist/extensions/external-asset-downloader/index.js.map +1 -1
- package/dist/extensions/vale-integration/index.d.ts.map +1 -1
- package/dist/extensions/vale-integration/index.js +26 -29
- package/dist/extensions/vale-integration/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
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 =
|
|
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)
|
|
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
|
|
272
|
-
const
|
|
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
|
|
327
|
+
const normalizedUrl = directoryUrl.replace(/\/+$/, '') + '/';
|
|
328
|
+
const fetchUrl = applyUrlReplace(normalizedUrl, opts.url_replace);
|
|
275
329
|
logger.debug(`Fetching directory listing from: ${fetchUrl}`);
|
|
276
|
-
const
|
|
277
|
-
const
|
|
278
|
-
|
|
279
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
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
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
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
|
-
|
|
336
|
-
|
|
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('
|
|
475
|
+
const antoraLogger = context.getLogger ? context.getLogger('external-asset-downloader') : undefined;
|
|
344
476
|
const logger = makeLogger(antoraLogger);
|
|
345
|
-
|
|
477
|
+
logger.debug('AssetDownloader extension registered');
|
|
478
|
+
context.on('beforeProcess', async ({ playbook }) => {
|
|
346
479
|
const cfg = readConfig(playbook);
|
|
347
480
|
if (!cfg) {
|
|
348
|
-
logger.
|
|
481
|
+
logger.warn('Asset downloader not configured (no target_dir), skipping');
|
|
349
482
|
return;
|
|
350
483
|
}
|
|
351
484
|
if (!cfg.enabled) {
|
|
352
|
-
logger.
|
|
485
|
+
logger.warn('Asset downloader disabled');
|
|
353
486
|
return;
|
|
354
487
|
}
|
|
355
488
|
quietMode = cfg.quiet;
|
|
356
|
-
if (
|
|
357
|
-
|
|
358
|
-
|
|
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
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
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
|
-
|
|
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
|
-
|
|
379
|
-
logger.
|
|
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
|