appshot-cli 0.3.0 → 0.4.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.
- package/README.md +1250 -706
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js +11 -4
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/fonts.d.ts +3 -0
- package/dist/commands/fonts.d.ts.map +1 -0
- package/dist/commands/fonts.js +384 -0
- package/dist/commands/fonts.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +123 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/style.d.ts.map +1 -1
- package/dist/commands/style.js +92 -1
- package/dist/commands/style.js.map +1 -1
- package/dist/core/compose.d.ts +4 -0
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +102 -9
- package/dist/core/compose.js.map +1 -1
- package/dist/services/fonts.d.ts +71 -0
- package/dist/services/fonts.d.ts.map +1 -0
- package/dist/services/fonts.js +314 -0
- package/dist/services/fonts.js.map +1 -0
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/language.d.ts +32 -0
- package/dist/utils/language.d.ts.map +1 -0
- package/dist/utils/language.js +103 -0
- package/dist/utils/language.js.map +1 -0
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -10,22 +10,26 @@ import presetsCmd from './commands/presets.js';
|
|
|
10
10
|
import validateCmd from './commands/validate.js';
|
|
11
11
|
import styleCmd from './commands/style.js';
|
|
12
12
|
import gradientsCmd from './commands/gradients.js';
|
|
13
|
+
import fontsCmd from './commands/fonts.js';
|
|
14
|
+
import migrateCmd from './commands/migrate.js';
|
|
13
15
|
import { createCleanCommand } from './commands/clean.js';
|
|
14
16
|
const program = new Command();
|
|
15
17
|
program
|
|
16
18
|
.name('appshot')
|
|
17
19
|
.description('Generate App Store–ready screenshots with frames, gradients, and captions.')
|
|
18
|
-
.version('0.
|
|
20
|
+
.version('0.4.0');
|
|
19
21
|
program.addCommand(initCmd());
|
|
20
22
|
program.addCommand(captionCmd());
|
|
21
23
|
program.addCommand(styleCmd());
|
|
22
24
|
program.addCommand(gradientsCmd());
|
|
25
|
+
program.addCommand(fontsCmd());
|
|
23
26
|
program.addCommand(localizeCmd());
|
|
24
27
|
program.addCommand(buildCmd());
|
|
25
28
|
program.addCommand(specsCmd());
|
|
26
29
|
program.addCommand(checkCmd());
|
|
27
30
|
program.addCommand(presetsCmd());
|
|
28
31
|
program.addCommand(validateCmd());
|
|
32
|
+
program.addCommand(migrateCmd());
|
|
29
33
|
program.addCommand(createCleanCommand());
|
|
30
34
|
program.showHelpAfterError(pc.dim('\nUse --help for usage.'));
|
|
31
35
|
program.parseAsync().catch((err) => {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEzC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAE9D,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,WAAW,MAAM,wBAAwB,CAAC;AACjD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,QAAQ,MAAM,qBAAqB,CAAC;AAC3C,OAAO,UAAU,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC;KACzF,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;AACnC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAClC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;AACjC,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEzC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,CAAC;AAE9D,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,CAAC,OAAO,UAAU,QAAQ,YAuO/B"}
|
package/dist/commands/build.js
CHANGED
|
@@ -6,13 +6,14 @@ import sharp from 'sharp';
|
|
|
6
6
|
import { loadConfig, loadCaptions } from '../core/files.js';
|
|
7
7
|
import { autoSelectFrame, getImageDimensions, initializeFrameRegistry } from '../core/devices.js';
|
|
8
8
|
import { composeAppStoreScreenshot } from '../core/compose.js';
|
|
9
|
+
import { resolveLanguages, normalizeLanguageCode } from '../utils/language.js';
|
|
9
10
|
export default function buildCmd() {
|
|
10
11
|
const cmd = new Command('build')
|
|
11
12
|
.description('Render screenshots using frames, gradients, and captions')
|
|
12
13
|
.option('--devices <list>', 'comma-separated device list (e.g., iphone,ipad)', 'iphone,ipad,mac,watch')
|
|
13
14
|
.option('--preset <ids>', 'use specific App Store presets (e.g., iphone-6-9,ipad-13)')
|
|
14
15
|
.option('--config <file>', 'use specific config file', 'appshot.json')
|
|
15
|
-
.option('--langs <list>', 'comma-separated language codes (e.g., en,fr,de)'
|
|
16
|
+
.option('--langs <list>', 'comma-separated language codes (e.g., en,fr,de)')
|
|
16
17
|
.option('--preview', 'generate low-res preview images')
|
|
17
18
|
.option('--concurrency <n>', 'number of parallel renders', '4')
|
|
18
19
|
.option('--no-frame', 'skip device frames')
|
|
@@ -24,7 +25,6 @@ export default function buildCmd() {
|
|
|
24
25
|
// Load configuration
|
|
25
26
|
const config = await loadConfig();
|
|
26
27
|
const devices = opts.devices.split(',').map((d) => d.trim());
|
|
27
|
-
const langs = opts.langs.split(',').map((l) => l.trim());
|
|
28
28
|
const concurrency = parseInt(opts.concurrency, 10);
|
|
29
29
|
// Initialize frame registry from Frames.json if available
|
|
30
30
|
await initializeFrameRegistry(path.resolve(config.frames));
|
|
@@ -62,10 +62,17 @@ export default function buildCmd() {
|
|
|
62
62
|
// Load captions from .appshot/captions/
|
|
63
63
|
const captionsPath = path.join(process.cwd(), '.appshot', 'captions', `${device}.json`);
|
|
64
64
|
const captions = await loadCaptions(captionsPath);
|
|
65
|
+
// Resolve languages for this device
|
|
66
|
+
const cliLangs = opts.langs ? opts.langs.split(',').map((l) => normalizeLanguageCode(l.trim())) : undefined;
|
|
67
|
+
const { languages, source } = resolveLanguages(cliLangs, captions, config);
|
|
65
68
|
console.log(pc.cyan(`\n${device}:`), `Processing ${screenshots.length} screenshots`);
|
|
69
|
+
if (!cliLangs) {
|
|
70
|
+
console.log(pc.dim(` Using language: ${languages.join(', ')} (from ${source})`));
|
|
71
|
+
}
|
|
66
72
|
// Process each language
|
|
67
|
-
for (const lang of
|
|
68
|
-
|
|
73
|
+
for (const lang of languages) {
|
|
74
|
+
// Always use language subdirectory
|
|
75
|
+
const langDir = path.join(outputDir, lang);
|
|
69
76
|
await fs.mkdir(langDir, { recursive: true });
|
|
70
77
|
// Process screenshots in batches
|
|
71
78
|
for (let i = 0; i < screenshots.length; i += concurrency) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/commands/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,MAAM,CAAC,OAAO,UAAU,QAAQ,IAAI,OAAO,CAyL1C"}
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import inquirer from 'inquirer';
|
|
4
|
+
import { promises as fs } from 'fs';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
import { FontService } from '../services/fonts.js';
|
|
7
|
+
import { loadConfig } from '../core/files.js';
|
|
8
|
+
/**
|
|
9
|
+
* Save configuration to .appshot/config.json
|
|
10
|
+
*/
|
|
11
|
+
async function saveConfig(config) {
|
|
12
|
+
const configPath = path.join(process.cwd(), '.appshot', 'config.json');
|
|
13
|
+
await fs.writeFile(configPath, JSON.stringify(config, null, 2));
|
|
14
|
+
}
|
|
15
|
+
export default function fontsCmd() {
|
|
16
|
+
const cmd = new Command('fonts')
|
|
17
|
+
.description('List available fonts for captions')
|
|
18
|
+
.option('--all', 'Show all system fonts')
|
|
19
|
+
.option('--recommended', 'Show only recommended fonts')
|
|
20
|
+
.option('--json', 'Output as JSON')
|
|
21
|
+
.option('--validate <font>', 'Check if a font is available')
|
|
22
|
+
.option('--set <font>', 'Set the caption font')
|
|
23
|
+
.option('--select', 'Interactive font selection')
|
|
24
|
+
.option('--device <name>', 'Set font for specific device (use with --set or --select)')
|
|
25
|
+
.action(async (options) => {
|
|
26
|
+
const fontService = FontService.getInstance();
|
|
27
|
+
// Set font mode
|
|
28
|
+
if (options.set) {
|
|
29
|
+
await handleSetFont(options.set, options.device, fontService);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// Interactive selection mode
|
|
33
|
+
if (options.select) {
|
|
34
|
+
await handleSelectFont(options.device, fontService);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Validate a specific font
|
|
38
|
+
if (options.validate) {
|
|
39
|
+
const fontStatus = await fontService.getFontStatus(options.validate);
|
|
40
|
+
if (options.json) {
|
|
41
|
+
console.log(JSON.stringify(fontStatus));
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
if (fontStatus.installed) {
|
|
45
|
+
console.log(pc.green(`✓ Font "${options.validate}" is installed and available`));
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
console.log(pc.red(`✗ Font "${options.validate}" is NOT installed on your system`));
|
|
49
|
+
console.log(pc.yellow(`⚠ If used, will fall back to: ${fontStatus.fallback}`));
|
|
50
|
+
if (fontStatus.warning) {
|
|
51
|
+
console.log(pc.dim(fontStatus.warning));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// Show only recommended fonts
|
|
58
|
+
if (options.recommended) {
|
|
59
|
+
const recommended = await fontService.getRecommendedFonts();
|
|
60
|
+
if (options.json) {
|
|
61
|
+
console.log(JSON.stringify(recommended, null, 2));
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
console.log(pc.bold('\n📝 Recommended Fonts for Captions\n'));
|
|
65
|
+
// Group by category and installation status
|
|
66
|
+
const webSafeInstalled = recommended.filter(f => f.category === 'web-safe' && f.installed);
|
|
67
|
+
const webSafeNotInstalled = recommended.filter(f => f.category === 'web-safe' && !f.installed);
|
|
68
|
+
const popularInstalled = recommended.filter(f => f.category === 'recommended' && f.installed);
|
|
69
|
+
const popularNotInstalled = recommended.filter(f => f.category === 'recommended' && !f.installed);
|
|
70
|
+
const systemInstalled = recommended.filter(f => f.category === 'system' && f.installed);
|
|
71
|
+
if (webSafeInstalled.length > 0) {
|
|
72
|
+
console.log(pc.cyan('Web-Safe Fonts (installed):'));
|
|
73
|
+
for (const font of webSafeInstalled) {
|
|
74
|
+
console.log(pc.green(` ✓ ${font.name}`));
|
|
75
|
+
}
|
|
76
|
+
console.log();
|
|
77
|
+
}
|
|
78
|
+
if (webSafeNotInstalled.length > 0) {
|
|
79
|
+
console.log(pc.cyan('Web-Safe Fonts (not installed):'));
|
|
80
|
+
for (const font of webSafeNotInstalled) {
|
|
81
|
+
console.log(pc.yellow(` ⚠ ${font.name}`) + pc.dim(` → ${font.fallback}`));
|
|
82
|
+
}
|
|
83
|
+
console.log();
|
|
84
|
+
}
|
|
85
|
+
if (popularInstalled.length > 0) {
|
|
86
|
+
console.log(pc.cyan('Popular Fonts (installed):'));
|
|
87
|
+
for (const font of popularInstalled) {
|
|
88
|
+
console.log(pc.green(` ✓ ${font.name}`));
|
|
89
|
+
}
|
|
90
|
+
console.log();
|
|
91
|
+
}
|
|
92
|
+
if (popularNotInstalled.length > 0) {
|
|
93
|
+
console.log(pc.cyan('Popular Fonts (not installed - will use fallback):'));
|
|
94
|
+
for (const font of popularNotInstalled) {
|
|
95
|
+
console.log(pc.yellow(` ⚠ ${font.name}`) + pc.dim(` → ${font.fallback}`));
|
|
96
|
+
}
|
|
97
|
+
console.log();
|
|
98
|
+
}
|
|
99
|
+
if (systemInstalled.length > 0) {
|
|
100
|
+
console.log(pc.cyan('System Fonts (installed):'));
|
|
101
|
+
for (const font of systemInstalled) {
|
|
102
|
+
console.log(pc.green(` ✓ ${font.name}`));
|
|
103
|
+
}
|
|
104
|
+
console.log();
|
|
105
|
+
}
|
|
106
|
+
console.log(pc.dim('✓ = Installed and will render correctly'));
|
|
107
|
+
console.log(pc.dim('⚠ = Not installed, will use fallback font shown'));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
// Show all fonts or categorized view
|
|
111
|
+
if (options.all) {
|
|
112
|
+
console.log(pc.bold('\n🔍 Detecting system fonts...\n'));
|
|
113
|
+
const systemFonts = await fontService.getSystemFonts();
|
|
114
|
+
if (options.json) {
|
|
115
|
+
console.log(JSON.stringify(systemFonts, null, 2));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (systemFonts.length === 0) {
|
|
119
|
+
console.log(pc.yellow('Could not detect system fonts on this platform'));
|
|
120
|
+
console.log(pc.dim('Use --recommended to see web-safe fonts that work everywhere'));
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
console.log(pc.cyan(`Found ${systemFonts.length} system fonts:\n`));
|
|
124
|
+
// Display in columns for better readability
|
|
125
|
+
const columns = 3;
|
|
126
|
+
const columnWidth = 30;
|
|
127
|
+
for (let i = 0; i < systemFonts.length; i += columns) {
|
|
128
|
+
let row = '';
|
|
129
|
+
for (let j = 0; j < columns && i + j < systemFonts.length; j++) {
|
|
130
|
+
const font = systemFonts[i + j];
|
|
131
|
+
row += font.padEnd(columnWidth);
|
|
132
|
+
}
|
|
133
|
+
console.log(row);
|
|
134
|
+
}
|
|
135
|
+
console.log();
|
|
136
|
+
console.log(pc.dim('Note: Not all system fonts may render correctly in SVG'));
|
|
137
|
+
console.log(pc.dim('Use --recommended for fonts that are guaranteed to work'));
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
// Default: Show categorized view
|
|
141
|
+
const categories = await fontService.getFontCategories();
|
|
142
|
+
if (options.json) {
|
|
143
|
+
console.log(JSON.stringify(categories, null, 2));
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
console.log(pc.bold('\n🎨 Available Fonts for Captions\n'));
|
|
147
|
+
for (const category of categories) {
|
|
148
|
+
console.log(pc.cyan(`${category.name}:`));
|
|
149
|
+
const fonts = category.fonts.slice(0, 15); // Limit display
|
|
150
|
+
for (const font of fonts) {
|
|
151
|
+
const marker = font.category === 'web-safe' ? pc.green('●') :
|
|
152
|
+
font.category === 'recommended' ? pc.blue('●') :
|
|
153
|
+
pc.gray('●');
|
|
154
|
+
console.log(` ${marker} ${font.name || font}`);
|
|
155
|
+
}
|
|
156
|
+
if (category.fonts.length > 15) {
|
|
157
|
+
console.log(pc.dim(` ... and ${category.fonts.length - 15} more`));
|
|
158
|
+
}
|
|
159
|
+
console.log();
|
|
160
|
+
}
|
|
161
|
+
console.log(pc.dim('Legend:'));
|
|
162
|
+
console.log(` ${pc.green('●')} Web-safe (works everywhere)`);
|
|
163
|
+
console.log(` ${pc.blue('●')} Popular (widely supported)`);
|
|
164
|
+
console.log(` ${pc.gray('●')} System (platform-specific)`);
|
|
165
|
+
console.log();
|
|
166
|
+
console.log(pc.dim('Tips:'));
|
|
167
|
+
console.log(pc.dim('• Use --set "Font Name" to set caption font directly'));
|
|
168
|
+
console.log(pc.dim('• Use --select for interactive font selection'));
|
|
169
|
+
console.log(pc.dim('• Use --device <name> to set device-specific fonts'));
|
|
170
|
+
console.log(pc.dim('• Use --validate "Font Name" to check availability'));
|
|
171
|
+
console.log(pc.dim('• Or use "appshot style" for full configuration'));
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
return cmd;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Handle --set option: set font directly
|
|
178
|
+
*/
|
|
179
|
+
async function handleSetFont(fontName, deviceName, fontService) {
|
|
180
|
+
try {
|
|
181
|
+
// Get detailed font status
|
|
182
|
+
const fontStatus = await fontService.getFontStatus(fontName);
|
|
183
|
+
if (!fontStatus.installed) {
|
|
184
|
+
console.error(pc.red(`✗ Font "${fontName}" is not installed on your system`));
|
|
185
|
+
console.log(pc.yellow(`⚠ Fallback will be used: ${fontStatus.fallback}`));
|
|
186
|
+
console.log();
|
|
187
|
+
// Ask if they want to continue anyway
|
|
188
|
+
const answer = await inquirer.prompt([{
|
|
189
|
+
type: 'confirm',
|
|
190
|
+
name: 'continue',
|
|
191
|
+
message: 'Do you want to set this font anyway? (It will use the fallback)',
|
|
192
|
+
default: false
|
|
193
|
+
}]);
|
|
194
|
+
if (!answer.continue) {
|
|
195
|
+
console.log(pc.dim('Font not changed'));
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
console.log(pc.yellow('⚠ Warning: Setting font that will use fallback'));
|
|
199
|
+
}
|
|
200
|
+
// Load current config
|
|
201
|
+
const config = await loadConfig();
|
|
202
|
+
if (deviceName) {
|
|
203
|
+
// Set device-specific font
|
|
204
|
+
if (!config.devices[deviceName]) {
|
|
205
|
+
console.error(pc.red(`Device "${deviceName}" not found in configuration`));
|
|
206
|
+
console.log(pc.dim('Available devices: ' + Object.keys(config.devices).join(', ')));
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
// Set device-specific font
|
|
210
|
+
config.devices[deviceName].captionFont = fontName;
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// Set global font
|
|
214
|
+
config.caption.font = fontName;
|
|
215
|
+
}
|
|
216
|
+
// Save config
|
|
217
|
+
await saveConfig(config);
|
|
218
|
+
if (deviceName) {
|
|
219
|
+
console.log(pc.green('✓'), `Set font to "${fontName}" for device: ${deviceName}`);
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
console.log(pc.green('✓'), `Set caption font to "${fontName}"`);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
console.error(pc.red('Error setting font:'), error);
|
|
227
|
+
process.exit(1);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Handle --select option: interactive font selection
|
|
232
|
+
*/
|
|
233
|
+
async function handleSelectFont(deviceName, fontService) {
|
|
234
|
+
try {
|
|
235
|
+
// Load current config to show current font
|
|
236
|
+
const config = await loadConfig();
|
|
237
|
+
let currentFont = config.caption.font;
|
|
238
|
+
let isDeviceSpecific = false;
|
|
239
|
+
console.log(pc.bold('\n🎨 Font Selection\n'));
|
|
240
|
+
if (deviceName) {
|
|
241
|
+
if (!config.devices[deviceName]) {
|
|
242
|
+
console.error(pc.red(`Device "${deviceName}" not found in configuration`));
|
|
243
|
+
console.log(pc.dim('Available devices: ' + Object.keys(config.devices).join(', ')));
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
console.log(pc.dim(`Configuring font for device: ${deviceName}`));
|
|
247
|
+
// Check if device has specific font, otherwise use global
|
|
248
|
+
if (config.devices[deviceName].captionFont) {
|
|
249
|
+
currentFont = config.devices[deviceName].captionFont;
|
|
250
|
+
isDeviceSpecific = true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const fontSource = isDeviceSpecific ? `${deviceName} device` : 'global';
|
|
254
|
+
console.log(pc.dim(`Current font: ${currentFont} (${fontSource})\n`));
|
|
255
|
+
// Get font categories for selection
|
|
256
|
+
const categories = await fontService.getFontCategories();
|
|
257
|
+
const recommended = await fontService.getRecommendedFonts();
|
|
258
|
+
// Build selection choices
|
|
259
|
+
const choices = [];
|
|
260
|
+
// Add current font at the top
|
|
261
|
+
const currentFontStatus = await fontService.getFontStatus(currentFont);
|
|
262
|
+
const currentStatus = currentFontStatus.installed ? pc.green('✓') : pc.yellow('⚠');
|
|
263
|
+
choices.push({
|
|
264
|
+
name: `${currentStatus} Keep current: ${currentFont}`,
|
|
265
|
+
value: currentFont
|
|
266
|
+
});
|
|
267
|
+
choices.push(new inquirer.Separator());
|
|
268
|
+
// Web-Safe fonts (installed)
|
|
269
|
+
const webSafeInstalled = recommended.filter(f => f.category === 'web-safe' && f.installed);
|
|
270
|
+
if (webSafeInstalled.length > 0) {
|
|
271
|
+
choices.push(new inquirer.Separator(pc.green('── Installed Web-Safe Fonts ──')));
|
|
272
|
+
for (const font of webSafeInstalled) {
|
|
273
|
+
const marker = font.name === currentFont ? pc.cyan('● ') : ' ';
|
|
274
|
+
choices.push({ name: `${marker}${pc.green('✓')} ${font.name}`, value: font.name });
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Popular fonts (separate installed and not installed)
|
|
278
|
+
const popularInstalled = recommended.filter(f => f.category === 'recommended' && f.installed);
|
|
279
|
+
const popularNotInstalled = recommended.filter(f => f.category === 'recommended' && !f.installed);
|
|
280
|
+
if (popularInstalled.length > 0) {
|
|
281
|
+
choices.push(new inquirer.Separator(pc.blue('── Installed Popular Fonts ──')));
|
|
282
|
+
for (const font of popularInstalled) {
|
|
283
|
+
const marker = font.name === currentFont ? pc.cyan('● ') : ' ';
|
|
284
|
+
choices.push({ name: `${marker}${pc.green('✓')} ${font.name}`, value: font.name });
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
if (popularNotInstalled.length > 0) {
|
|
288
|
+
choices.push(new inquirer.Separator(pc.yellow('── Popular Fonts (Not Installed - Will Use Fallback) ──')));
|
|
289
|
+
for (const font of popularNotInstalled) {
|
|
290
|
+
const marker = font.name === currentFont ? pc.cyan('● ') : ' ';
|
|
291
|
+
choices.push({
|
|
292
|
+
name: `${marker}${pc.yellow('⚠')} ${font.name} → ${pc.dim(font.fallback)}`,
|
|
293
|
+
value: font.name
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
// System fonts (limited to first 10 to avoid overwhelming)
|
|
298
|
+
const systemCategory = categories.find(c => c.name === 'System Fonts');
|
|
299
|
+
if (systemCategory && systemCategory.fonts.length > 0) {
|
|
300
|
+
choices.push(new inquirer.Separator(pc.gray('── System Fonts (top 10) ──')));
|
|
301
|
+
const systemFonts = systemCategory.fonts
|
|
302
|
+
.filter(f => f.category === 'system' || !recommended.some(r => r.name === f.name))
|
|
303
|
+
.slice(0, 10);
|
|
304
|
+
for (const font of systemFonts) {
|
|
305
|
+
const fontName = typeof font === 'string' ? font : font.name;
|
|
306
|
+
const marker = fontName === currentFont ? pc.cyan('● ') : ' ';
|
|
307
|
+
choices.push({ name: `${marker}${fontName}`, value: fontName });
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Custom font option
|
|
311
|
+
choices.push(new inquirer.Separator('── Custom ──'));
|
|
312
|
+
choices.push({ name: pc.dim('Enter custom font name...'), value: '__custom__' });
|
|
313
|
+
const answer = await inquirer.prompt([{
|
|
314
|
+
type: 'list',
|
|
315
|
+
name: 'font',
|
|
316
|
+
message: 'Select a font:',
|
|
317
|
+
choices: choices,
|
|
318
|
+
pageSize: 15
|
|
319
|
+
}]);
|
|
320
|
+
let selectedFont = answer.font;
|
|
321
|
+
// Handle custom font input
|
|
322
|
+
if (selectedFont === '__custom__') {
|
|
323
|
+
const customAnswer = await inquirer.prompt([{
|
|
324
|
+
type: 'input',
|
|
325
|
+
name: 'customFont',
|
|
326
|
+
message: 'Enter font name:',
|
|
327
|
+
validate: async (input) => {
|
|
328
|
+
if (!input.trim())
|
|
329
|
+
return 'Font name cannot be empty';
|
|
330
|
+
const fontStatus = await fontService.getFontStatus(input.trim());
|
|
331
|
+
if (!fontStatus.installed) {
|
|
332
|
+
return `Font "${input}" is not installed. It will use fallback: ${fontStatus.fallback}. Type it again to confirm.`;
|
|
333
|
+
}
|
|
334
|
+
return true;
|
|
335
|
+
}
|
|
336
|
+
}]);
|
|
337
|
+
selectedFont = customAnswer.customFont.trim();
|
|
338
|
+
}
|
|
339
|
+
// Don't save if user selected current font
|
|
340
|
+
if (selectedFont === currentFont) {
|
|
341
|
+
console.log(pc.dim('No changes made'));
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
// Check if selected font is installed
|
|
345
|
+
const selectedFontStatus = await fontService.getFontStatus(selectedFont);
|
|
346
|
+
if (!selectedFontStatus.installed) {
|
|
347
|
+
console.log();
|
|
348
|
+
console.log(pc.yellow(`⚠ Warning: "${selectedFont}" is not installed on your system`));
|
|
349
|
+
console.log(pc.dim(`Fallback will be used: ${selectedFontStatus.fallback}`));
|
|
350
|
+
const answer = await inquirer.prompt([{
|
|
351
|
+
type: 'confirm',
|
|
352
|
+
name: 'proceed',
|
|
353
|
+
message: 'Do you want to use this font anyway?',
|
|
354
|
+
default: false
|
|
355
|
+
}]);
|
|
356
|
+
if (!answer.proceed) {
|
|
357
|
+
console.log(pc.dim('Font not changed'));
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// Update config
|
|
362
|
+
if (deviceName) {
|
|
363
|
+
config.devices[deviceName].captionFont = selectedFont;
|
|
364
|
+
}
|
|
365
|
+
else {
|
|
366
|
+
config.caption.font = selectedFont;
|
|
367
|
+
}
|
|
368
|
+
await saveConfig(config);
|
|
369
|
+
if (deviceName) {
|
|
370
|
+
console.log(pc.green('✓'), `Set font to "${selectedFont}" for device: ${deviceName}`);
|
|
371
|
+
}
|
|
372
|
+
else {
|
|
373
|
+
console.log(pc.green('✓'), `Set caption font to "${selectedFont}"`);
|
|
374
|
+
}
|
|
375
|
+
if (!selectedFontStatus.installed) {
|
|
376
|
+
console.log(pc.yellow(`Remember: This font will render as ${selectedFontStatus.fallback}`));
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
catch (error) {
|
|
380
|
+
console.error(pc.red('Error selecting font:'), error);
|
|
381
|
+
process.exit(1);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
//# sourceMappingURL=fonts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/commands/fonts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,CAAC,OAAO,UAAU,UAAU,IAAI,OAAO,CAgB5C"}
|