appshot-cli 0.9.0 → 0.9.1

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 (33) hide show
  1. package/README.md +305 -1
  2. package/dist/cli.js +6 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/export.d.ts +3 -0
  5. package/dist/commands/export.d.ts.map +1 -0
  6. package/dist/commands/export.js +382 -0
  7. package/dist/commands/export.js.map +1 -0
  8. package/dist/commands/order.d.ts +3 -0
  9. package/dist/commands/order.d.ts.map +1 -0
  10. package/dist/commands/order.js +321 -0
  11. package/dist/commands/order.js.map +1 -0
  12. package/dist/services/doctor.js +1 -1
  13. package/dist/services/export-validator.d.ts +23 -0
  14. package/dist/services/export-validator.d.ts.map +1 -0
  15. package/dist/services/export-validator.js +209 -0
  16. package/dist/services/export-validator.js.map +1 -0
  17. package/dist/services/fastlane-config-generator.d.ts +17 -0
  18. package/dist/services/fastlane-config-generator.d.ts.map +1 -0
  19. package/dist/services/fastlane-config-generator.js +343 -0
  20. package/dist/services/fastlane-config-generator.js.map +1 -0
  21. package/dist/services/fastlane-language-mapper.d.ts +33 -0
  22. package/dist/services/fastlane-language-mapper.d.ts.map +1 -0
  23. package/dist/services/fastlane-language-mapper.js +167 -0
  24. package/dist/services/fastlane-language-mapper.js.map +1 -0
  25. package/dist/services/screenshot-order.d.ts +41 -0
  26. package/dist/services/screenshot-order.d.ts.map +1 -0
  27. package/dist/services/screenshot-order.js +211 -0
  28. package/dist/services/screenshot-order.js.map +1 -0
  29. package/dist/services/screenshot-organizer.d.ts +44 -0
  30. package/dist/services/screenshot-organizer.d.ts.map +1 -0
  31. package/dist/services/screenshot-organizer.js +234 -0
  32. package/dist/services/screenshot-organizer.js.map +1 -0
  33. package/package.json +1 -1
