@jezweb/jezpress-cli 1.6.1 → 1.8.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.
Files changed (51) hide show
  1. package/dist/cli.js +15 -1003
  2. package/dist/cli.js.map +1 -1
  3. package/dist/client.d.ts +135 -0
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +107 -0
  6. package/dist/client.js.map +1 -1
  7. package/dist/commands/auth.d.ts +7 -0
  8. package/dist/commands/auth.d.ts.map +1 -0
  9. package/dist/commands/auth.js +56 -0
  10. package/dist/commands/auth.js.map +1 -0
  11. package/dist/commands/docs.d.ts +7 -0
  12. package/dist/commands/docs.d.ts.map +1 -0
  13. package/dist/commands/docs.js +41 -0
  14. package/dist/commands/docs.js.map +1 -0
  15. package/dist/commands/plugins.d.ts +7 -0
  16. package/dist/commands/plugins.d.ts.map +1 -0
  17. package/dist/commands/plugins.js +468 -0
  18. package/dist/commands/plugins.js.map +1 -0
  19. package/dist/commands/sites/bulk.d.ts +7 -0
  20. package/dist/commands/sites/bulk.d.ts.map +1 -0
  21. package/dist/commands/sites/bulk.js +80 -0
  22. package/dist/commands/sites/bulk.js.map +1 -0
  23. package/dist/commands/sites/export.d.ts +7 -0
  24. package/dist/commands/sites/export.d.ts.map +1 -0
  25. package/dist/commands/sites/export.js +85 -0
  26. package/dist/commands/sites/export.js.map +1 -0
  27. package/dist/commands/sites/index.d.ts +7 -0
  28. package/dist/commands/sites/index.d.ts.map +1 -0
  29. package/dist/commands/sites/index.js +406 -0
  30. package/dist/commands/sites/index.js.map +1 -0
  31. package/dist/flare/detect.d.ts +18 -0
  32. package/dist/flare/detect.d.ts.map +1 -0
  33. package/dist/flare/detect.js +130 -0
  34. package/dist/flare/detect.js.map +1 -0
  35. package/dist/flare/html-to-content.d.ts +21 -0
  36. package/dist/flare/html-to-content.d.ts.map +1 -0
  37. package/dist/flare/html-to-content.js +233 -0
  38. package/dist/flare/html-to-content.js.map +1 -0
  39. package/dist/flare/index.d.ts +62 -0
  40. package/dist/flare/index.d.ts.map +1 -0
  41. package/dist/flare/index.js +566 -0
  42. package/dist/flare/index.js.map +1 -0
  43. package/dist/flare/types.d.ts +171 -0
  44. package/dist/flare/types.d.ts.map +1 -0
  45. package/dist/flare/types.js +6 -0
  46. package/dist/flare/types.js.map +1 -0
  47. package/dist/utils/plugin-headers.d.ts +14 -0
  48. package/dist/utils/plugin-headers.d.ts.map +1 -0
  49. package/dist/utils/plugin-headers.js +52 -0
  50. package/dist/utils/plugin-headers.js.map +1 -0
  51. package/package.json +2 -1
