appshot-cli 0.8.7 → 0.9.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 (37) hide show
  1. package/README.md +480 -15
  2. package/dist/cli.js +19 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/build.d.ts.map +1 -1
  5. package/dist/commands/build.js +16 -2
  6. package/dist/commands/build.js.map +1 -1
  7. package/dist/commands/preset.d.ts +5 -0
  8. package/dist/commands/preset.d.ts.map +1 -0
  9. package/dist/commands/preset.js +191 -0
  10. package/dist/commands/preset.js.map +1 -0
  11. package/dist/commands/quickstart.d.ts +3 -0
  12. package/dist/commands/quickstart.d.ts.map +1 -0
  13. package/dist/commands/quickstart.js +326 -0
  14. package/dist/commands/quickstart.js.map +1 -0
  15. package/dist/commands/style.d.ts.map +1 -1
  16. package/dist/commands/style.js +98 -0
  17. package/dist/commands/style.js.map +1 -1
  18. package/dist/commands/template.d.ts +3 -0
  19. package/dist/commands/template.d.ts.map +1 -0
  20. package/dist/commands/template.js +399 -0
  21. package/dist/commands/template.js.map +1 -0
  22. package/dist/core/compose.d.ts +16 -0
  23. package/dist/core/compose.d.ts.map +1 -1
  24. package/dist/core/compose.js +342 -83
  25. package/dist/core/compose.js.map +1 -1
  26. package/dist/services/doctor.js +1 -1
  27. package/dist/templates/registry.d.ts +73 -0
  28. package/dist/templates/registry.d.ts.map +1 -0
  29. package/dist/templates/registry.js +724 -0
  30. package/dist/templates/registry.js.map +1 -0
  31. package/dist/types.d.ts +15 -0
  32. package/dist/types.d.ts.map +1 -1
  33. package/dist/utils/validation.d.ts +36 -0
  34. package/dist/utils/validation.d.ts.map +1 -0
  35. package/dist/utils/validation.js +143 -0
  36. package/dist/utils/validation.js.map +1 -0
  37. package/package.json +3 -2
