@walkeros/cli 0.3.1 → 0.3.2
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/CHANGELOG.md +8 -0
- package/README.md +17 -17
- package/dist/__tests__/cli-e2e.test.js +4 -18
- package/dist/__tests__/cli-e2e.test.js.map +1 -1
- package/dist/__tests__/cli.test.js +5 -31
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/commands/bundle/bundler.js +3 -10
- package/dist/commands/bundle/bundler.js.map +1 -1
- package/dist/commands/bundle/index.d.ts.map +1 -1
- package/dist/commands/bundle/index.js +2 -2
- package/dist/commands/bundle/index.js.map +1 -1
- package/dist/commands/run/index.d.ts.map +1 -1
- package/dist/commands/run/index.js +64 -55
- package/dist/commands/run/index.js.map +1 -1
- package/dist/commands/simulate/index.d.ts.map +1 -1
- package/dist/commands/simulate/index.js +2 -2
- package/dist/commands/simulate/index.js.map +1 -1
- package/dist/core/docker.d.ts +40 -3
- package/dist/core/docker.d.ts.map +1 -1
- package/dist/core/docker.js +114 -18
- package/dist/core/docker.js.map +1 -1
- package/dist/core/execution.d.ts +2 -1
- package/dist/core/execution.d.ts.map +1 -1
- package/dist/core/execution.js +4 -3
- package/dist/core/execution.js.map +1 -1
- package/dist/index.js +221 -167
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
|
@@ -8,7 +8,7 @@ import path from 'path';
|
|
|
8
8
|
import os from 'os';
|
|
9
9
|
import { runFlow, runServeMode, } from '@walkeros/docker';
|
|
10
10
|
import { bundle } from '../bundle';
|
|
11
|
-
import { createLogger, createTimer,
|
|
11
|
+
import { createLogger, createTimer, getExecutionMode, executeRunInDocker, isDockerAvailable, } from '../../core';
|
|
12
12
|
import { loadJsonConfig } from '../../config';
|
|
13
13
|
import { validateMode, validateFlowFile, validatePort } from './validators';
|
|
14
14
|
/**
|
|
@@ -25,43 +25,29 @@ export async function runCommand(mode, options) {
|
|
|
25
25
|
silent: options.silent ?? false,
|
|
26
26
|
json: options.json,
|
|
27
27
|
});
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
dockerArgs.push('--silent');
|
|
42
|
-
await executeCommand(async () => {
|
|
43
|
-
try {
|
|
44
|
-
// Step 1: Validate inputs
|
|
45
|
-
validateMode(mode);
|
|
46
|
-
const configPath = validateFlowFile(options.config);
|
|
47
|
-
if (options.port !== undefined) {
|
|
48
|
-
validatePort(options.port);
|
|
49
|
-
}
|
|
50
|
-
// Step 2: Determine if config is pre-built or needs bundling
|
|
51
|
-
const isPreBuilt = configPath.endsWith('.mjs') ||
|
|
52
|
-
configPath.endsWith('.js') ||
|
|
53
|
-
configPath.endsWith('.cjs');
|
|
54
|
-
let flowPath;
|
|
28
|
+
try {
|
|
29
|
+
// Step 1: Validate inputs
|
|
30
|
+
validateMode(mode);
|
|
31
|
+
const configPath = validateFlowFile(options.config);
|
|
32
|
+
if (options.port !== undefined) {
|
|
33
|
+
validatePort(options.port);
|
|
34
|
+
}
|
|
35
|
+
// Step 2: Determine if config is pre-built or needs bundling
|
|
36
|
+
const isPreBuilt = configPath.endsWith('.mjs') ||
|
|
37
|
+
configPath.endsWith('.js') ||
|
|
38
|
+
configPath.endsWith('.cjs');
|
|
39
|
+
let flowPath = null;
|
|
40
|
+
if (mode === 'collect') {
|
|
55
41
|
if (isPreBuilt) {
|
|
56
42
|
// Use pre-built bundle directly
|
|
57
43
|
flowPath = path.resolve(configPath);
|
|
58
|
-
if (!options.json) {
|
|
44
|
+
if (!options.json && !options.silent) {
|
|
59
45
|
logger.info(`📦 Using pre-built flow: ${path.basename(flowPath)}`);
|
|
60
46
|
}
|
|
61
47
|
}
|
|
62
48
|
else {
|
|
63
49
|
// Bundle JSON config first
|
|
64
|
-
if (!options.json) {
|
|
50
|
+
if (!options.json && !options.silent) {
|
|
65
51
|
logger.info('🔨 Building flow bundle...');
|
|
66
52
|
}
|
|
67
53
|
// Read config and modify output path
|
|
@@ -84,20 +70,43 @@ export async function runCommand(mode, options) {
|
|
|
84
70
|
await bundle(configWithOutput, {
|
|
85
71
|
cache: true,
|
|
86
72
|
verbose: options.verbose,
|
|
87
|
-
silent: options.json,
|
|
73
|
+
silent: options.json || options.silent,
|
|
88
74
|
});
|
|
89
75
|
flowPath = tempPath;
|
|
90
|
-
if (!options.json) {
|
|
76
|
+
if (!options.json && !options.silent) {
|
|
91
77
|
logger.success('✅ Bundle ready');
|
|
92
78
|
}
|
|
93
79
|
}
|
|
94
|
-
|
|
95
|
-
|
|
80
|
+
}
|
|
81
|
+
// Step 3: Execute based on mode
|
|
82
|
+
const executionMode = getExecutionMode(options);
|
|
83
|
+
if (executionMode === 'docker') {
|
|
84
|
+
// Docker mode: Use production runtime image
|
|
85
|
+
const dockerAvailable = await isDockerAvailable();
|
|
86
|
+
if (!dockerAvailable) {
|
|
87
|
+
throw new Error('Docker is not available. Please install Docker or use --local flag to execute locally.');
|
|
88
|
+
}
|
|
89
|
+
if (!options.json && !options.silent) {
|
|
90
|
+
logger.info('🐳 Executing in production runtime container...');
|
|
91
|
+
}
|
|
92
|
+
await executeRunInDocker(mode, flowPath, {
|
|
93
|
+
port: options.port,
|
|
94
|
+
host: options.host,
|
|
95
|
+
staticDir: options.staticDir,
|
|
96
|
+
silent: options.silent,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
// Local mode: Use library functions
|
|
101
|
+
if (!options.json && !options.silent) {
|
|
96
102
|
const modeLabel = mode === 'collect' ? 'Collector' : 'Server';
|
|
97
|
-
logger.info(
|
|
103
|
+
logger.info(`🖥️ Starting ${modeLabel} locally...`);
|
|
98
104
|
}
|
|
99
105
|
switch (mode) {
|
|
100
106
|
case 'collect': {
|
|
107
|
+
if (!flowPath) {
|
|
108
|
+
throw new Error('Flow path is required for collect mode');
|
|
109
|
+
}
|
|
101
110
|
const config = {
|
|
102
111
|
port: options.port,
|
|
103
112
|
host: options.host,
|
|
@@ -117,28 +126,28 @@ export async function runCommand(mode, options) {
|
|
|
117
126
|
default:
|
|
118
127
|
throw new Error(`Unknown mode: ${mode}`);
|
|
119
128
|
}
|
|
120
|
-
// Note: runFlow runs forever, so we won't reach here unless it fails
|
|
121
129
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
logger.error('❌ Run failed:');
|
|
137
|
-
logger.error(errorMessage);
|
|
138
|
-
}
|
|
139
|
-
process.exit(1);
|
|
130
|
+
// Note: Both Docker and local modes run forever, so we won't reach here unless they fail
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
const duration = timer.getElapsed() / 1000;
|
|
134
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
135
|
+
if (options.json) {
|
|
136
|
+
const output = {
|
|
137
|
+
success: false,
|
|
138
|
+
mode,
|
|
139
|
+
error: errorMessage,
|
|
140
|
+
duration,
|
|
141
|
+
};
|
|
142
|
+
// eslint-disable-next-line no-console
|
|
143
|
+
console.log(JSON.stringify(output, null, 2));
|
|
140
144
|
}
|
|
141
|
-
|
|
145
|
+
else {
|
|
146
|
+
logger.error('❌ Run failed:');
|
|
147
|
+
logger.error(errorMessage);
|
|
148
|
+
}
|
|
149
|
+
process.exit(1);
|
|
150
|
+
}
|
|
142
151
|
}
|
|
143
152
|
/**
|
|
144
153
|
* Programmatic run function
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/run/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,OAAO,EACP,YAAY,GAGb,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/run/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/simulate/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Ef;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAsB,QAAQ,CAC5B,YAAY,EAAE,MAAM,GAAG,OAAO,EAC9B,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CACX,GACL,OAAO,CAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,CAgB7C;AAGD,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -9,7 +9,7 @@ export async function simulateCommand(options) {
|
|
|
9
9
|
silent: options.silent ?? false,
|
|
10
10
|
json: options.json,
|
|
11
11
|
});
|
|
12
|
-
// Build Docker args
|
|
12
|
+
// Build Docker args - file path as first positional arg
|
|
13
13
|
const dockerArgs = [options.config];
|
|
14
14
|
if (options.event)
|
|
15
15
|
dockerArgs.push('--event', options.event);
|
|
@@ -65,7 +65,7 @@ export async function simulateCommand(options) {
|
|
|
65
65
|
}
|
|
66
66
|
process.exit(1);
|
|
67
67
|
}
|
|
68
|
-
}, 'simulate', dockerArgs, options, logger);
|
|
68
|
+
}, 'simulate', dockerArgs, options, logger, options.config);
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
71
71
|
* High-level simulate function for programmatic usage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/simulate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG1D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA+B;IAE/B,MAAM,MAAM,GAAG,YAAY,CAAC;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;QAC/B,IAAI,EAAE,OAAO,CAAC,IAAI;KACnB,CAAC,CAAC;IAEH,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/simulate/index.ts"],"names":[],"mappings":"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"}
|
package/dist/core/docker.d.ts
CHANGED
|
@@ -5,7 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { GlobalOptions } from '../types/global';
|
|
7
7
|
/**
|
|
8
|
-
* Docker image
|
|
8
|
+
* Docker image for CLI/build tools (bundle, simulate)
|
|
9
|
+
*/
|
|
10
|
+
export declare const CLI_DOCKER_IMAGE: string;
|
|
11
|
+
/**
|
|
12
|
+
* Docker image for production runtime (run command)
|
|
13
|
+
*/
|
|
14
|
+
export declare const RUNTIME_DOCKER_IMAGE: string;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated Use CLI_DOCKER_IMAGE or RUNTIME_DOCKER_IMAGE instead
|
|
9
17
|
*/
|
|
10
18
|
export declare const DOCKER_IMAGE: string;
|
|
11
19
|
/**
|
|
@@ -14,18 +22,20 @@ export declare const DOCKER_IMAGE: string;
|
|
|
14
22
|
* @param command - CLI command (bundle, simulate, run)
|
|
15
23
|
* @param args - Command arguments
|
|
16
24
|
* @param options - Global options
|
|
25
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
17
26
|
* @returns Docker command array
|
|
18
27
|
*/
|
|
19
|
-
export declare function buildDockerCommand(command: string, args: string[], options?: GlobalOptions): string[];
|
|
28
|
+
export declare function buildDockerCommand(command: string, args: string[], options?: GlobalOptions, configFile?: string): string[];
|
|
20
29
|
/**
|
|
21
30
|
* Execute command in Docker container
|
|
22
31
|
*
|
|
23
32
|
* @param command - CLI command
|
|
24
33
|
* @param args - Command arguments
|
|
25
34
|
* @param options - Global options
|
|
35
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
26
36
|
* @returns Promise that resolves when command completes
|
|
27
37
|
*/
|
|
28
|
-
export declare function executeInDocker(command: string, args: string[], options?: GlobalOptions): Promise<void>;
|
|
38
|
+
export declare function executeInDocker(command: string, args: string[], options?: GlobalOptions, configFile?: string): Promise<void>;
|
|
29
39
|
/**
|
|
30
40
|
* Check if Docker is available
|
|
31
41
|
*
|
|
@@ -39,4 +49,31 @@ export declare function isDockerAvailable(): Promise<boolean>;
|
|
|
39
49
|
* @returns Promise resolving to true if image exists
|
|
40
50
|
*/
|
|
41
51
|
export declare function imageExists(image?: string): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Build Docker command for run command (production runtime)
|
|
54
|
+
*
|
|
55
|
+
* @param mode - Run mode (collect | serve)
|
|
56
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
57
|
+
* @param options - Runtime options
|
|
58
|
+
* @returns Docker command array
|
|
59
|
+
*/
|
|
60
|
+
export declare function buildDockerRunCommand(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
61
|
+
port?: number;
|
|
62
|
+
host?: string;
|
|
63
|
+
staticDir?: string;
|
|
64
|
+
}): string[];
|
|
65
|
+
/**
|
|
66
|
+
* Execute run command in Docker container (production runtime)
|
|
67
|
+
*
|
|
68
|
+
* @param mode - Run mode (collect | serve)
|
|
69
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
70
|
+
* @param options - Runtime and global options
|
|
71
|
+
* @returns Promise that resolves when command completes
|
|
72
|
+
*/
|
|
73
|
+
export declare function executeRunInDocker(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
74
|
+
port?: number;
|
|
75
|
+
host?: string;
|
|
76
|
+
staticDir?: string;
|
|
77
|
+
silent?: boolean;
|
|
78
|
+
}): Promise<void>;
|
|
42
79
|
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,gBAAgB,QACmC,CAAC;AAEjE;;GAEG;AACH,eAAO,MAAM,oBAAoB,QACsC,CAAC;AAExE;;GAEG;AACH,eAAO,MAAM,YAAY,QAAmB,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,aAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,EAAE,CAgDV;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE,aAAkB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Bf;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAS1D;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,GAAE,MAAyB,GAC/B,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,GAAG,OAAO,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,MAAM,EAAE,CAiDV;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,SAAS,GAAG,OAAO,EACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,OAAO,GAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,CAqBf"}
|
package/dist/core/docker.js
CHANGED
|
@@ -4,30 +4,42 @@
|
|
|
4
4
|
* Handles Docker container execution for CLI commands.
|
|
5
5
|
*/
|
|
6
6
|
import { spawn } from 'child_process';
|
|
7
|
+
import path from 'path';
|
|
7
8
|
/**
|
|
8
|
-
* Docker image
|
|
9
|
+
* Docker image for CLI/build tools (bundle, simulate)
|
|
9
10
|
*/
|
|
10
|
-
export const
|
|
11
|
+
export const CLI_DOCKER_IMAGE = process.env.WALKEROS_CLI_DOCKER_IMAGE || 'walkeros/cli:latest';
|
|
12
|
+
/**
|
|
13
|
+
* Docker image for production runtime (run command)
|
|
14
|
+
*/
|
|
15
|
+
export const RUNTIME_DOCKER_IMAGE = process.env.WALKEROS_RUNTIME_DOCKER_IMAGE || 'walkeros/docker:latest';
|
|
16
|
+
/**
|
|
17
|
+
* @deprecated Use CLI_DOCKER_IMAGE or RUNTIME_DOCKER_IMAGE instead
|
|
18
|
+
*/
|
|
19
|
+
export const DOCKER_IMAGE = CLI_DOCKER_IMAGE;
|
|
11
20
|
/**
|
|
12
21
|
* Build Docker command for executing CLI commands
|
|
13
22
|
*
|
|
14
23
|
* @param command - CLI command (bundle, simulate, run)
|
|
15
24
|
* @param args - Command arguments
|
|
16
25
|
* @param options - Global options
|
|
26
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
17
27
|
* @returns Docker command array
|
|
18
28
|
*/
|
|
19
|
-
export function buildDockerCommand(command, args, options = {}) {
|
|
29
|
+
export function buildDockerCommand(command, args, options = {}, configFile) {
|
|
20
30
|
const cwd = process.cwd();
|
|
21
|
-
const cmd = [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
// Mount
|
|
26
|
-
'-v',
|
|
27
|
-
|
|
28
|
-
'
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
const cmd = ['docker', 'run', '--rm'];
|
|
32
|
+
// Mount config file if provided
|
|
33
|
+
if (configFile) {
|
|
34
|
+
const configPath = path.resolve(cwd, configFile);
|
|
35
|
+
// Mount config file at /config/flow.json (read-only, separate from workspace)
|
|
36
|
+
cmd.push('-v', `${configPath}:/config/flow.json:ro`);
|
|
37
|
+
// Update args to use container path - replace first occurrence of config file path
|
|
38
|
+
args = args.map((arg) => (arg === configFile ? '/config/flow.json' : arg));
|
|
39
|
+
}
|
|
40
|
+
// Mount current directory for output files
|
|
41
|
+
cmd.push('-v', `${cwd}:/workspace`);
|
|
42
|
+
cmd.push('-w', '/workspace');
|
|
31
43
|
// Add user mapping on Linux/Mac to prevent permission issues
|
|
32
44
|
if (process.platform !== 'win32') {
|
|
33
45
|
try {
|
|
@@ -48,8 +60,8 @@ export function buildDockerCommand(command, args, options = {}) {
|
|
|
48
60
|
if (options.silent) {
|
|
49
61
|
cmd.push('-e', 'SILENT=true');
|
|
50
62
|
}
|
|
51
|
-
// Add the Docker image
|
|
52
|
-
cmd.push(
|
|
63
|
+
// Add the Docker image (CLI tools for bundle/simulate)
|
|
64
|
+
cmd.push(CLI_DOCKER_IMAGE);
|
|
53
65
|
// Add the command and arguments
|
|
54
66
|
cmd.push(command, ...args);
|
|
55
67
|
return cmd;
|
|
@@ -60,10 +72,15 @@ export function buildDockerCommand(command, args, options = {}) {
|
|
|
60
72
|
* @param command - CLI command
|
|
61
73
|
* @param args - Command arguments
|
|
62
74
|
* @param options - Global options
|
|
75
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
63
76
|
* @returns Promise that resolves when command completes
|
|
64
77
|
*/
|
|
65
|
-
export async function executeInDocker(command, args, options = {}) {
|
|
66
|
-
|
|
78
|
+
export async function executeInDocker(command, args, options = {}, configFile) {
|
|
79
|
+
// Force --local execution inside container to prevent nested Docker attempts
|
|
80
|
+
// Architecture: Host CLI decides environment (Docker vs local),
|
|
81
|
+
// Container CLI always executes locally (no Docker-in-Docker)
|
|
82
|
+
const containerArgs = [...args, '--local'];
|
|
83
|
+
const dockerCmd = buildDockerCommand(command, containerArgs, options, configFile);
|
|
67
84
|
return new Promise((resolve, reject) => {
|
|
68
85
|
const proc = spawn(dockerCmd[0], dockerCmd.slice(1), {
|
|
69
86
|
stdio: options.silent ? 'ignore' : 'inherit',
|
|
@@ -102,7 +119,7 @@ export async function isDockerAvailable() {
|
|
|
102
119
|
* @param image - Docker image name
|
|
103
120
|
* @returns Promise resolving to true if image exists
|
|
104
121
|
*/
|
|
105
|
-
export async function imageExists(image =
|
|
122
|
+
export async function imageExists(image = CLI_DOCKER_IMAGE) {
|
|
106
123
|
return new Promise((resolve) => {
|
|
107
124
|
const proc = spawn('docker', ['image', 'inspect', image], {
|
|
108
125
|
stdio: 'ignore',
|
|
@@ -111,4 +128,83 @@ export async function imageExists(image = DOCKER_IMAGE) {
|
|
|
111
128
|
proc.on('exit', (code) => resolve(code === 0));
|
|
112
129
|
});
|
|
113
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Build Docker command for run command (production runtime)
|
|
133
|
+
*
|
|
134
|
+
* @param mode - Run mode (collect | serve)
|
|
135
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
136
|
+
* @param options - Runtime options
|
|
137
|
+
* @returns Docker command array
|
|
138
|
+
*/
|
|
139
|
+
export function buildDockerRunCommand(mode, flowPath, options = {}) {
|
|
140
|
+
const cwd = process.cwd();
|
|
141
|
+
const cmd = ['docker', 'run', '--rm'];
|
|
142
|
+
// Set MODE environment variable
|
|
143
|
+
cmd.push('-e', `MODE=${mode}`);
|
|
144
|
+
// Mount flow bundle for collect mode
|
|
145
|
+
if (mode === 'collect' && flowPath) {
|
|
146
|
+
const absoluteFlowPath = path.resolve(cwd, flowPath);
|
|
147
|
+
cmd.push('-v', `${absoluteFlowPath}:/app/flow.mjs:ro`);
|
|
148
|
+
cmd.push('-e', 'FLOW=/app/flow.mjs');
|
|
149
|
+
}
|
|
150
|
+
// Port mapping
|
|
151
|
+
if (options.port !== undefined) {
|
|
152
|
+
cmd.push('-p', `${options.port}:${options.port}`);
|
|
153
|
+
cmd.push('-e', `PORT=${options.port}`);
|
|
154
|
+
}
|
|
155
|
+
// Host
|
|
156
|
+
if (options.host) {
|
|
157
|
+
cmd.push('-e', `HOST=${options.host}`);
|
|
158
|
+
}
|
|
159
|
+
// Static directory for serve mode
|
|
160
|
+
if (mode === 'serve' && options.staticDir) {
|
|
161
|
+
const absoluteStaticDir = path.resolve(cwd, options.staticDir);
|
|
162
|
+
cmd.push('-v', `${absoluteStaticDir}:/app/dist:ro`);
|
|
163
|
+
cmd.push('-e', 'STATIC_DIR=/app/dist');
|
|
164
|
+
}
|
|
165
|
+
// Add user mapping on Linux/Mac to prevent permission issues
|
|
166
|
+
if (process.platform !== 'win32') {
|
|
167
|
+
try {
|
|
168
|
+
const uid = process.getuid?.();
|
|
169
|
+
const gid = process.getgid?.();
|
|
170
|
+
if (uid !== undefined && gid !== undefined) {
|
|
171
|
+
cmd.push('--user', `${uid}:${gid}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Ignore if not available
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Add the runtime Docker image
|
|
179
|
+
cmd.push(RUNTIME_DOCKER_IMAGE);
|
|
180
|
+
return cmd;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Execute run command in Docker container (production runtime)
|
|
184
|
+
*
|
|
185
|
+
* @param mode - Run mode (collect | serve)
|
|
186
|
+
* @param flowPath - Path to pre-built .mjs bundle (for collect mode)
|
|
187
|
+
* @param options - Runtime and global options
|
|
188
|
+
* @returns Promise that resolves when command completes
|
|
189
|
+
*/
|
|
190
|
+
export async function executeRunInDocker(mode, flowPath, options = {}) {
|
|
191
|
+
const dockerCmd = buildDockerRunCommand(mode, flowPath, options);
|
|
192
|
+
return new Promise((resolve, reject) => {
|
|
193
|
+
const proc = spawn(dockerCmd[0], dockerCmd.slice(1), {
|
|
194
|
+
stdio: options.silent ? 'ignore' : 'inherit',
|
|
195
|
+
shell: false,
|
|
196
|
+
});
|
|
197
|
+
proc.on('error', (error) => {
|
|
198
|
+
reject(new Error(`Docker execution failed: ${error.message}`));
|
|
199
|
+
});
|
|
200
|
+
proc.on('exit', (code) => {
|
|
201
|
+
if (code === 0) {
|
|
202
|
+
resolve();
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
reject(new Error(`Docker command exited with code ${code}`));
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
114
210
|
//# sourceMappingURL=docker.js.map
|
package/dist/core/docker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"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"}
|
package/dist/core/execution.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export type ExecuteHandler = () => Promise<void>;
|
|
|
28
28
|
* @param dockerArgs - Docker command arguments
|
|
29
29
|
* @param options - Global options
|
|
30
30
|
* @param logger - Logger instance
|
|
31
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
31
32
|
*/
|
|
32
|
-
export declare function executeCommand(localHandler: ExecuteHandler, dockerCommand: string, dockerArgs: string[], options: GlobalOptions, logger?: Logger): Promise<void>;
|
|
33
|
+
export declare function executeCommand(localHandler: ExecuteHandler, dockerCommand: string, dockerArgs: string[], options: GlobalOptions, logger?: Logger, configFile?: string): Promise<void>;
|
|
33
34
|
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAEtE;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjD;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,YAAY,EAAE,cAAc,EAC5B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,EACpB,OAAO,EAAE,aAAa,EACtB,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoCf"}
|
package/dist/core/execution.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Determines whether to execute commands locally or in Docker.
|
|
5
5
|
*/
|
|
6
|
-
import { executeInDocker, isDockerAvailable } from './docker';
|
|
6
|
+
import { executeInDocker, isDockerAvailable, } from './docker';
|
|
7
7
|
/**
|
|
8
8
|
* Get execution mode from options
|
|
9
9
|
*
|
|
@@ -21,8 +21,9 @@ export function getExecutionMode(options) {
|
|
|
21
21
|
* @param dockerArgs - Docker command arguments
|
|
22
22
|
* @param options - Global options
|
|
23
23
|
* @param logger - Logger instance
|
|
24
|
+
* @param configFile - Optional config file path to mount in Docker
|
|
24
25
|
*/
|
|
25
|
-
export async function executeCommand(localHandler, dockerCommand, dockerArgs, options, logger) {
|
|
26
|
+
export async function executeCommand(localHandler, dockerCommand, dockerArgs, options, logger, configFile) {
|
|
26
27
|
const mode = getExecutionMode(options);
|
|
27
28
|
// Handle dry-run
|
|
28
29
|
if (options.dryRun) {
|
|
@@ -51,7 +52,7 @@ export async function executeCommand(localHandler, dockerCommand, dockerArgs, op
|
|
|
51
52
|
if (logger && !options.silent) {
|
|
52
53
|
logger.info('🐳 Executing in Docker container...');
|
|
53
54
|
}
|
|
54
|
-
await executeInDocker(dockerCommand, dockerArgs, options);
|
|
55
|
+
await executeInDocker(dockerCommand, dockerArgs, options, configFile);
|
|
55
56
|
}
|
|
56
57
|
}
|
|
57
58
|
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EAEf,iBAAiB,GAClB,MAAM,UAAU,CAAC;AAQlB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5C,CAAC;AAOD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,YAA4B,EAC5B,aAAqB,EACrB,UAAoB,EACpB,OAAsB,EACtB,MAAe,EACf,UAAmB;IAEnB,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAEvC,iBAAiB;IACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,kCAAkC,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtF,MAAM,EAAE,IAAI,CAAC,4BAA4B,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,IAAI,CACV,oCAAoC,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAC5E,CAAC;QACJ,CAAC;QACD,OAAO;IACT,CAAC;IAED,wBAAwB;IACxB,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC3C,CAAC;QACD,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,cAAc;QACd,MAAM,eAAe,GAAG,MAAM,iBAAiB,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,eAAe,CAAC,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;AACH,CAAC"}
|