appshot-cli 0.8.0 → 0.8.5
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 +101 -4
- package/dist/cli.js +18 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/device.d.ts +3 -0
- package/dist/commands/device.d.ts.map +1 -0
- package/dist/commands/device.js +414 -0
- package/dist/commands/device.js.map +1 -0
- package/dist/commands/unwatch.d.ts +3 -0
- package/dist/commands/unwatch.d.ts.map +1 -0
- package/dist/commands/unwatch.js +53 -0
- package/dist/commands/unwatch.js.map +1 -0
- package/dist/commands/watch-status.d.ts +3 -0
- package/dist/commands/watch-status.d.ts.map +1 -0
- package/dist/commands/watch-status.js +116 -0
- package/dist/commands/watch-status.js.map +1 -0
- package/dist/commands/watch.d.ts +3 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +322 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/core/compose.d.ts.map +1 -1
- package/dist/core/compose.js +4 -0
- package/dist/core/compose.js.map +1 -1
- package/dist/services/compose-bridge.d.ts +47 -0
- package/dist/services/compose-bridge.d.ts.map +1 -0
- package/dist/services/compose-bridge.js +222 -0
- package/dist/services/compose-bridge.js.map +1 -0
- package/dist/services/device-manager.d.ts +14 -0
- package/dist/services/device-manager.d.ts.map +1 -0
- package/dist/services/device-manager.js +244 -0
- package/dist/services/device-manager.js.map +1 -0
- package/dist/services/doctor.d.ts +1 -0
- package/dist/services/doctor.d.ts.map +1 -1
- package/dist/services/doctor.js +94 -2
- package/dist/services/doctor.js.map +1 -1
- package/dist/services/processing-queue.d.ts +32 -0
- package/dist/services/processing-queue.d.ts.map +1 -0
- package/dist/services/processing-queue.js +150 -0
- package/dist/services/processing-queue.js.map +1 -0
- package/dist/services/screenshot-router.d.ts +31 -0
- package/dist/services/screenshot-router.d.ts.map +1 -0
- package/dist/services/screenshot-router.js +227 -0
- package/dist/services/screenshot-router.js.map +1 -0
- package/dist/services/system-requirements.d.ts +26 -0
- package/dist/services/system-requirements.d.ts.map +1 -0
- package/dist/services/system-requirements.js +189 -0
- package/dist/services/system-requirements.js.map +1 -0
- package/dist/services/watch-service.d.ts +39 -0
- package/dist/services/watch-service.d.ts.map +1 -0
- package/dist/services/watch-service.js +293 -0
- package/dist/services/watch-service.js.map +1 -0
- package/dist/types/device.d.ts +52 -0
- package/dist/types/device.d.ts.map +1 -0
- package/dist/types/device.js +2 -0
- package/dist/types/device.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/pid-manager.d.ts +11 -0
- package/dist/utils/pid-manager.d.ts.map +1 -0
- package/dist/utils/pid-manager.js +76 -0
- package/dist/utils/pid-manager.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwatch.d.ts","sourceRoot":"","sources":["../../src/commands/unwatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,MAAM,CAAC,OAAO,UAAU,cAAc,IAAI,OAAO,CAoDhD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import { PIDManager } from '../utils/pid-manager.js';
|
|
4
|
+
export default function unwatchCommand() {
|
|
5
|
+
return new Command('unwatch')
|
|
6
|
+
.description('Stop watching directories (alias for "watch stop")')
|
|
7
|
+
.action(async () => {
|
|
8
|
+
try {
|
|
9
|
+
const pidManager = new PIDManager('.appshot/watch.pid');
|
|
10
|
+
const pid = await pidManager.readPID();
|
|
11
|
+
if (!pid) {
|
|
12
|
+
console.log(pc.yellow('⚠️ Watch service is not running'));
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!(await pidManager.isProcessRunning(pid))) {
|
|
16
|
+
console.log(pc.yellow('⚠️ Watch service PID file exists but process is not running'));
|
|
17
|
+
await pidManager.cleanup();
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(pc.cyan(`🛑 Stopping watch service (PID: ${pid})...`));
|
|
21
|
+
try {
|
|
22
|
+
process.kill(pid, 'SIGTERM');
|
|
23
|
+
// Wait for process to stop
|
|
24
|
+
let attempts = 0;
|
|
25
|
+
while (attempts < 10 && await pidManager.isProcessRunning(pid)) {
|
|
26
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
27
|
+
attempts++;
|
|
28
|
+
}
|
|
29
|
+
if (await pidManager.isProcessRunning(pid)) {
|
|
30
|
+
// Force kill if still running
|
|
31
|
+
console.log(pc.yellow('⚠️ Process did not stop gracefully, forcing...'));
|
|
32
|
+
process.kill(pid, 'SIGKILL');
|
|
33
|
+
}
|
|
34
|
+
await pidManager.cleanup();
|
|
35
|
+
console.log(pc.green('✅ Watch service stopped'));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error.code === 'ESRCH') {
|
|
39
|
+
console.log(pc.yellow('⚠️ Process already stopped'));
|
|
40
|
+
await pidManager.cleanup();
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error(pc.red('❌ Error stopping watch service:'), error);
|
|
49
|
+
process.exit(1);
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=unwatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unwatch.js","sourceRoot":"","sources":["../../src/commands/unwatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,CAAC,OAAO,UAAU,cAAc;IACpC,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC;SAC1B,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YAEvC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;gBAC3D,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,8DAA8D,CAAC,CAAC,CAAC;gBACvF,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mCAAmC,GAAG,MAAM,CAAC,CAAC,CAAC;YAEnE,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAE7B,2BAA2B;gBAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,OAAO,QAAQ,GAAG,EAAE,IAAI,MAAM,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;oBACvD,QAAQ,EAAE,CAAC;gBACb,CAAC;gBAED,IAAI,MAAM,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3C,8BAA8B;oBAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iDAAiD,CAAC,CAAC,CAAC;oBAC1E,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC/B,CAAC;gBAED,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAC;oBACtD,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;gBAC7B,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,iCAAiC,CAAC,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-status.d.ts","sourceRoot":"","sources":["../../src/commands/watch-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,MAAM,CAAC,OAAO,UAAU,kBAAkB,IAAI,OAAO,CAsHpD"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import pc from 'picocolors';
|
|
3
|
+
import fs from 'fs/promises';
|
|
4
|
+
import { PIDManager } from '../utils/pid-manager.js';
|
|
5
|
+
export default function watchStatusCommand() {
|
|
6
|
+
return new Command('watch-status')
|
|
7
|
+
.description('Check the status of the watch service')
|
|
8
|
+
.option('--json', 'Output as JSON')
|
|
9
|
+
.option('--verbose', 'Show detailed information')
|
|
10
|
+
.action(async (options) => {
|
|
11
|
+
try {
|
|
12
|
+
const pidManager = new PIDManager('.appshot/watch.pid');
|
|
13
|
+
const pid = await pidManager.readPID();
|
|
14
|
+
// Basic status
|
|
15
|
+
const status = {
|
|
16
|
+
running: false,
|
|
17
|
+
pid: null,
|
|
18
|
+
pidFile: '.appshot/watch.pid',
|
|
19
|
+
processedCache: false,
|
|
20
|
+
cachedHashes: 0
|
|
21
|
+
};
|
|
22
|
+
if (pid) {
|
|
23
|
+
status.pid = pid;
|
|
24
|
+
status.running = await pidManager.isProcessRunning(pid);
|
|
25
|
+
}
|
|
26
|
+
// Check for processed cache
|
|
27
|
+
try {
|
|
28
|
+
const hashCacheFile = '.appshot/processed/hashes.json';
|
|
29
|
+
const content = await fs.readFile(hashCacheFile, 'utf8');
|
|
30
|
+
const hashes = JSON.parse(content);
|
|
31
|
+
status.processedCache = true;
|
|
32
|
+
status.cachedHashes = hashes.length;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
// Cache doesn't exist or is invalid
|
|
36
|
+
}
|
|
37
|
+
if (options.json) {
|
|
38
|
+
console.log(JSON.stringify(status, null, 2));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Human-readable output
|
|
42
|
+
console.log(pc.bold('\n📊 Watch Service Status\n'));
|
|
43
|
+
if (status.running) {
|
|
44
|
+
console.log(pc.green('✅ Service is running'));
|
|
45
|
+
console.log(pc.dim(` PID: ${status.pid}`));
|
|
46
|
+
console.log(pc.dim(` PID file: ${status.pidFile}`));
|
|
47
|
+
}
|
|
48
|
+
else if (status.pid) {
|
|
49
|
+
console.log(pc.yellow('⚠️ Service is not running'));
|
|
50
|
+
console.log(pc.dim(` Stale PID: ${status.pid}`));
|
|
51
|
+
console.log(pc.dim(' Run "appshot watch stop" to clean up'));
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log(pc.gray('⚪ Service is not running'));
|
|
55
|
+
console.log(pc.dim(' Use "appshot watch start" to begin watching'));
|
|
56
|
+
}
|
|
57
|
+
if (options.verbose) {
|
|
58
|
+
console.log(pc.bold('\n📁 Cache Information\n'));
|
|
59
|
+
if (status.processedCache) {
|
|
60
|
+
console.log(pc.dim(` Processed hashes: ${status.cachedHashes}`));
|
|
61
|
+
console.log(pc.dim(' Cache file: .appshot/processed/hashes.json'));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
console.log(pc.dim(' No processing cache found'));
|
|
65
|
+
}
|
|
66
|
+
// Check for watch directories in config
|
|
67
|
+
try {
|
|
68
|
+
const configPath = '.appshot/config.json';
|
|
69
|
+
const configContent = await fs.readFile(configPath, 'utf8');
|
|
70
|
+
const config = JSON.parse(configContent);
|
|
71
|
+
if (config.watch) {
|
|
72
|
+
console.log(pc.bold('\n⚙️ Watch Configuration\n'));
|
|
73
|
+
if (config.watch.directories) {
|
|
74
|
+
console.log(pc.dim(' Configured directories:'));
|
|
75
|
+
for (const dir of config.watch.directories) {
|
|
76
|
+
const exists = await fs.stat(dir).then(() => true).catch(() => false);
|
|
77
|
+
const indicator = exists ? pc.green('✓') : pc.red('✗');
|
|
78
|
+
console.log(` ${indicator} ${dir}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
if (config.watch.devices) {
|
|
82
|
+
console.log(pc.dim('\n Configured devices:'));
|
|
83
|
+
for (const device of config.watch.devices) {
|
|
84
|
+
console.log(` • ${device}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (config.watch.process !== undefined) {
|
|
88
|
+
console.log(pc.dim(`\n Auto-process: ${config.watch.process ? 'Yes' : 'No'}`));
|
|
89
|
+
if (config.watch.frameOnly) {
|
|
90
|
+
console.log(pc.dim(' Mode: Frame only'));
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
// No config or invalid config
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Quick actions
|
|
100
|
+
console.log(pc.bold('\n🎯 Quick Actions\n'));
|
|
101
|
+
if (status.running) {
|
|
102
|
+
console.log(pc.dim(' appshot watch stop - Stop the service'));
|
|
103
|
+
console.log(pc.dim(' appshot watch status -v - Show detailed info'));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
console.log(pc.dim(' appshot watch start - Start watching'));
|
|
107
|
+
console.log(pc.dim(' appshot watch setup - Interactive setup'));
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(pc.red('❌ Error checking status:'), error);
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=watch-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch-status.js","sourceRoot":"","sources":["../../src/commands/watch-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,MAAM,CAAC,OAAO,UAAU,YAAY,IAAI,OAAO,CAuV9C"}
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { spawn } from 'child_process';
|
|
3
|
+
import { platform } from 'os';
|
|
4
|
+
import pc from 'picocolors';
|
|
5
|
+
import fs from 'fs/promises';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { select, confirm, checkbox } from '@inquirer/prompts';
|
|
8
|
+
import { watchService, WatchService } from '../services/watch-service.js';
|
|
9
|
+
import { deviceManager } from '../services/device-manager.js';
|
|
10
|
+
import { PIDManager } from '../utils/pid-manager.js';
|
|
11
|
+
export default function watchCommand() {
|
|
12
|
+
const cmd = new Command('watch')
|
|
13
|
+
.description('Monitor directories for new screenshots and auto-process them');
|
|
14
|
+
// Start watching
|
|
15
|
+
cmd
|
|
16
|
+
.command('start')
|
|
17
|
+
.description('Start watching directories for screenshots')
|
|
18
|
+
.option('-d, --dirs <directories...>', 'Directories to watch (default: current directory)')
|
|
19
|
+
.option('--devices <names...>', 'Device names to process for')
|
|
20
|
+
.option('--process', 'Auto-process with frames and gradients')
|
|
21
|
+
.option('--frame-only', 'Apply frames only (no gradient/caption)')
|
|
22
|
+
.option('--verbose', 'Show detailed output')
|
|
23
|
+
.option('--background', 'Run in background (detached process)')
|
|
24
|
+
.action(async (options) => {
|
|
25
|
+
try {
|
|
26
|
+
// Check if already running
|
|
27
|
+
if (await WatchService.isRunning()) {
|
|
28
|
+
const pid = await WatchService.getCurrentPID();
|
|
29
|
+
console.error(pc.red(`❌ Watch service is already running (PID: ${pid})`));
|
|
30
|
+
console.log(pc.dim(' Use "appshot watch stop" to stop it first'));
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
// Determine directories to watch
|
|
34
|
+
let directories = options.dirs || [process.cwd()];
|
|
35
|
+
// Validate directories
|
|
36
|
+
for (const dir of directories) {
|
|
37
|
+
try {
|
|
38
|
+
const stat = await fs.stat(dir);
|
|
39
|
+
if (!stat.isDirectory()) {
|
|
40
|
+
console.error(pc.red(`❌ Not a directory: ${dir}`));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
console.error(pc.red(`❌ Directory not found: ${dir}`));
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// If devices specified on macOS, validate them
|
|
50
|
+
let validatedDevices = [];
|
|
51
|
+
if (options.devices && platform() === 'darwin') {
|
|
52
|
+
const allDevices = await deviceManager.listAllDevices();
|
|
53
|
+
for (const deviceName of options.devices) {
|
|
54
|
+
const device = allDevices.find(d => d.name.toLowerCase().includes(deviceName.toLowerCase()));
|
|
55
|
+
if (device) {
|
|
56
|
+
validatedDevices.push(device.name);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
console.warn(pc.yellow(`⚠️ Device not found: ${deviceName}`));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (validatedDevices.length === 0 && options.devices.length > 0) {
|
|
63
|
+
console.error(pc.red('❌ No valid devices found'));
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
if (options.background) {
|
|
68
|
+
// Start in background
|
|
69
|
+
console.log(pc.cyan('🚀 Starting watch service in background...'));
|
|
70
|
+
// Build command arguments
|
|
71
|
+
const args = ['watch', 'start'];
|
|
72
|
+
if (options.dirs)
|
|
73
|
+
args.push('--dirs', ...options.dirs);
|
|
74
|
+
if (validatedDevices.length > 0)
|
|
75
|
+
args.push('--devices', ...validatedDevices);
|
|
76
|
+
if (options.process)
|
|
77
|
+
args.push('--process');
|
|
78
|
+
if (options.frameOnly)
|
|
79
|
+
args.push('--frame-only');
|
|
80
|
+
if (options.verbose)
|
|
81
|
+
args.push('--verbose');
|
|
82
|
+
// Spawn detached process
|
|
83
|
+
const child = spawn('appshot', args, {
|
|
84
|
+
detached: true,
|
|
85
|
+
stdio: 'ignore',
|
|
86
|
+
env: process.env
|
|
87
|
+
});
|
|
88
|
+
child.unref();
|
|
89
|
+
// Wait a moment to check if it started
|
|
90
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
91
|
+
if (await WatchService.isRunning()) {
|
|
92
|
+
const pid = await WatchService.getCurrentPID();
|
|
93
|
+
console.log(pc.green(`✅ Watch service started in background (PID: ${pid})`));
|
|
94
|
+
console.log(pc.dim(' Use "appshot watch status" to check status'));
|
|
95
|
+
console.log(pc.dim(' Use "appshot watch stop" to stop watching'));
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.error(pc.red('❌ Failed to start watch service'));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Start in foreground
|
|
104
|
+
console.log(pc.cyan('🚀 Starting watch service...'));
|
|
105
|
+
console.log(pc.dim(' Press Ctrl+C to stop\n'));
|
|
106
|
+
await watchService.start({
|
|
107
|
+
directories,
|
|
108
|
+
devices: validatedDevices,
|
|
109
|
+
process: options.process || false,
|
|
110
|
+
frameOnly: options.frameOnly || false,
|
|
111
|
+
verbose: options.verbose || false
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error(pc.red('❌ Error starting watch service:'), error);
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
// Stop watching
|
|
121
|
+
cmd
|
|
122
|
+
.command('stop')
|
|
123
|
+
.description('Stop the watch service')
|
|
124
|
+
.action(async () => {
|
|
125
|
+
try {
|
|
126
|
+
const pidManager = new PIDManager('.appshot/watch.pid');
|
|
127
|
+
const pid = await pidManager.readPID();
|
|
128
|
+
if (!pid) {
|
|
129
|
+
console.log(pc.yellow('⚠️ Watch service is not running'));
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (!(await pidManager.isProcessRunning(pid))) {
|
|
133
|
+
console.log(pc.yellow('⚠️ Watch service PID file exists but process is not running'));
|
|
134
|
+
await pidManager.cleanup();
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
console.log(pc.cyan(`🛑 Stopping watch service (PID: ${pid})...`));
|
|
138
|
+
try {
|
|
139
|
+
process.kill(pid, 'SIGTERM');
|
|
140
|
+
// Wait for process to stop
|
|
141
|
+
let attempts = 0;
|
|
142
|
+
while (attempts < 10 && await pidManager.isProcessRunning(pid)) {
|
|
143
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
144
|
+
attempts++;
|
|
145
|
+
}
|
|
146
|
+
if (await pidManager.isProcessRunning(pid)) {
|
|
147
|
+
// Force kill if still running
|
|
148
|
+
console.log(pc.yellow('⚠️ Process did not stop gracefully, forcing...'));
|
|
149
|
+
process.kill(pid, 'SIGKILL');
|
|
150
|
+
}
|
|
151
|
+
await pidManager.cleanup();
|
|
152
|
+
console.log(pc.green('✅ Watch service stopped'));
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
if (error.code === 'ESRCH') {
|
|
156
|
+
console.log(pc.yellow('⚠️ Process already stopped'));
|
|
157
|
+
await pidManager.cleanup();
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
console.error(pc.red('❌ Error stopping watch service:'), error);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
// Check status
|
|
170
|
+
cmd
|
|
171
|
+
.command('status')
|
|
172
|
+
.description('Check watch service status')
|
|
173
|
+
.option('--json', 'Output as JSON')
|
|
174
|
+
.action(async (options) => {
|
|
175
|
+
try {
|
|
176
|
+
const pidManager = new PIDManager('.appshot/watch.pid');
|
|
177
|
+
const pid = await pidManager.readPID();
|
|
178
|
+
if (!pid) {
|
|
179
|
+
if (options.json) {
|
|
180
|
+
console.log(JSON.stringify({ running: false }));
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
console.log(pc.yellow('⚠️ Watch service is not running'));
|
|
184
|
+
}
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const isRunning = await pidManager.isProcessRunning(pid);
|
|
188
|
+
if (!isRunning) {
|
|
189
|
+
if (options.json) {
|
|
190
|
+
console.log(JSON.stringify({ running: false, stalePid: pid }));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
console.log(pc.yellow('⚠️ Watch service PID file exists but process is not running'));
|
|
194
|
+
console.log(pc.dim(` Stale PID: ${pid}`));
|
|
195
|
+
console.log(pc.dim(' Run "appshot watch stop" to clean up'));
|
|
196
|
+
}
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
if (options.json) {
|
|
200
|
+
console.log(JSON.stringify({
|
|
201
|
+
running: true,
|
|
202
|
+
pid,
|
|
203
|
+
pidFile: '.appshot/watch.pid'
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
console.log(pc.green('✅ Watch service is running'));
|
|
208
|
+
console.log(pc.dim(` PID: ${pid}`));
|
|
209
|
+
console.log(pc.dim(' PID file: .appshot/watch.pid'));
|
|
210
|
+
console.log(pc.dim('\n Use "appshot watch stop" to stop watching'));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
catch (error) {
|
|
214
|
+
console.error(pc.red('❌ Error checking status:'), error);
|
|
215
|
+
process.exit(1);
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
// Interactive setup
|
|
219
|
+
cmd
|
|
220
|
+
.command('setup')
|
|
221
|
+
.description('Interactive watch configuration')
|
|
222
|
+
.action(async () => {
|
|
223
|
+
try {
|
|
224
|
+
console.log(pc.bold('\n🔧 Watch Service Setup\n'));
|
|
225
|
+
// Select directories
|
|
226
|
+
const currentDir = process.cwd();
|
|
227
|
+
const screenshotsDir = path.join(currentDir, 'screenshots');
|
|
228
|
+
const hasScreenshotsDir = await fs.stat(screenshotsDir).then(() => true).catch(() => false);
|
|
229
|
+
const dirChoices = [
|
|
230
|
+
{ name: 'Current directory', value: currentDir }
|
|
231
|
+
];
|
|
232
|
+
if (hasScreenshotsDir) {
|
|
233
|
+
dirChoices.push({ name: 'screenshots/ directory', value: screenshotsDir });
|
|
234
|
+
}
|
|
235
|
+
dirChoices.push({ name: 'Custom directory...', value: 'custom' });
|
|
236
|
+
const selectedDirs = [];
|
|
237
|
+
const dirChoice = await select({
|
|
238
|
+
message: 'Which directory should we watch?',
|
|
239
|
+
choices: dirChoices
|
|
240
|
+
});
|
|
241
|
+
if (dirChoice === 'custom') {
|
|
242
|
+
console.log(pc.dim('Enter the path to watch (or multiple paths separated by commas)'));
|
|
243
|
+
// Would need text input here, using current dir as fallback for now
|
|
244
|
+
selectedDirs.push(currentDir);
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
selectedDirs.push(dirChoice);
|
|
248
|
+
}
|
|
249
|
+
// Select devices (macOS only)
|
|
250
|
+
let selectedDevices = [];
|
|
251
|
+
if (platform() === 'darwin') {
|
|
252
|
+
const useDevices = await confirm({
|
|
253
|
+
message: 'Process screenshots for specific devices?',
|
|
254
|
+
default: false
|
|
255
|
+
});
|
|
256
|
+
if (useDevices) {
|
|
257
|
+
const devices = await deviceManager.listAllDevices();
|
|
258
|
+
if (devices.length > 0) {
|
|
259
|
+
const deviceChoices = devices.map(d => ({
|
|
260
|
+
name: `${d.name} (${d.category})`,
|
|
261
|
+
value: d.name,
|
|
262
|
+
checked: false
|
|
263
|
+
}));
|
|
264
|
+
selectedDevices = await checkbox({
|
|
265
|
+
message: 'Select devices to process for:',
|
|
266
|
+
choices: deviceChoices
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Processing options
|
|
272
|
+
const shouldProcess = await confirm({
|
|
273
|
+
message: 'Auto-process screenshots with frames and gradients?',
|
|
274
|
+
default: true
|
|
275
|
+
});
|
|
276
|
+
let frameOnly = false;
|
|
277
|
+
if (shouldProcess) {
|
|
278
|
+
frameOnly = await confirm({
|
|
279
|
+
message: 'Frame only mode? (no gradient/caption)',
|
|
280
|
+
default: false
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
// Background mode
|
|
284
|
+
const runInBackground = await confirm({
|
|
285
|
+
message: 'Run in background?',
|
|
286
|
+
default: true
|
|
287
|
+
});
|
|
288
|
+
// Build and execute command
|
|
289
|
+
const args = ['watch', 'start', '--dirs', ...selectedDirs];
|
|
290
|
+
if (selectedDevices.length > 0) {
|
|
291
|
+
args.push('--devices', ...selectedDevices);
|
|
292
|
+
}
|
|
293
|
+
if (shouldProcess) {
|
|
294
|
+
args.push('--process');
|
|
295
|
+
if (frameOnly) {
|
|
296
|
+
args.push('--frame-only');
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
if (runInBackground) {
|
|
300
|
+
args.push('--background');
|
|
301
|
+
}
|
|
302
|
+
console.log(pc.cyan('\n📝 Configuration complete!\n'));
|
|
303
|
+
console.log(pc.dim('Running command:'));
|
|
304
|
+
console.log(pc.dim(` appshot ${args.join(' ')}\n`));
|
|
305
|
+
// Execute the command
|
|
306
|
+
const { spawn } = await import('child_process');
|
|
307
|
+
const child = spawn('appshot', args, {
|
|
308
|
+
stdio: 'inherit',
|
|
309
|
+
env: process.env
|
|
310
|
+
});
|
|
311
|
+
child.on('exit', (code) => {
|
|
312
|
+
process.exit(code || 0);
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
catch (error) {
|
|
316
|
+
console.error(pc.red('❌ Error in setup:'), error);
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
});
|
|
320
|
+
return cmd;
|
|
321
|
+
}
|
|
322
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/core/compose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoI/E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"compose.d.ts","sourceRoot":"","sources":["../../src/core/compose.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAoI/E,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YACV,CAAC,EAAE,MAAM,CAAC;YACV,CAAC,EAAE,MAAM,CAAC;YACV,KAAK,EAAE,MAAM,CAAC;YACd,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CA0yBxF;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE;YAAE,CAAC,EAAE,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC;QACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuFlB;AAqGD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB7H;AAED,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CA0F1D"}
|
package/dist/core/compose.js
CHANGED
|
@@ -270,6 +270,10 @@ export async function composeAppStoreScreenshot(options) {
|
|
|
270
270
|
if (!Buffer.isBuffer(frame)) {
|
|
271
271
|
throw new Error(`Frame is not a valid buffer for ${frameMetadata.displayName || frameMetadata.name}`);
|
|
272
272
|
}
|
|
273
|
+
// Validate screenshot buffer
|
|
274
|
+
if (!Buffer.isBuffer(screenshot) || screenshot.length === 0) {
|
|
275
|
+
throw new Error('Screenshot is not a valid buffer or is empty');
|
|
276
|
+
}
|
|
273
277
|
// Calculate scale factor if frame needs to be resized to fit output
|
|
274
278
|
const originalFrameWidth = frameMetadata.frameWidth;
|
|
275
279
|
const originalFrameHeight = frameMetadata.frameHeight;
|