@@ -68,11 +68,25 @@ ${pc.bold('Language Detection:')}
68
68
  5. Fallback to 'en'`)
69
69
  .action(async (opts) => {
70
70
  try {
71
+ const logo = String.raw ` _ _ _
72
+ / \ _ __ _ __ ___| |__ ___ | |_
73
+ / _ \ | '_ \| '_ \/ __| '_ \ / _ \| __|
74
+ / ___ \| |_) | |_) \__ \ | | | (_) | |_
75
+ /_/ \_\ .__/| .__/|___/_| |_|\___/ \__|
76
+ |_| |_| `;
71
77
  if (opts.dryRun) {
72
- console.log(pc.bold('Dry run mode - no images will be generated\n'));
78
+ console.log(pc.cyan(logo));
79
+ console.log(pc.bold('\nDry run mode - no images will be generated\n'));
73
80
  }
74
81
  else {
75
- console.log(pc.bold('Building screenshots...'));
82
+ console.log(pc.cyan(logo));
83
+ console.log(pc.bold('\nBuilding screenshots...'));
84
+ // Layout behavior note for 0.9.0
85
+ console.log(pc.yellow('\n⚠ Layout behavior notice (v0.9.0):') +
86
+ pc.dim('\n • "below/above" captions now enforce a minimum optical gap from the device, and will adjust placement to remain truly below/above.') +
87
+ pc.dim('\n • Overlay captions anchor to the bottom of their outer box (padding/border included); explicit zeros are respected.') +
88
+ pc.dim('\n • In edge cases where device + caption cannot both fit, the engine adapts placement; visuals may differ from 0.8.x.') +
89
+ '\n');
76
90
  }
77
91
  // Load configuration
78
92
  const config = await loadConfig(opts.config);
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Command } from 'commander';
2
+ export declare const presetCommand: Command;
3
+ export declare const quickPresetCommand: Command;
4
+ export default function presetCmd(): Command;
5
+ //# sourceMappingURL=preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../../src/commands/preset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,aAAa,SA0KtB,CAAC;AAGL,eAAO,MAAM,kBAAkB,SAmC3B,CAAC;AAEL,MAAM,CAAC,OAAO,UAAU,SAAS,YAEhC"}
@@ -0,0 +1,191 @@
1
+ import { Command } from 'commander';
2
+ import { existsSync, readFileSync, writeFileSync, readdirSync, mkdirSync } from 'fs';
3
+ import * as path from 'path';
4
+ import chalk from 'chalk';
5
+ import { templates } from '../templates/registry.js';
6
+ import { execFileSync } from 'child_process';
7
+ import { sanitizeDevices, sanitizeLanguages, sanitizePath, validateTemplateId, sanitizeCaption } from '../utils/validation.js';
8
+ export const presetCommand = new Command('preset')
9
+ .description('Apply template preset and build in one command')
10
+ .argument('<preset>', 'Preset name (modern, bold, minimal, elegant, corporate, playful, showcase, nerdy)')
11
+ .option('-c, --caption <text>', 'Add caption to all screenshots')
12
+ .option('-d, --devices <list>', 'Comma-separated device list (iphone,ipad,watch,mac)')
13
+ .option('-l, --langs <list>', 'Comma-separated language codes (en,es,fr,de,etc)')
14
+ .option('-o, --output <path>', 'Output directory', './final')
15
+ .option('--dry-run', 'Preview without building')
16
+ .option('-v, --verbose', 'Show detailed output')
17
+ .action(async (presetName, options) => {
18
+ try {
19
+ // Security: Validate template ID first
20
+ if (!validateTemplateId(presetName)) {
21
+ console.error(chalk.red(`❌ Preset "${presetName}" not found`));
22
+ console.log('\nAvailable presets:');
23
+ templates.forEach((t) => {
24
+ console.log(` ${chalk.cyan(t.id.padEnd(12))} - ${t.name}`);
25
+ });
26
+ process.exit(1);
27
+ }
28
+ // Get template from registry (now guaranteed to exist)
29
+ const template = templates.find((t) => t.id === presetName);
30
+ // Load current config
31
+ const configPath = path.join(process.cwd(), '.appshot', 'config.json');
32
+ if (!existsSync(configPath)) {
33
+ console.error(chalk.red('❌ No appshot project found. Run "appshot init" first.'));
34
+ process.exit(1);
35
+ }
36
+ if (options.dryRun) {
37
+ console.log(chalk.cyan('🔍 Dry Run Mode - Preview Only\n'));
38
+ console.log(chalk.bold(`Preset: ${template.name}`));
39
+ console.log(`Description: ${template.description}`);
40
+ console.log(`Style: ${template.category}`);
41
+ if (template.background?.gradient) {
42
+ const colors = template.background.gradient.colors;
43
+ console.log(`Gradient: ${colors.join(' → ')}`);
44
+ }
45
+ const displayDevices = options.devices ? sanitizeDevices(options.devices) : 'all';
46
+ const displayLangs = options.langs ? sanitizeLanguages(options.langs) : 'en';
47
+ const displayOutput = options.output ? sanitizePath(options.output) : './final';
48
+ console.log(`\nDevices: ${displayDevices}`);
49
+ console.log(`Languages: ${displayLangs}`);
50
+ console.log(`Output: ${displayOutput}`);
51
+ if (options.caption) {
52
+ const sanitizedCaption = sanitizeCaption(options.caption);
53
+ console.log(`Caption: "${sanitizedCaption}"`);
54
+ }
55
+ console.log(chalk.gray('\nRun without --dry-run to build screenshots'));
56
+ return;
57
+ }
58
+ // Step 1: Apply template
59
+ if (options.verbose) {
60
+ console.log(chalk.gray('Applying template...'));
61
+ }
62
+ // Backup current config
63
+ const backupPath = path.join(process.cwd(), '.appshot', 'config.backup.json');
64
+ const currentConfig = JSON.parse(readFileSync(configPath, 'utf-8'));
65
+ writeFileSync(backupPath, JSON.stringify(currentConfig, null, 2));
66
+ // Apply template config
67
+ const templateConfig = template;
68
+ const newConfig = {
69
+ ...currentConfig,
70
+ background: templateConfig.background,
71
+ caption: templateConfig.caption,
72
+ devices: {
73
+ ...currentConfig.devices,
74
+ ...templateConfig.devices
75
+ }
76
+ };
77
+ // Override output if specified (with sanitization)
78
+ if (options.output) {
79
+ newConfig.output = sanitizePath(options.output);
80
+ }
81
+ writeFileSync(configPath, JSON.stringify(newConfig, null, 2));
82
+ console.log(chalk.green(`✨ Preset "${template.name}" applied`));
83
+ // Step 2: Add captions if provided
84
+ if (options.caption) {
85
+ if (options.verbose) {
86
+ console.log(chalk.gray('Adding captions...'));
87
+ }
88
+ const sanitizedCaption = sanitizeCaption(options.caption);
89
+ const deviceInput = options.devices ? sanitizeDevices(options.devices) : 'iphone,ipad,watch,mac';
90
+ const devices = deviceInput.split(',');
91
+ for (const device of devices) {
92
+ const captionFile = path.join(process.cwd(), '.appshot', 'captions', `${device}.json`);
93
+ // Get screenshots for this device
94
+ const screenshotDir = path.join(process.cwd(), 'screenshots', device.trim());
95
+ if (!existsSync(screenshotDir))
96
+ continue;
97
+ const screenshots = readdirSync(screenshotDir)
98
+ .filter((f) => /\.(png|jpg|jpeg)$/i.test(f));
99
+ if (screenshots.length > 0) {
100
+ // Create captions object with the provided caption for first screenshot
101
+ const captions = {};
102
+ captions[screenshots[0]] = sanitizedCaption;
103
+ // Ensure captions directory exists
104
+ mkdirSync(path.dirname(captionFile), { recursive: true });
105
+ writeFileSync(captionFile, JSON.stringify(captions, null, 2));
106
+ if (options.verbose) {
107
+ console.log(chalk.gray(` Added caption for ${device}`));
108
+ }
109
+ }
110
+ }
111
+ }
112
+ // Step 3: Build screenshots
113
+ console.log(chalk.cyan('\n📸 Building screenshots...\n'));
114
+ // Security: Build command args safely
115
+ const buildArgs = ['build'];
116
+ if (options.devices) {
117
+ const sanitizedDevices = sanitizeDevices(options.devices);
118
+ buildArgs.push('--devices', sanitizedDevices);
119
+ }
120
+ if (options.langs) {
121
+ const sanitizedLangs = sanitizeLanguages(options.langs);
122
+ buildArgs.push('--langs', sanitizedLangs);
123
+ }
124
+ if (options.verbose) {
125
+ console.log(chalk.gray(`Running: appshot ${buildArgs.join(' ')}`));
126
+ }
127
+ try {
128
+ execFileSync('appshot', buildArgs, {
129
+ stdio: options.verbose ? 'inherit' : 'pipe',
130
+ cwd: process.cwd()
131
+ });
132
+ console.log(chalk.green('\n✅ Screenshots generated successfully!'));
133
+ console.log(chalk.gray(`Output: ${options.output || './final'}`));
134
+ }
135
+ catch (buildError) {
136
+ console.error(chalk.red('❌ Build failed'));
137
+ if (buildError instanceof Error) {
138
+ console.error(chalk.gray(`Error: ${buildError.message}`));
139
+ }
140
+ if (!options.verbose) {
141
+ console.log(chalk.gray('Run with --verbose for details'));
142
+ }
143
+ process.exit(1);
144
+ }
145
+ }
146
+ catch (error) {
147
+ console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);
148
+ process.exit(1);
149
+ }
150
+ });
151
+ // Also create a simpler alias
152
+ export const quickPresetCommand = new Command('qp')
153
+ .description('Quick preset (alias for preset)')
154
+ .argument('<preset>', 'Preset name')
155
+ .option('-c, --caption <text>', 'Caption text')
156
+ .option('-d, --devices <list>', 'Device list')
157
+ .action((preset, options) => {
158
+ // Security: Validate preset ID first
159
+ if (!validateTemplateId(preset)) {
160
+ console.error(chalk.red(`❌ Invalid preset: ${preset}`));
161
+ process.exit(1);
162
+ }
163
+ // Build args safely
164
+ const args = ['preset', preset];
165
+ if (options.caption) {
166
+ try {
167
+ const sanitizedCaption = sanitizeCaption(options.caption);
168
+ args.push('--caption', sanitizedCaption);
169
+ }
170
+ catch (err) {
171
+ console.error(chalk.red(`❌ ${err instanceof Error ? err.message : 'Invalid caption'}`));
172
+ process.exit(1);
173
+ }
174
+ }
175
+ if (options.devices) {
176
+ // Validate devices before passing
177
+ try {
178
+ const validDevices = sanitizeDevices(options.devices);
179
+ args.push('--devices', validDevices);
180
+ }
181
+ catch (err) {
182
+ console.error(chalk.red(`❌ ${err instanceof Error ? err.message : 'Invalid devices'}`));
183
+ process.exit(1);
184
+ }
185
+ }
186
+ execFileSync('appshot', args, { stdio: 'inherit' });
187
+ });
188
+ export default function presetCmd() {
189
+ return presetCommand;
190
+ }
191
+ //# sourceMappingURL=preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset.js","sourceRoot":"","sources":["../../src/commands/preset.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export default function quickstartCmd(): Command;
3
+ //# sourceMappingURL=quickstart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../src/commands/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,MAAM,CAAC,OAAO,UAAU,aAAa,YAgMpC"}
@@ -0,0 +1,326 @@
1
+ import { Command } from 'commander';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import pc from 'picocolors';
5
+ import inquirer from 'inquirer';
6
+ import { getTemplate, getTemplateCaptionSuggestions } from '../templates/registry.js';
7
+ import { validateTemplateId, sanitizeCaption, validateDeviceArray } from '../utils/validation.js';
8
+ export default function quickstartCmd() {
9
+ const cmd = new Command('quickstart')
10
+ .description('Get started with App Store screenshots in seconds')
11
+ .option('--template <id>', 'template to use (default: modern)')
12
+ .option('--caption <text>', 'main caption for screenshots')
13
+ .option('--no-interactive', 'skip interactive prompts')
14
+ .option('--force', 'overwrite existing configuration')
15
+ .addHelpText('after', `
16
+ ${pc.bold('What This Does:')}
17
+ 1. Initializes project structure
18
+ 2. Applies a professional template
19
+ 3. Sets up example captions
20
+ 4. Shows you exactly what to do next
21
+
22
+ ${pc.bold('Examples:')}
23
+ ${pc.dim('# Interactive quickstart')}
24
+ $ appshot quickstart
25
+
26
+ ${pc.dim('# With specific template')}
27
+ $ appshot quickstart --template minimal
28
+
29
+ ${pc.dim('# Non-interactive with caption')}
30
+ $ appshot quickstart --template bold --caption "Amazing App" --no-interactive
31
+
32
+ ${pc.bold('Templates:')}
33
+ ${pc.cyan('modern')} - Eye-catching gradient (default)
34
+ ${pc.cyan('minimal')} - Clean and simple
35
+ ${pc.cyan('bold')} - Dark and dramatic
36
+ ${pc.cyan('elegant')} - Professional monochrome
37
+ ${pc.cyan('showcase')} - Feature your backgrounds
38
+ ${pc.cyan('playful')} - Bright and fun
39
+ ${pc.cyan('corporate')} - Business professional`)
40
+ .action(async (opts) => {
41
+ try {
42
+ console.log(pc.cyan(`
43
+ _ _ _
44
+ / \\ _ __ _ __ ___| |__ ___ | |_
45
+ / _ \\ | '_ \\| '_ \\/ __| '_ \\ / _ \\| __|
46
+ / ___ \\| |_) | |_) \\__ \\ | | | (_) | |_
47
+ /_/ \\_\\ .__/| .__/|___/_| |_|\\___/ \\__|
48
+ |_| |_| Quick Start
49
+ `));
50
+ console.log(pc.bold('\n🚀 Welcome to Appshot Quick Start!\n'));
51
+ console.log('Let\'s set up professional App Store screenshots in seconds.\n');
52
+ // Check if already initialized
53
+ const configPath = path.join(process.cwd(), '.appshot', 'config.json');
54
+ const configExists = await fileExists(configPath);
55
+ if (configExists && !opts.force) {
56
+ const overwrite = opts.interactive === false ? false : await confirmOverwrite();
57
+ if (!overwrite) {
58
+ console.log(pc.yellow('Setup cancelled. Use --force to overwrite existing configuration.'));
59
+ process.exit(0);
60
+ }
61
+ }
62
+ // Interactive or direct mode
63
+ let templateId = opts.template || 'modern';
64
+ let caption = opts.caption;
65
+ let devices = ['iphone', 'ipad'];
66
+ // Validate template if provided
67
+ if (opts.template && !validateTemplateId(opts.template)) {
68
+ console.error(pc.red(`Template "${opts.template}" not found`));
69
+ console.log(pc.dim('Available templates: modern, minimal, bold, elegant, showcase, playful, corporate, nerdy'));
70
+ process.exit(1);
71
+ }
72
+ // Sanitize caption if provided
73
+ if (caption) {
74
+ try {
75
+ caption = sanitizeCaption(caption);
76
+ }
77
+ catch (err) {
78
+ console.error(pc.red(`Invalid caption: ${err instanceof Error ? err.message : 'Unknown error'}`));
79
+ process.exit(1);
80
+ }
81
+ }
82
+ if (opts.interactive !== false && (!opts.template || !opts.caption)) {
83
+ // Interactive prompts
84
+ const answers = await inquirer.prompt([
85
+ {
86
+ type: 'list',
87
+ name: 'template',
88
+ message: 'Choose a visual style:',
89
+ choices: [
90
+ { name: '🎨 Modern - Vibrant gradient with floating device', value: 'modern' },
91
+ { name: '⚪ Minimal - Clean and simple', value: 'minimal' },
92
+ { name: '⚫ Bold - Dark and dramatic', value: 'bold' },
93
+ { name: '✨ Elegant - Professional monochrome', value: 'elegant' },
94
+ { name: '🖼️ Showcase - Custom backgrounds', value: 'showcase' },
95
+ { name: '🎮 Playful - Bright and fun', value: 'playful' },
96
+ { name: '💼 Corporate - Business professional', value: 'corporate' }
97
+ ],
98
+ default: templateId
99
+ },
100
+ {
101
+ type: 'input',
102
+ name: 'caption',
103
+ message: 'Enter your main caption:',
104
+ default: caption || 'Your App Name',
105
+ validate: (input) => input.length > 0 || 'Caption is required'
106
+ },
107
+ {
108
+ type: 'checkbox',
109
+ name: 'devices',
110
+ message: 'Which devices do you need?',
111
+ choices: [
112
+ { name: 'iPhone', value: 'iphone', checked: true },
113
+ { name: 'iPad', value: 'ipad', checked: true },
114
+ { name: 'Mac', value: 'mac' },
115
+ { name: 'Apple Watch', value: 'watch' }
116
+ ],
117
+ validate: (choices) => choices.length > 0 || 'Select at least one device'
118
+ }
119
+ ]);
120
+ templateId = answers.template;
121
+ caption = sanitizeCaption(answers.caption);
122
+ devices = answers.devices;
123
+ }
124
+ // Validate devices array
125
+ try {
126
+ devices = validateDeviceArray(devices);
127
+ }
128
+ catch (err) {
129
+ console.error(pc.red(`Invalid devices: ${err instanceof Error ? err.message : 'Unknown error'}`));
130
+ process.exit(1);
131
+ }
132
+ // Step 1: Initialize project structure
133
+ console.log('\n' + pc.bold('Step 1:'), 'Creating project structure...');
134
+ await initializeProject(devices);
135
+ // Step 2: Apply template
136
+ console.log(pc.bold('Step 2:'), `Applying "${templateId}" template...`);
137
+ const config = await applyTemplate(templateId, devices);
138
+ // Step 3: Set up captions
139
+ console.log(pc.bold('Step 3:'), 'Setting up captions...');
140
+ await setupCaptions(devices, caption || 'Your App Name', templateId);
141
+ // Step 4: Save configuration
142
+ console.log(pc.bold('Step 4:'), 'Saving configuration...');
143
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
144
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2));
145
+ // Success!
146
+ console.log('\n' + pc.green('✨ Quick Start Complete!'));
147
+ const template = getTemplate(templateId);
148
+ if (template) {
149
+ console.log(pc.dim(`Template: ${template.name} - ${template.description}`));
150
+ }
151
+ // Instructions
152
+ console.log('\n' + pc.bold('📋 Next Steps:'));
153
+ console.log();
154
+ console.log('1. Add your screenshots:');
155
+ for (const device of devices) {
156
+ console.log(` ${pc.cyan(`cp your-screenshots/*.png screenshots/${device}/`)}`);
157
+ }
158
+ console.log();
159
+ console.log('2. Build your App Store screenshots:');
160
+ console.log(` ${pc.cyan('appshot build')}`);
161
+ console.log();
162
+ console.log('3. Find your screenshots in:', pc.green('final/'));
163
+ console.log();
164
+ // Tips
165
+ console.log(pc.bold('💡 Pro Tips:'));
166
+ console.log('• Customize captions:', pc.cyan('appshot caption --device iphone'));
167
+ console.log('• Try other templates:', pc.cyan('appshot template --list'));
168
+ console.log('• Add translations:', pc.cyan('appshot caption --translate --langs es,fr'));
169
+ console.log('• Validate for App Store:', pc.cyan('appshot validate'));
170
+ // Check if in Big Brother project
171
+ const isBigBrother = process.cwd().includes('bigbrother');
172
+ if (isBigBrother) {
173
+ console.log('\n' + pc.yellow('📱 Big Brother Project Detected!'));
174
+ console.log('You already have screenshots ready. Just run:', pc.cyan('appshot build'));
175
+ }
176
+ }
177
+ catch (error) {
178
+ console.error(pc.red('Error:'), error instanceof Error ? error.message : String(error));
179
+ process.exit(1);
180
+ }
181
+ });
182
+ return cmd;
183
+ }
184
+ /**
185
+ * Initialize project structure
186
+ */
187
+ async function initializeProject(devices) {
188
+ const dirs = [
189
+ '.appshot',
190
+ '.appshot/captions',
191
+ ...devices.map(d => `screenshots/${d}`),
192
+ 'final'
193
+ ];
194
+ for (const dir of dirs) {
195
+ await fs.mkdir(dir, { recursive: true });
196
+ }
197
+ // Create caption files
198
+ for (const device of devices) {
199
+ const captionFile = path.join('.appshot', 'captions', `${device}.json`);
200
+ if (!await fileExists(captionFile)) {
201
+ await fs.writeFile(captionFile, '{}');
202
+ }
203
+ }
204
+ }
205
+ /**
206
+ * Apply template and create configuration
207
+ */
208
+ async function applyTemplate(templateId, devices) {
209
+ const template = getTemplate(templateId);
210
+ if (!template) {
211
+ throw new Error(`Template "${templateId}" not found`);
212
+ }
213
+ // Create base configuration
214
+ const baseConfig = {
215
+ output: './final',
216
+ frames: './frames',
217
+ background: template.background,
218
+ caption: {
219
+ font: template.captionStyle.font || 'SF Pro Display',
220
+ fontsize: template.captionStyle.fontsize || 64,
221
+ color: template.captionStyle.color || '#FFFFFF',
222
+ align: template.captionStyle.align || 'center',
223
+ paddingTop: 100,
224
+ paddingBottom: 60,
225
+ ...template.captionStyle
226
+ },
227
+ devices: {}
228
+ };
229
+ // Device-specific resolutions
230
+ const resolutions = {
231
+ iphone: '1290x2796',
232
+ ipad: '2048x2732',
233
+ mac: '2880x1800',
234
+ watch: '410x502'
235
+ };
236
+ // Add device configurations
237
+ for (const device of devices) {
238
+ const deviceOverride = template.deviceOverrides?.[device];
239
+ baseConfig.devices[device] = {
240
+ input: `./screenshots/${device}`,
241
+ resolution: resolutions[device] || '1290x2796',
242
+ autoFrame: true,
243
+ frameScale: deviceOverride?.frameScale || template.deviceStyle.frameScale,
244
+ framePosition: deviceOverride?.framePosition ?? template.deviceStyle.framePosition,
245
+ partialFrame: deviceOverride?.partialFrame ?? template.deviceStyle.partialFrame,
246
+ frameOffset: deviceOverride?.frameOffset ?? template.deviceStyle.frameOffset,
247
+ captionPosition: deviceOverride?.captionPosition ?? template.captionStyle.position
248
+ };
249
+ // Add caption size override for specific devices
250
+ if (deviceOverride?.captionSize) {
251
+ baseConfig.devices[device].captionSize = deviceOverride.captionSize;
252
+ }
253
+ // Special handling for watch
254
+ if (device === 'watch') {
255
+ baseConfig.devices[device].captionFont = 'SF Pro';
256
+ if (!deviceOverride?.captionSize) {
257
+ baseConfig.devices[device].captionSize = 36;
258
+ }
259
+ }
260
+ }
261
+ return baseConfig;
262
+ }
263
+ /**
264
+ * Set up example captions
265
+ */
266
+ async function setupCaptions(devices, mainCaption, templateId) {
267
+ const suggestions = getTemplateCaptionSuggestions(templateId);
268
+ // Sanitize the main caption
269
+ const sanitizedMainCaption = sanitizeCaption(mainCaption);
270
+ // Create example captions for common screenshot names
271
+ const exampleCaptions = {
272
+ 'home.png': sanitizedMainCaption,
273
+ 'dashboard.png': sanitizedMainCaption,
274
+ 'main.png': sanitizedMainCaption,
275
+ 'features.png': suggestions.features[0],
276
+ 'settings.png': 'Customize Everything',
277
+ 'profile.png': 'Your Personal Space',
278
+ 'search.png': 'Find What You Need',
279
+ 'notifications.png': 'Stay Updated'
280
+ };
281
+ for (const device of devices) {
282
+ const captionFile = path.join('.appshot', 'captions', `${device}.json`);
283
+ // Load existing captions if any
284
+ let captions = {};
285
+ try {
286
+ const existing = await fs.readFile(captionFile, 'utf-8');
287
+ captions = JSON.parse(existing);
288
+ }
289
+ catch {
290
+ // File doesn't exist or is empty
291
+ }
292
+ // Merge with example captions (don't overwrite existing)
293
+ for (const [file, caption] of Object.entries(exampleCaptions)) {
294
+ if (!captions[file]) {
295
+ captions[file] = caption;
296
+ }
297
+ }
298
+ // Save captions
299
+ await fs.writeFile(captionFile, JSON.stringify(captions, null, 2));
300
+ }
301
+ }
302
+ /**
303
+ * Confirm overwrite of existing configuration
304
+ */
305
+ async function confirmOverwrite() {
306
+ const answer = await inquirer.prompt([{
307
+ type: 'confirm',
308
+ name: 'overwrite',
309
+ message: 'Configuration already exists. Overwrite?',
310
+ default: false
311
+ }]);
312
+ return answer.overwrite;
313
+ }
314
+ /**
315
+ * Check if file exists
316
+ */
317
+ async function fileExists(filePath) {
318
+ try {
319
+ await fs.access(filePath);
320
+ return true;
321
+ }
322
+ catch {
323
+ return false;
324
+ }
325
+ }
326
+ //# sourceMappingURL=quickstart.js.map