@@ -0,0 +1,468 @@
1
+ import { existsSync, statSync, writeFileSync } from 'node:fs';
2
+ import AdmZip from 'adm-zip';
3
+ import * as api from '../client.js';
4
+ import { extractPluginHeaders } from '../utils/plugin-headers.js';
5
+ export function registerPluginCommands(program) {
6
+ const plugins = program
7
+ .command('plugins')
8
+ .description('Manage plugins');
9
+ plugins
10
+ .command('list')
11
+ .description('List all plugins')
12
+ .option('--mine', 'Only show plugins you own')
13
+ .action(async (options) => {
14
+ try {
15
+ const pluginsList = await api.listPlugins();
16
+ let filtered = pluginsList;
17
+ if (options.mine) {
18
+ filtered = pluginsList.filter((p) => p.is_owner);
19
+ }
20
+ console.log(`\nPlugins (${filtered.length}):\n`);
21
+ if (filtered.length === 0) {
22
+ console.log(' (none)');
23
+ return;
24
+ }
25
+ filtered.forEach((p) => {
26
+ const ownerMark = p.is_owner ? ' (yours)' : '';
27
+ console.log(` ${p.slug} v${p.current_version}${ownerMark}`);
28
+ console.log(` Name: ${p.name}`);
29
+ console.log(` Updated: ${p.last_updated}`);
30
+ console.log('');
31
+ });
32
+ }
33
+ catch (error) {
34
+ console.error('Error:', error.message);
35
+ process.exit(1);
36
+ }
37
+ });
38
+ plugins
39
+ .command('get <slug>')
40
+ .description('Get plugin details')
41
+ .action(async (slug) => {
42
+ try {
43
+ const data = await api.getPlugin(slug);
44
+ const p = data.plugin;
45
+ console.log(`\n${p.name} (${p.slug})\n`);
46
+ console.log(`Version: ${p.current_version}`);
47
+ console.log(`Type: ${p.type}`);
48
+ console.log(`Author: ${p.author}`);
49
+ console.log(`Requires PHP: ${p.requires_php}`);
50
+ console.log(`Requires WP: ${p.requires_wp}`);
51
+ console.log(`Tested WP: ${p.tested_wp}`);
52
+ console.log(`License required: ${p.requires_license ? 'Yes' : 'No'}`);
53
+ console.log(`Last updated: ${p.last_updated}`);
54
+ console.log(`Owner: ${p.owner_email || 'unassigned'}`);
55
+ console.log(`You own this: ${p.is_owner ? 'Yes' : 'No'}`);
56
+ console.log(`\nAvailable versions: ${data.available_versions.join(', ') || 'none'}`);
57
+ console.log(`Total downloads: ${data.download_stats?.total || 0}`);
58
+ }
59
+ catch (error) {
60
+ console.error('Error:', error.message);
61
+ process.exit(1);
62
+ }
63
+ });
64
+ plugins
65
+ .command('create <slug>')
66
+ .description('Create a new plugin (you become the owner)')
67
+ .requiredOption('--name <name>', 'Plugin display name')
68
+ .option('-v, --ver <version>', 'Initial version', '1.0.0')
69
+ .option('--type <type>', 'Type: plugin or theme', 'plugin')
70
+ .option('--no-license', 'Plugin does not require license')
71
+ .option('--author <author>', 'Author name', 'Jezweb')
72
+ .action(async (slug, options) => {
73
+ try {
74
+ const plugin = await api.createPlugin({
75
+ slug,
76
+ name: options.name,
77
+ version: options.ver,
78
+ type: options.type,
79
+ requiresLicense: options.license !== false,
80
+ author: options.author,
81
+ });
82
+ console.log(`\nPlugin created: ${plugin.slug}`);
83
+ console.log(`Name: ${plugin.name}`);
84
+ console.log(`Version: ${plugin.current_version}`);
85
+ console.log(`Owner: ${plugin.owner_email}`);
86
+ console.log('\nNext: Upload a version with `jezpress plugins upload`');
87
+ }
88
+ catch (error) {
89
+ console.error('Error:', error.message);
90
+ process.exit(1);
91
+ }
92
+ });
93
+ plugins
94
+ .command('update <slug>')
95
+ .description('Update plugin metadata (owner only)')
96
+ .option('--name <name>', 'Update display name')
97
+ .option('--tested-wp <version>', 'Update tested WP version')
98
+ .option('--requires-wp <version>', 'Update minimum WP version')
99
+ .option('--requires-php <version>', 'Update minimum PHP version')
100
+ .action(async (slug, options) => {
101
+ try {
102
+ const updates = {};
103
+ if (options.name)
104
+ updates.name = options.name;
105
+ if (options.testedWp)
106
+ updates.tested_wp = options.testedWp;
107
+ if (options.requiresWp)
108
+ updates.requires_wp = options.requiresWp;
109
+ if (options.requiresPhp)
110
+ updates.requires_php = options.requiresPhp;
111
+ if (Object.keys(updates).length === 0) {
112
+ console.error('No updates provided. Use --name, --tested-wp, etc.');
113
+ process.exit(1);
114
+ }
115
+ const plugin = await api.updatePlugin(slug, updates);
116
+ console.log(`\nPlugin updated: ${plugin.slug}`);
117
+ console.log(`Name: ${plugin.name}`);
118
+ console.log(`Tested WP: ${plugin.tested_wp}`);
119
+ }
120
+ catch (error) {
121
+ console.error('Error:', error.message);
122
+ process.exit(1);
123
+ }
124
+ });
125
+ plugins
126
+ .command('upload <slug> <zipFile>')
127
+ .description('Upload a new plugin version (owner only)')
128
+ .option('-v, --ver <version>', 'Version number (auto-detected from ZIP if omitted)')
129
+ .option('--sync-metadata', 'Update plugin metadata (requires_php, requires_wp, tested_wp) from ZIP headers')
130
+ .action(async (slug, zipFile, options) => {
131
+ if (!existsSync(zipFile)) {
132
+ console.error(`File not found: ${zipFile}`);
133
+ process.exit(1);
134
+ }
135
+ try {
136
+ const headers = extractPluginHeaders(zipFile, slug);
137
+ if (!headers) {
138
+ console.error(`Could not find main plugin file in ZIP. Expected ${slug}/${slug}.php`);
139
+ process.exit(1);
140
+ }
141
+ let version = options.ver;
142
+ if (!version) {
143
+ if (!headers.version) {
144
+ console.error('Could not extract version from plugin header. Use -v to specify manually.');
145
+ process.exit(1);
146
+ }
147
+ version = headers.version;
148
+ console.log(`Auto-detected version: ${version}`);
149
+ }
150
+ console.log(`Uploading ${zipFile} as version ${version}...`);
151
+ const result = await api.uploadVersion(slug, version, zipFile);
152
+ console.log(`\n${result.message}`);
153
+ console.log(`Size: ${(result.size_bytes / 1024).toFixed(1)} KB`);
154
+ if (options.syncMetadata) {
155
+ const updates = {};
156
+ let hasUpdates = false;
157
+ if (headers.requires_php) {
158
+ updates.requires_php = headers.requires_php;
159
+ hasUpdates = true;
160
+ }
161
+ if (headers.requires_wp) {
162
+ updates.requires_wp = headers.requires_wp;
163
+ hasUpdates = true;
164
+ }
165
+ if (headers.tested_wp) {
166
+ updates.tested_wp = headers.tested_wp;
167
+ hasUpdates = true;
168
+ }
169
+ if (hasUpdates) {
170
+ console.log('\nSyncing metadata from plugin headers...');
171
+ const plugin = await api.updatePlugin(slug, updates);
172
+ console.log(` Requires PHP: ${plugin.requires_php}`);
173
+ console.log(` Requires WP: ${plugin.requires_wp}`);
174
+ console.log(` Tested WP: ${plugin.tested_wp}`);
175
+ }
176
+ else {
177
+ console.log('\nNo metadata headers found in plugin file to sync.');
178
+ }
179
+ }
180
+ }
181
+ catch (error) {
182
+ console.error('Error:', error.message);
183
+ process.exit(1);
184
+ }
185
+ });
186
+ plugins
187
+ .command('preflight <slug> <zipFile>')
188
+ .description('Validate plugin ZIP before uploading')
189
+ .action(async (slug, zipFile) => {
190
+ if (!existsSync(zipFile)) {
191
+ console.error(`File not found: ${zipFile}`);
192
+ process.exit(1);
193
+ }
194
+ console.log(`\nValidating ${zipFile} for plugin "${slug}"...\n`);
195
+ const issues = [];
196
+ const warnings = [];
197
+ const info = [];
198
+ let zip;
199
+ try {
200
+ zip = new AdmZip(zipFile);
201
+ }
202
+ catch {
203
+ console.error('FAILED: Not a valid ZIP file');
204
+ process.exit(1);
205
+ }
206
+ const entries = zip.getEntries();
207
+ const entryNames = entries.map((e) => e.entryName);
208
+ const zipStats = statSync(zipFile);
209
+ info.push(`ZIP file size: ${(zipStats.size / 1024).toFixed(1)} KB`);
210
+ info.push(`Files in ZIP: ${entries.length}`);
211
+ const mainFilePath1 = `${slug}/${slug}.php`;
212
+ const mainFilePath2 = `${slug}.php`;
213
+ const mainFileEntry = entries.find((e) => e.entryName.toLowerCase() === mainFilePath1.toLowerCase() ||
214
+ e.entryName.toLowerCase() === mainFilePath2.toLowerCase());
215
+ if (!mainFileEntry) {
216
+ issues.push(`Missing main plugin file: expected ${mainFilePath1} or ${mainFilePath2}`);
217
+ }
218
+ else {
219
+ info.push(`Main plugin file: ${mainFileEntry.entryName}`);
220
+ const mainFileContent = mainFileEntry.getData().toString('utf-8');
221
+ const pluginNameMatch = mainFileContent.match(/Plugin Name:\s*(.+)/i);
222
+ const versionMatch = mainFileContent.match(/Version:\s*(\d+\.\d+(\.\d+)?)/i);
223
+ const authorMatch = mainFileContent.match(/Author:\s*(.+)/i);
224
+ const requiresWPMatch = mainFileContent.match(/Requires at least:\s*(\d+\.\d+)/i);
225
+ const requiresPHPMatch = mainFileContent.match(/Requires PHP:\s*(\d+\.\d+)/i);
226
+ const testedWPMatch = mainFileContent.match(/Tested up to:\s*(\d+\.\d+)/i);
227
+ if (!pluginNameMatch) {
228
+ issues.push("Missing 'Plugin Name' header in main plugin file");
229
+ }
230
+ else {
231
+ info.push(`Plugin Name: ${pluginNameMatch[1].trim()}`);
232
+ }
233
+ if (!versionMatch) {
234
+ issues.push("Missing 'Version' header in main plugin file");
235
+ }
236
+ else {
237
+ info.push(`Version: ${versionMatch[1]}`);
238
+ }
239
+ if (!authorMatch)
240
+ warnings.push("Missing 'Author' header (recommended)");
241
+ if (!requiresWPMatch)
242
+ warnings.push("Missing 'Requires at least' header (recommended)");
243
+ if (!requiresPHPMatch)
244
+ warnings.push("Missing 'Requires PHP' header (recommended)");
245
+ if (!testedWPMatch)
246
+ warnings.push("Missing 'Tested up to' header (recommended)");
247
+ // Security checks on PHP files
248
+ const phpEntries = entries.filter((e) => e.entryName.toLowerCase().endsWith('.php'));
249
+ let hasDynamicCode = false;
250
+ let hasBase64 = false;
251
+ let hasShellExec = false;
252
+ for (const entry of phpEntries) {
253
+ const content = entry.getData().toString('utf-8');
254
+ // Check for dynamic code execution (e-v-a-l pattern)
255
+ if (/\b[e]val\s*\(/i.test(content))
256
+ hasDynamicCode = true;
257
+ if (/\bbase64_decode\s*\(/i.test(content))
258
+ hasBase64 = true;
259
+ if (/\b(shell_exec|exec)\s*\(/i.test(content))
260
+ hasShellExec = true;
261
+ }
262
+ if (hasDynamicCode)
263
+ warnings.push('Uses dynamic code execution - ensure this is intentional and safe');
264
+ if (hasBase64)
265
+ warnings.push('Uses base64_decode() - ensure this is intentional and safe');
266
+ if (hasShellExec)
267
+ warnings.push('Uses shell_exec/exec - ensure this is intentional and safe');
268
+ }
269
+ const readmePath = `${slug}/readme.txt`;
270
+ const hasReadme = entryNames.some((name) => name.toLowerCase() === readmePath.toLowerCase());
271
+ if (!hasReadme) {
272
+ warnings.push('Missing readme.txt (recommended for update server)');
273
+ }
274
+ else {
275
+ info.push('readme.txt found');
276
+ }
277
+ const hasCorrectFolder = entryNames.some((name) => name.toLowerCase().startsWith(`${slug.toLowerCase()}/`));
278
+ if (!hasCorrectFolder) {
279
+ issues.push(`ZIP should contain a "${slug}/" folder with all plugin files`);
280
+ }
281
+ console.log('INFO:');
282
+ info.forEach((i) => console.log(` + ${i}`));
283
+ console.log('');
284
+ if (warnings.length > 0) {
285
+ console.log('WARNINGS:');
286
+ warnings.forEach((w) => console.log(` ! ${w}`));
287
+ console.log('');
288
+ }
289
+ if (issues.length > 0) {
290
+ console.log('ISSUES:');
291
+ issues.forEach((i) => console.log(` x ${i}`));
292
+ console.log('');
293
+ console.log(`FAILED: ${issues.length} issue(s) found`);
294
+ process.exit(1);
295
+ }
296
+ console.log(`PASSED: Plugin "${slug}" is ready for upload${warnings.length > 0 ? ` (with ${warnings.length} warning(s))` : ''}`);
297
+ });
298
+ plugins
299
+ .command('versions <slug>')
300
+ .description('List all versions of a plugin')
301
+ .action(async (slug) => {
302
+ try {
303
+ const data = await api.listVersions(slug);
304
+ console.log(`\nVersions for ${data.name} (${data.slug}):`);
305
+ console.log(`Current version: ${data.current_version}`);
306
+ console.log(`Total downloads: ${data.total_downloads}`);
307
+ console.log(`You own this: ${data.is_owner ? 'Yes' : 'No'}\n`);
308
+ if (data.versions.length === 0) {
309
+ console.log(' (no versions)');
310
+ return;
311
+ }
312
+ data.versions.forEach((v) => {
313
+ const isCurrent = v.version === data.current_version ? ' (current)' : '';
314
+ console.log(` v${v.version}${isCurrent}`);
315
+ console.log(` Released: ${v.release_date}`);
316
+ console.log(` Downloads: ${v.downloads}`);
317
+ if (v.changelog) {
318
+ console.log(` Changelog: ${v.changelog.slice(0, 60)}${v.changelog.length > 60 ? '...' : ''}`);
319
+ }
320
+ console.log('');
321
+ });
322
+ }
323
+ catch (error) {
324
+ console.error('Error:', error.message);
325
+ process.exit(1);
326
+ }
327
+ });
328
+ plugins
329
+ .command('stats <slug>')
330
+ .description('View download statistics for a plugin')
331
+ .action(async (slug) => {
332
+ try {
333
+ const data = await api.getStats(slug);
334
+ console.log(`\nStatistics for ${data.name} (${data.slug}):\n`);
335
+ console.log(` Total downloads: ${data.total_downloads}`);
336
+ console.log(` Version count: ${data.version_count}`);
337
+ console.log(` Current version: ${data.current_version}`);
338
+ console.log(` Last updated: ${data.last_updated}`);
339
+ const byVersion = Object.entries(data.by_version);
340
+ if (byVersion.length > 0) {
341
+ console.log(`\n Downloads by version:`);
342
+ byVersion.sort((a, b) => {
343
+ const aParts = a[0].split('.').map(Number);
344
+ const bParts = b[0].split('.').map(Number);
345
+ for (let i = 0; i < 3; i++) {
346
+ if ((bParts[i] || 0) !== (aParts[i] || 0)) {
347
+ return (bParts[i] || 0) - (aParts[i] || 0);
348
+ }
349
+ }
350
+ return 0;
351
+ });
352
+ byVersion.forEach(([version, count]) => {
353
+ console.log(` v${version}: ${count}`);
354
+ });
355
+ }
356
+ }
357
+ catch (error) {
358
+ console.error('Error:', error.message);
359
+ process.exit(1);
360
+ }
361
+ });
362
+ plugins
363
+ .command('download <slug> <version>')
364
+ .description('Download a plugin version ZIP (owner only)')
365
+ .option('-o, --output <path>', 'Output file path')
366
+ .action(async (slug, version, options) => {
367
+ try {
368
+ console.log(`Downloading ${slug} v${version}...`);
369
+ const result = await api.downloadVersion(slug, version);
370
+ const outputPath = options.output || result.filename;
371
+ writeFileSync(outputPath, Buffer.from(result.data));
372
+ console.log(`\nDownloaded to: ${outputPath}`);
373
+ console.log(`Size: ${(result.data.byteLength / 1024).toFixed(1)} KB`);
374
+ }
375
+ catch (error) {
376
+ console.error('Error:', error.message);
377
+ process.exit(1);
378
+ }
379
+ });
380
+ plugins
381
+ .command('delete-version <slug> <version>')
382
+ .description('Delete a plugin version (owner only)')
383
+ .option('-y, --yes', 'Skip confirmation')
384
+ .action(async (slug, version, options) => {
385
+ try {
386
+ if (!options.yes) {
387
+ console.log(`\nYou are about to delete version ${version} of ${slug}`);
388
+ console.log('This action cannot be undone.');
389
+ console.log('\nRun with --yes to confirm.');
390
+ process.exit(1);
391
+ }
392
+ console.log(`Deleting ${slug} v${version}...`);
393
+ const result = await api.deleteVersion(slug, version);
394
+ console.log(`\n${result.message}`);
395
+ console.log(`Current version is now: ${result.current_version}`);
396
+ }
397
+ catch (error) {
398
+ console.error('Error:', error.message);
399
+ process.exit(1);
400
+ }
401
+ });
402
+ plugins
403
+ .command('changelog <slug> [version] [text]')
404
+ .description('View or update changelog for a plugin version')
405
+ .option('-s, --set <text>', 'Set changelog text (alternative to positional argument)')
406
+ .action(async (slug, version, text, options) => {
407
+ try {
408
+ const changelogText = text || options.set;
409
+ if (changelogText) {
410
+ if (!version) {
411
+ console.error('Version is required when setting changelog');
412
+ process.exit(1);
413
+ }
414
+ console.log(`Updating changelog for ${slug} v${version}...`);
415
+ const result = await api.updateVersion(slug, version, { changelog: changelogText });
416
+ console.log(`\n${result.message}`);
417
+ console.log(`Changelog: ${result.version.changelog || '(empty)'}`);
418
+ }
419
+ else {
420
+ const data = await api.listVersions(slug);
421
+ if (version) {
422
+ const v = data.versions.find((ver) => ver.version === version);
423
+ if (!v) {
424
+ console.error(`Version ${version} not found`);
425
+ process.exit(1);
426
+ }
427
+ console.log(`\nChangelog for ${data.name} v${version}:\n`);
428
+ console.log(v.changelog || '(no changelog)');
429
+ }
430
+ else {
431
+ console.log(`\nChangelogs for ${data.name}:\n`);
432
+ data.versions.forEach((v) => {
433
+ console.log(`v${v.version} (${v.release_date}):`);
434
+ console.log(` ${v.changelog || '(no changelog)'}\n`);
435
+ });
436
+ }
437
+ }
438
+ }
439
+ catch (error) {
440
+ console.error('Error:', error.message);
441
+ process.exit(1);
442
+ }
443
+ });
444
+ plugins
445
+ .command('transfer <slug> <email>')
446
+ .description('Transfer plugin ownership to another @jezweb user (owner only)')
447
+ .option('-y, --yes', 'Skip confirmation')
448
+ .action(async (slug, email, options) => {
449
+ try {
450
+ if (!options.yes) {
451
+ console.log(`\nYou are about to transfer ownership of ${slug} to ${email}`);
452
+ console.log('You will lose all access to this plugin.');
453
+ console.log('\nRun with --yes to confirm.');
454
+ process.exit(1);
455
+ }
456
+ console.log(`Transferring ${slug} to ${email}...`);
457
+ const result = await api.transferOwnership(slug, email);
458
+ console.log(`\n${result.message}`);
459
+ console.log(`Previous owner: ${result.previous_owner}`);
460
+ console.log(`New owner: ${result.new_owner}`);
461
+ }
462
+ catch (error) {
463
+ console.error('Error:', error.message);
464
+ process.exit(1);
465
+ }
466
+ });
467
+ }
468
+ //# sourceMappingURL=plugins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../src/commands/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Bulk Site Commands
3
+ * scan-all, update-all
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function registerBulkCommands(sites: Command): void;
7
+ //# sourceMappingURL=bulk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.d.ts","sourceRoot":"","sources":["../../../src/commands/sites/bulk.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,QA0FlD"}
@@ -0,0 +1,80 @@
1
+ import * as api from '../../client.js';
2
+ export function registerBulkCommands(sites) {
3
+ sites
4
+ .command('scan-all')
5
+ .description('Scan all sites and update cached data')
6
+ .action(async () => {
7
+ try {
8
+ console.log('Queuing scan for all sites...\n');
9
+ const { jobId, total } = await api.bulkScan();
10
+ console.log(`Queued ${total} sites (job: ${jobId})\n`);
11
+ // Poll for progress
12
+ let lastProgress = -1;
13
+ // eslint-disable-next-line no-constant-condition
14
+ while (true) {
15
+ const status = await api.getScanStatus(jobId);
16
+ const progress = status.progress;
17
+ if (progress !== lastProgress) {
18
+ process.stdout.write(`\rProgress: ${status.completed}/${status.total} complete, ${status.failed} failed (${progress}%)`);
19
+ lastProgress = progress;
20
+ }
21
+ if (status.status === 'completed') {
22
+ console.log('\n\n✓ Scan complete!');
23
+ console.log(` Succeeded: ${status.completed}`);
24
+ console.log(` Failed: ${status.failed}`);
25
+ break;
26
+ }
27
+ if (status.status === 'failed') {
28
+ console.log('\n\n✗ Scan failed');
29
+ break;
30
+ }
31
+ // Wait 2 seconds before polling again
32
+ await new Promise((r) => setTimeout(r, 2000));
33
+ }
34
+ }
35
+ catch (error) {
36
+ console.error('Error:', error.message);
37
+ process.exit(1);
38
+ }
39
+ });
40
+ sites
41
+ .command('update-all')
42
+ .description('Update JezPress on all sites')
43
+ .option('--force', 'Clear WordPress update cache before checking (use when updates are stuck)')
44
+ .action(async (options) => {
45
+ try {
46
+ const force = options.force === true;
47
+ console.log(`Queuing JezPress updates for all sites${force ? ' (force mode)' : ''}...\n`);
48
+ const { jobId, total } = await api.bulkUpdate({ force });
49
+ console.log(`Queued ${total} sites (job: ${jobId})\n`);
50
+ // Poll for progress
51
+ let lastProgress = -1;
52
+ // eslint-disable-next-line no-constant-condition
53
+ while (true) {
54
+ const status = await api.getScanStatus(jobId);
55
+ const progress = status.progress;
56
+ if (progress !== lastProgress) {
57
+ process.stdout.write(`\rProgress: ${status.completed}/${status.total} complete, ${status.failed} failed (${progress}%)`);
58
+ lastProgress = progress;
59
+ }
60
+ if (status.status === 'completed') {
61
+ console.log('\n\n✓ Update complete!');
62
+ console.log(` Succeeded: ${status.completed}`);
63
+ console.log(` Failed: ${status.failed}`);
64
+ break;
65
+ }
66
+ if (status.status === 'failed') {
67
+ console.log('\n\n✗ Update failed');
68
+ break;
69
+ }
70
+ // Wait 2 seconds before polling again
71
+ await new Promise((r) => setTimeout(r, 2000));
72
+ }
73
+ }
74
+ catch (error) {
75
+ console.error('Error:', error.message);
76
+ process.exit(1);
77
+ }
78
+ });
79
+ }
80
+ //# sourceMappingURL=bulk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk.js","sourceRoot":"","sources":["../../../src/commands/sites/bulk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Site Export Commands
3
+ * export with --format flag (raw, flare, markdown, widgets)
4
+ */
5
+ import { Command } from 'commander';
6
+ export declare function registerExportCommands(sites: Command): void;
7
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/sites/export.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,QA8EpD"}