@@ -0,0 +1,382 @@
1
+ import { Command } from 'commander';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import pc from 'picocolors';
5
+ import { mapLanguages } from '../services/fastlane-language-mapper.js';
6
+ import { getAllLanguages, organizeScreenshots } from '../services/screenshot-organizer.js';
7
+ import { validateExport, validateOutputDirectory, isSafeToClean } from '../services/export-validator.js';
8
+ import { generateDeliverfile, generateFastfileLane, generateFastlaneReadme, generateFastlaneGitignore } from '../services/fastlane-config-generator.js';
9
+ import { loadOrderConfig } from '../services/screenshot-order.js';
10
+ export default function exportCmd() {
11
+ const cmd = new Command('export')
12
+ .description('Export screenshots for external tools (Fastlane, App Store Connect, etc.)')
13
+ .argument('[format]', 'Export format (currently only "fastlane" supported)', 'fastlane')
14
+ .option('--source <dir>', 'Source directory containing appshot output', './final')
15
+ .option('--output <dir>', 'Output directory for exported screenshots', './fastlane/screenshots')
16
+ .option('--langs <list>', 'Override auto-detected languages (e.g., en-US,de-DE,fr-FR)')
17
+ .option('--devices <list>', 'Specific devices to export: iphone,ipad,mac,watch (default: all)')
18
+ .option('--copy', 'Copy files instead of creating symlinks')
19
+ .option('--flatten', 'Put all screenshots directly in language folders')
20
+ .option('--prefix-device', 'Prefix filenames with device type (e.g., iPhone_screenshot.png)')
21
+ .option('--order', 'Apply saved screenshot order with numeric prefixes')
22
+ .option('--clean', 'Clean output directory before exporting')
23
+ .option('--generate-config', 'Generate Deliverfile and Fastfile for Fastlane')
24
+ .option('--dry-run', 'Preview export without creating files')
25
+ .option('--verbose', 'Show detailed output')
26
+ .option('--json', 'Output results as JSON')
27
+ .option('--config <file>', 'Path to export configuration file')
28
+ .addHelpText('after', `
29
+ ${pc.bold('Examples:')}
30
+ ${pc.dim('# Auto-detect and export all screenshots')}
31
+ $ appshot export
32
+
33
+ ${pc.dim('# Export with specific languages')}
34
+ $ appshot export --langs en-US,es-ES,fr-FR
35
+
36
+ ${pc.dim('# Copy files instead of symlinks (for CI/CD)')}
37
+ $ appshot export --copy --clean
38
+
39
+ ${pc.dim('# Generate Fastlane configuration')}
40
+ $ appshot export --generate-config
41
+
42
+ ${pc.dim('# Preview without creating files')}
43
+ $ appshot export --dry-run
44
+
45
+ ${pc.dim('# Custom paths')}
46
+ $ appshot export --source ./my-screenshots --output ./upload
47
+
48
+ ${pc.bold('Language Auto-Detection:')}
49
+ The command automatically detects available languages from your
50
+ screenshots and maps them to Fastlane-compatible codes:
51
+
52
+ • en → en-US
53
+ • es → es-ES
54
+ • fr → fr-FR
55
+ • de → de-DE
56
+ • zh → zh-Hans
57
+ • pt → pt-PT
58
+
59
+ ${pc.bold('Special Device Handling:')}
60
+ • iPad Pro 12.9" (3rd gen) screenshots are automatically renamed
61
+ with IPAD_PRO_3GEN_129_ prefix for proper Fastlane recognition
62
+
63
+ ${pc.bold('Output Structure:')}
64
+ fastlane/screenshots/
65
+ ├── en-US/
66
+ │ ├── screenshot1.png
67
+ │ ├── screenshot2.png
68
+ │ └── ...
69
+ └── es-ES/
70
+ └── ...
71
+
72
+ ${pc.bold('Integration with Fastlane:')}
73
+ After export, upload screenshots with:
74
+ $ cd fastlane && fastlane deliver`)
75
+ .action(async (format, opts) => {
76
+ try {
77
+ // Validate format
78
+ if (format !== 'fastlane') {
79
+ console.error(pc.red(`Error: Unsupported format '${format}'. Currently only 'fastlane' is supported.`));
80
+ process.exit(1);
81
+ }
82
+ // Resolve paths
83
+ const sourcePath = path.resolve(opts.source);
84
+ const outputPath = path.resolve(opts.output);
85
+ // Parse devices filter if provided
86
+ let deviceFilter;
87
+ if (opts.devices) {
88
+ const validDevices = ['iphone', 'ipad', 'mac', 'watch'];
89
+ const requestedDevices = opts.devices.split(',').map((d) => String(d).trim().toLowerCase());
90
+ deviceFilter = requestedDevices.filter((d) => validDevices.includes(d));
91
+ // Warn about invalid devices
92
+ const invalidDevices = requestedDevices.filter((d) => !validDevices.includes(d));
93
+ if (invalidDevices.length > 0 && !opts.json) {
94
+ console.log(pc.yellow('Warning: Ignoring invalid devices:'), invalidDevices.join(', '));
95
+ console.log(pc.dim('Valid devices are: iphone, ipad, mac, watch'));
96
+ }
97
+ if (deviceFilter && deviceFilter.length === 0) {
98
+ console.error(pc.red('Error: No valid devices specified'));
99
+ process.exit(1);
100
+ }
101
+ }
102
+ // Auto-detect languages if not specified
103
+ let detectedLanguages;
104
+ if (opts.langs) {
105
+ detectedLanguages = opts.langs.split(',').map((l) => l.trim());
106
+ if (!opts.json) {
107
+ console.log(pc.cyan('Using specified languages:'), detectedLanguages.join(', '));
108
+ }
109
+ }
110
+ else {
111
+ detectedLanguages = await getAllLanguages(sourcePath);
112
+ if (detectedLanguages.length === 0) {
113
+ console.error(pc.red('Error: No screenshots found in'), sourcePath);
114
+ console.log(pc.dim('Expected structure: final/[device]/[language]/'));
115
+ process.exit(1);
116
+ }
117
+ if (!opts.json) {
118
+ console.log(pc.cyan('✓ Auto-detected languages:'), detectedLanguages.join(', '));
119
+ }
120
+ }
121
+ // Map to Fastlane language codes
122
+ const languageMap = await mapLanguages(detectedLanguages, opts.config);
123
+ // Show language mappings
124
+ if (!opts.json && languageMap.size > 0) {
125
+ const mappings = [];
126
+ for (const [source, target] of languageMap) {
127
+ if (source !== target) {
128
+ mappings.push(`${source} → ${target}`);
129
+ }
130
+ else {
131
+ mappings.push(source);
132
+ }
133
+ }
134
+ console.log(pc.dim('Language mappings:'), mappings.join(', '));
135
+ }
136
+ // Validate before proceeding
137
+ const validation = await validateExport(sourcePath, languageMap, deviceFilter);
138
+ if (!validation.valid) {
139
+ if (opts.json) {
140
+ console.log(JSON.stringify({ success: false, errors: validation.issues }, null, 2));
141
+ }
142
+ else {
143
+ console.error(pc.red('\nValidation failed:'));
144
+ validation.issues.forEach(issue => console.error(pc.red(' ✗'), issue));
145
+ }
146
+ process.exit(1);
147
+ }
148
+ // Show warnings
149
+ if (!opts.json && validation.warnings.length > 0) {
150
+ console.log(pc.yellow('\nWarnings:'));
151
+ validation.warnings.forEach(warning => console.log(pc.yellow(' ⚠'), warning));
152
+ }
153
+ // Validate output directory
154
+ const outputValidation = await validateOutputDirectory(outputPath);
155
+ if (!outputValidation.valid) {
156
+ if (opts.json) {
157
+ console.log(JSON.stringify({ success: false, errors: outputValidation.issues }, null, 2));
158
+ }
159
+ else {
160
+ console.error(pc.red('\nOutput directory validation failed:'));
161
+ outputValidation.issues.forEach(issue => console.error(pc.red(' ✗'), issue));
162
+ }
163
+ process.exit(1);
164
+ }
165
+ // Load order configuration if --order is specified
166
+ let orderConfig = null;
167
+ if (opts.order) {
168
+ orderConfig = await loadOrderConfig();
169
+ if (!orderConfig) {
170
+ console.log(pc.yellow('⚠ No order configuration found'));
171
+ console.log(pc.dim(' Run "appshot order --device [device]" to create one'));
172
+ console.log(pc.dim(' Continuing without ordering...\n'));
173
+ }
174
+ }
175
+ // Handle dry run
176
+ if (opts.dryRun) {
177
+ const organizeOpts = {
178
+ source: sourcePath,
179
+ output: outputPath,
180
+ languageMap,
181
+ devices: deviceFilter,
182
+ flatten: opts.flatten,
183
+ prefixDevice: opts.prefixDevice,
184
+ orderConfig,
185
+ applyOrder: opts.order && orderConfig !== null,
186
+ copy: opts.copy,
187
+ clean: opts.clean,
188
+ dryRun: true,
189
+ verbose: opts.verbose
190
+ };
191
+ const dryRunResult = await organizeScreenshots(organizeOpts);
192
+ if (opts.json) {
193
+ console.log(JSON.stringify({
194
+ dryRun: true,
195
+ actions: dryRunResult.actions,
196
+ stats: validation.stats
197
+ }, null, 2));
198
+ }
199
+ else {
200
+ console.log(pc.cyan('\n🔍 Dry Run - Would perform the following:'));
201
+ console.log('\n' + pc.bold('Export Plan:'));
202
+ console.log(` Source: ${sourcePath}`);
203
+ console.log(` Output: ${outputPath}`);
204
+ console.log(` Method: ${opts.copy ? 'Copy files' : 'Create symlinks'}`);
205
+ console.log(` Clean: ${opts.clean ? 'Yes' : 'No'}`);
206
+ if (dryRunResult.actions && dryRunResult.actions.length > 0) {
207
+ console.log('\n' + pc.bold('Files to process:'));
208
+ const sampleSize = Math.min(10, dryRunResult.actions.length);
209
+ dryRunResult.actions.slice(0, sampleSize).forEach((action) => {
210
+ const sourceRelative = path.relative(process.cwd(), action.source);
211
+ const destRelative = path.relative(process.cwd(), action.destination);
212
+ console.log(pc.dim(` ${sourceRelative}`));
213
+ console.log(pc.green(` → ${destRelative}`));
214
+ if (action.specialHandling) {
215
+ console.log(pc.yellow(` ${action.specialHandling}`));
216
+ }
217
+ });
218
+ if (dryRunResult.actions.length > sampleSize) {
219
+ console.log(pc.dim(` ... and ${dryRunResult.actions.length - sampleSize} more files`));
220
+ }
221
+ }
222
+ if (dryRunResult.actions && dryRunResult.actions.length > 0) {
223
+ // Calculate actual device count from actions
224
+ const devicesInActions = new Set(dryRunResult.actions.map((a) => a.device));
225
+ console.log('\n' + pc.bold('Summary:'));
226
+ console.log(` Total screenshots: ${dryRunResult.actions.length}`);
227
+ console.log(` Languages: ${languageMap.size}`);
228
+ console.log(` Devices: ${devicesInActions.size}`);
229
+ }
230
+ else if (validation.stats) {
231
+ // Fallback to validation stats if no actions
232
+ console.log('\n' + pc.bold('Summary:'));
233
+ console.log(` Total screenshots: ${validation.stats.totalScreenshots}`);
234
+ console.log(` Languages: ${languageMap.size}`);
235
+ console.log(` Devices: ${Object.keys(validation.stats.deviceCounts).filter(d => validation.stats.deviceCounts[d] > 0).length}`);
236
+ }
237
+ }
238
+ return;
239
+ }
240
+ // Clean output directory if requested
241
+ if (opts.clean) {
242
+ if (!isSafeToClean(outputPath)) {
243
+ console.error(pc.red('Error: Refusing to clean unsafe directory:'), outputPath);
244
+ process.exit(1);
245
+ }
246
+ try {
247
+ await fs.rm(outputPath, { recursive: true, force: true });
248
+ if (!opts.json) {
249
+ console.log(pc.dim('Cleaned output directory'));
250
+ }
251
+ }
252
+ catch {
253
+ // Directory might not exist
254
+ }
255
+ }
256
+ // Perform the export
257
+ if (!opts.json) {
258
+ console.log(pc.cyan('\n📦 Exporting screenshots...'));
259
+ }
260
+ const organizeOpts = {
261
+ source: sourcePath,
262
+ output: outputPath,
263
+ languageMap,
264
+ devices: deviceFilter,
265
+ flatten: opts.flatten,
266
+ prefixDevice: opts.prefixDevice,
267
+ orderConfig,
268
+ applyOrder: opts.order && orderConfig !== null,
269
+ copy: opts.copy,
270
+ clean: false, // Already handled above
271
+ dryRun: false,
272
+ verbose: opts.verbose
273
+ };
274
+ const result = await organizeScreenshots(organizeOpts);
275
+ // Generate config files if requested
276
+ if (opts.generateConfig) {
277
+ const fastlaneDir = path.dirname(outputPath);
278
+ // Create Deliverfile
279
+ const deliverfilePath = path.join(fastlaneDir, 'Deliverfile');
280
+ const deliverfileContent = generateDeliverfile(Array.from(languageMap.values()), path.relative(fastlaneDir, outputPath));
281
+ await fs.writeFile(deliverfilePath, deliverfileContent);
282
+ // Create or append to Fastfile
283
+ const fastfilePath = path.join(fastlaneDir, 'Fastfile');
284
+ const fastfileLanes = generateFastfileLane();
285
+ try {
286
+ // Check if Fastfile exists
287
+ await fs.access(fastfilePath);
288
+ // Append to existing file
289
+ const existingContent = await fs.readFile(fastfilePath, 'utf-8');
290
+ if (!existingContent.includes('lane :screenshots')) {
291
+ await fs.appendFile(fastfilePath, '\n\n' + fastfileLanes);
292
+ if (!opts.json) {
293
+ console.log(pc.green('✓'), 'Added lanes to existing Fastfile');
294
+ }
295
+ }
296
+ else {
297
+ if (!opts.json) {
298
+ console.log(pc.yellow('⚠'), 'Fastfile already contains screenshot lanes');
299
+ }
300
+ }
301
+ }
302
+ catch {
303
+ // Create new file
304
+ await fs.writeFile(fastfilePath, fastfileLanes);
305
+ if (!opts.json) {
306
+ console.log(pc.green('✓'), 'Created Fastfile');
307
+ }
308
+ }
309
+ // Create README
310
+ const readmePath = path.join(fastlaneDir, 'README.md');
311
+ const readmeContent = generateFastlaneReadme(Array.from(languageMap.values()));
312
+ await fs.writeFile(readmePath, readmeContent);
313
+ // Create .gitignore
314
+ const gitignorePath = path.join(fastlaneDir, '.gitignore');
315
+ const gitignoreContent = generateFastlaneGitignore();
316
+ await fs.writeFile(gitignorePath, gitignoreContent);
317
+ if (!opts.json) {
318
+ console.log(pc.green('✓'), 'Generated Fastlane configuration files');
319
+ }
320
+ }
321
+ // Output results
322
+ if (opts.json) {
323
+ console.log(JSON.stringify({
324
+ success: true,
325
+ processed: result.processed,
326
+ errors: result.errors,
327
+ byLanguage: result.byLanguage,
328
+ byDevice: result.byDevice,
329
+ outputPath,
330
+ configGenerated: opts.generateConfig || false
331
+ }, null, 2));
332
+ }
333
+ else {
334
+ console.log('\n' + pc.bold(pc.green('✓ Export complete!')));
335
+ console.log('\n' + pc.bold('Summary:'));
336
+ console.log(` Screenshots exported: ${result.processed}`);
337
+ if (Object.keys(result.byLanguage).length > 0) {
338
+ console.log('\n' + pc.bold('By language:'));
339
+ for (const [lang, count] of Object.entries(result.byLanguage)) {
340
+ console.log(` ${lang}: ${count} files`);
341
+ }
342
+ }
343
+ if (Object.keys(result.byDevice).length > 0) {
344
+ console.log('\n' + pc.bold('By device:'));
345
+ // Show all requested devices, even if they have 0 files
346
+ const devicesToShow = deviceFilter || Object.keys(result.byDevice);
347
+ for (const device of devicesToShow) {
348
+ const count = result.byDevice[device] || 0;
349
+ if (deviceFilter || count > 0) {
350
+ console.log(` ${device}: ${count} files`);
351
+ if (deviceFilter && count === 0) {
352
+ console.log(pc.yellow(` ⚠ No screenshots found for ${device}`));
353
+ }
354
+ }
355
+ }
356
+ }
357
+ console.log('\n' + pc.cyan('Ready for upload:'));
358
+ console.log(pc.dim(` cd ${path.relative(process.cwd(), path.dirname(outputPath))} && fastlane deliver`));
359
+ console.log('\n' + pc.yellow('⚠️ Note about Fastlane:'));
360
+ console.log(pc.dim(' Fastlane\'s deliver may have issues with nested directories.'));
361
+ console.log(pc.dim(' If uploads fail, try flattening the structure or use a staging approach.'));
362
+ if (!opts.generateConfig) {
363
+ console.log('\n' + pc.dim('Tip: Use --generate-config to create Fastlane configuration files'));
364
+ }
365
+ }
366
+ }
367
+ catch (error) {
368
+ if (opts.json) {
369
+ console.log(JSON.stringify({
370
+ success: false,
371
+ error: error instanceof Error ? error.message : String(error)
372
+ }, null, 2));
373
+ }
374
+ else {
375
+ console.error(pc.red('Error:'), error instanceof Error ? error.message : String(error));
376
+ }
377
+ process.exit(1);
378
+ }
379
+ });
380
+ return cmd;
381
+ }
382
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function orderCmd(): Command;
3
+ //# sourceMappingURL=order.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order.d.ts","sourceRoot":"","sources":["../../src/commands/order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAsJ/B"}