@walkeros/cli 0.5.1-next.1 → 0.6.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/CHANGELOG.md +28 -0
- package/README.md +51 -28
- package/dist/__tests__/bundle/bundler.test.js +0 -1
- package/dist/__tests__/bundle/bundler.test.js.map +1 -1
- package/dist/__tests__/cli-e2e.test.js +26 -11
- package/dist/__tests__/cli-e2e.test.js.map +1 -1
- package/dist/__tests__/cli.test.js +2 -3
- package/dist/__tests__/cli.test.js.map +1 -1
- package/dist/__tests__/config-loader.test.js +6 -6
- package/dist/__tests__/config-loader.test.js.map +1 -1
- package/dist/__tests__/core/config.test.js +19 -12
- package/dist/__tests__/core/config.test.js.map +1 -1
- package/dist/__tests__/integration/bundle-run.integration.test.js +5 -5
- package/dist/__tests__/integration/bundle-run.integration.test.js.map +1 -1
- package/dist/__tests__/smoke/production.smoke.test.js +6 -6
- package/dist/__tests__/smoke/production.smoke.test.js.map +1 -1
- package/dist/commands/bundle/bundler.d.ts.map +1 -1
- package/dist/commands/bundle/bundler.js +18 -32
- package/dist/commands/bundle/bundler.js.map +1 -1
- package/dist/commands/bundle/index.d.ts +4 -2
- package/dist/commands/bundle/index.d.ts.map +1 -1
- package/dist/commands/bundle/index.js +99 -115
- package/dist/commands/bundle/index.js.map +1 -1
- package/dist/commands/bundle/package-manager.d.ts.map +1 -1
- package/dist/commands/bundle/package-manager.js +36 -13
- package/dist/commands/bundle/package-manager.js.map +1 -1
- package/dist/commands/cache.d.ts +4 -0
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +38 -14
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/push/index.d.ts.map +1 -1
- package/dist/commands/push/index.js +121 -131
- package/dist/commands/push/index.js.map +1 -1
- package/dist/commands/push/types.d.ts +3 -2
- package/dist/commands/push/types.d.ts.map +1 -1
- package/dist/commands/run/__tests__/run.integration.test.d.ts +1 -2
- package/dist/commands/run/__tests__/run.integration.test.d.ts.map +1 -1
- package/dist/commands/run/__tests__/run.integration.test.js +8 -9
- package/dist/commands/run/__tests__/run.integration.test.js.map +1 -1
- package/dist/commands/run/execution.js +1 -1
- package/dist/commands/run/execution.js.map +1 -1
- package/dist/commands/run/index.d.ts +1 -2
- package/dist/commands/run/index.d.ts.map +1 -1
- package/dist/commands/run/index.js +22 -59
- package/dist/commands/run/index.js.map +1 -1
- package/dist/commands/run/types.d.ts +8 -3
- package/dist/commands/run/types.d.ts.map +1 -1
- package/dist/commands/run/types.js +1 -1
- package/dist/commands/simulate/env-loader.d.ts.map +1 -1
- package/dist/commands/simulate/env-loader.js +1 -3
- package/dist/commands/simulate/env-loader.js.map +1 -1
- package/dist/commands/simulate/index.d.ts.map +1 -1
- package/dist/commands/simulate/index.js +47 -50
- package/dist/commands/simulate/index.js.map +1 -1
- package/dist/commands/simulate/simulator.js +3 -2
- package/dist/commands/simulate/simulator.js.map +1 -1
- package/dist/commands/simulate/types.d.ts +4 -2
- package/dist/commands/simulate/types.d.ts.map +1 -1
- package/dist/config/build-defaults.d.ts.map +1 -1
- package/dist/config/build-defaults.js +0 -2
- package/dist/config/build-defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +9 -11
- package/dist/config/loader.js.map +1 -1
- package/dist/config/utils.d.ts +0 -13
- package/dist/config/utils.d.ts.map +1 -1
- package/dist/config/utils.js +6 -28
- package/dist/config/utils.js.map +1 -1
- package/dist/core/build-cache.d.ts +4 -4
- package/dist/core/build-cache.d.ts.map +1 -1
- package/dist/core/build-cache.js +10 -9
- package/dist/core/build-cache.js.map +1 -1
- package/dist/core/index.d.ts +1 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -3
- package/dist/core/index.js.map +1 -1
- package/dist/core/logger.d.ts +5 -3
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +31 -34
- package/dist/core/logger.js.map +1 -1
- package/dist/core/tmp.d.ts +27 -0
- package/dist/core/tmp.d.ts.map +1 -0
- package/dist/core/tmp.js +36 -0
- package/dist/core/tmp.js.map +1 -0
- package/dist/index.d.ts +20 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +630 -761
- package/dist/index.js.map +1 -1
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +10 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/main.d.ts +2 -0
- package/dist/runtime/main.d.ts.map +1 -0
- package/dist/runtime/main.js +268 -0
- package/dist/runtime/main.js.map +1 -0
- package/dist/runtime/runner.d.ts +20 -0
- package/dist/runtime/runner.d.ts.map +1 -0
- package/dist/runtime/runner.js +72 -0
- package/dist/runtime/runner.js.map +1 -0
- package/dist/runtime/serve.d.ts +19 -0
- package/dist/runtime/serve.d.ts.map +1 -0
- package/dist/runtime/serve.js +97 -0
- package/dist/runtime/serve.js.map +1 -0
- package/dist/types/global.d.ts +0 -13
- package/dist/types/global.d.ts.map +1 -1
- package/dist/types/global.js +0 -6
- package/dist/types/global.js.map +1 -1
- package/dist/version.d.ts +3 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +27 -0
- package/dist/version.js.map +1 -0
- package/package.json +7 -4
- package/dist/core/docker.d.ts +0 -99
- package/dist/core/docker.d.ts.map +0 -1
- package/dist/core/docker.js +0 -253
- package/dist/core/docker.js.map +0 -1
- package/dist/core/execution.d.ts +0 -34
- package/dist/core/execution.d.ts.map +0 -1
- package/dist/core/execution.js +0 -64
- package/dist/core/execution.js.map +0 -1
- package/dist/core/temp-manager.d.ts +0 -51
- package/dist/core/temp-manager.d.ts.map +0 -1
- package/dist/core/temp-manager.js +0 -73
- package/dist/core/temp-manager.js.map +0 -1
package/dist/version.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
import { dirname, join } from 'path';
|
|
4
|
+
const versionFilename = fileURLToPath(import.meta.url);
|
|
5
|
+
const versionDirname = dirname(versionFilename);
|
|
6
|
+
/**
|
|
7
|
+
* Find package.json in parent directories
|
|
8
|
+
* Handles both source (src/) and bundled (dist/) contexts
|
|
9
|
+
*/
|
|
10
|
+
function findPackageJson() {
|
|
11
|
+
const paths = [
|
|
12
|
+
join(versionDirname, '../package.json'), // dist/ or src/
|
|
13
|
+
join(versionDirname, '../../package.json'), // src/core/ (not used, but safe)
|
|
14
|
+
];
|
|
15
|
+
for (const p of paths) {
|
|
16
|
+
try {
|
|
17
|
+
return readFileSync(p, 'utf-8');
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// Continue to next path
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return JSON.stringify({ version: '0.0.0' });
|
|
24
|
+
}
|
|
25
|
+
/** CLI package version */
|
|
26
|
+
export const VERSION = JSON.parse(findPackageJson()).version;
|
|
27
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,MAAM,eAAe,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvD,MAAM,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAEhD;;;GAGG;AACH,SAAS,eAAe;IACtB,MAAM,KAAK,GAAG;QACZ,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE,gBAAgB;QACzD,IAAI,CAAC,cAAc,EAAE,oBAAoB,CAAC,EAAE,iCAAiC;KAC9E,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,0BAA0B;AAC1B,MAAM,CAAC,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walkeros/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "walkerOS CLI - Bundle and deploy walkerOS components",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -33,17 +33,20 @@
|
|
|
33
33
|
"docker:publish": "bash scripts/publish-docker.sh"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@walkeros/core": "
|
|
37
|
-
"@walkeros/
|
|
38
|
-
"@walkeros/server-core": "0.5.1-next.0",
|
|
36
|
+
"@walkeros/core": "0.6.0",
|
|
37
|
+
"@walkeros/server-core": "0.6.0",
|
|
39
38
|
"chalk": "^5.6.2",
|
|
40
39
|
"commander": "^14.0.2",
|
|
40
|
+
"cors": "^2.8.5",
|
|
41
41
|
"esbuild": "^0.27.1",
|
|
42
|
+
"express": "^4.21.2",
|
|
42
43
|
"fs-extra": "^11.3.2",
|
|
43
44
|
"jsdom": "^27.3.0",
|
|
44
45
|
"pacote": "^21.0.4"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
48
|
+
"@types/cors": "^2.8.17",
|
|
49
|
+
"@types/express": "^5.0.0",
|
|
47
50
|
"@types/fs-extra": "^11.0.4",
|
|
48
51
|
"@types/jsdom": "^27.0.0",
|
|
49
52
|
"@types/pacote": "^11.1.8",
|
package/dist/core/docker.d.ts
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Docker Execution Utilities
|
|
3
|
-
*
|
|
4
|
-
* Handles Docker container execution for CLI commands.
|
|
5
|
-
*/
|
|
6
|
-
import type { GlobalOptions } from '../types/global.js';
|
|
7
|
-
/**
|
|
8
|
-
* Docker image for CLI/build tools (bundle, simulate)
|
|
9
|
-
* Uses explicit version by default, can be overridden with env var
|
|
10
|
-
*/
|
|
11
|
-
export declare const CLI_DOCKER_IMAGE: string;
|
|
12
|
-
/**
|
|
13
|
-
* Docker image for production runtime (run command)
|
|
14
|
-
* Uses explicit version by default, can be overridden with env var
|
|
15
|
-
*/
|
|
16
|
-
export declare const RUNTIME_DOCKER_IMAGE: string;
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated Use CLI_DOCKER_IMAGE or RUNTIME_DOCKER_IMAGE instead
|
|
19
|
-
*/
|
|
20
|
-
export declare const DOCKER_IMAGE: string;
|
|
21
|
-
/**
|
|
22
|
-
* Build common Docker arguments from CLI options
|
|
23
|
-
*
|
|
24
|
-
* Extracts common flags (config, json, verbose, silent) that are shared
|
|
25
|
-
* across bundle and simulate commands. Command-specific flags should be
|
|
26
|
-
* added after calling this function.
|
|
27
|
-
*
|
|
28
|
-
* @param options - CLI options containing common flags
|
|
29
|
-
* @returns Array of command-line arguments starting with config path
|
|
30
|
-
*/
|
|
31
|
-
export declare function buildCommonDockerArgs(options: {
|
|
32
|
-
config: string;
|
|
33
|
-
json?: boolean;
|
|
34
|
-
verbose?: boolean;
|
|
35
|
-
silent?: boolean;
|
|
36
|
-
}): string[];
|
|
37
|
-
/**
|
|
38
|
-
* Build Docker command for executing CLI commands
|
|
39
|
-
*
|
|
40
|
-
* @param command - CLI command (bundle, simulate, run)
|
|
41
|
-
* @param args - Command arguments
|
|
42
|
-
* @param options - Global options
|
|
43
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
44
|
-
* @returns Docker command array
|
|
45
|
-
*/
|
|
46
|
-
export declare function buildDockerCommand(command: string, args: string[], options?: GlobalOptions, configFile?: string): string[];
|
|
47
|
-
/**
|
|
48
|
-
* Execute command in Docker container
|
|
49
|
-
*
|
|
50
|
-
* @param command - CLI command
|
|
51
|
-
* @param args - Command arguments
|
|
52
|
-
* @param options - Global options
|
|
53
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
54
|
-
* @returns Promise that resolves when command completes
|
|
55
|
-
*/
|
|
56
|
-
export declare function executeInDocker(command: string, args: string[], options?: GlobalOptions, configFile?: string): Promise<void>;
|
|
57
|
-
/**
|
|
58
|
-
* Check if Docker is available
|
|
59
|
-
*
|
|
60
|
-
* @returns Promise resolving to true if Docker is available
|
|
61
|
-
*/
|
|
62
|
-
export declare function isDockerAvailable(): Promise<boolean>;
|
|
63
|
-
/**
|
|
64
|
-
* Check if Docker image exists locally
|
|
65
|
-
*
|
|
66
|
-
* @param image - Docker image name
|
|
67
|
-
* @returns Promise resolving to true if image exists
|
|
68
|
-
*/
|
|
69
|
-
export declare function imageExists(image?: string): Promise<boolean>;
|
|
70
|
-
/**
|
|
71
|
-
* Build Docker command for run command (production runtime)
|
|
72
|
-
*
|
|
73
|
-
* @param mode - Run mode (collect | serve)
|
|
74
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
75
|
-
* @param options - Runtime options
|
|
76
|
-
* @returns Docker command array
|
|
77
|
-
*/
|
|
78
|
-
export declare function buildDockerRunCommand(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
79
|
-
port?: number;
|
|
80
|
-
host?: string;
|
|
81
|
-
serveName?: string;
|
|
82
|
-
servePath?: string;
|
|
83
|
-
}): string[];
|
|
84
|
-
/**
|
|
85
|
-
* Execute run command in Docker container (production runtime)
|
|
86
|
-
*
|
|
87
|
-
* @param mode - Run mode (collect | serve)
|
|
88
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
89
|
-
* @param options - Runtime and global options
|
|
90
|
-
* @returns Promise that resolves when command completes
|
|
91
|
-
*/
|
|
92
|
-
export declare function executeRunInDocker(mode: 'collect' | 'serve', flowPath: string | null, options?: {
|
|
93
|
-
port?: number;
|
|
94
|
-
host?: string;
|
|
95
|
-
serveName?: string;
|
|
96
|
-
servePath?: string;
|
|
97
|
-
silent?: boolean;
|
|
98
|
-
}): Promise<void>;
|
|
99
|
-
//# sourceMappingURL=docker.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,QAC2C,CAAC;AAEzE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAEI,CAAC;AAEtC;;GAEG;AACH,eAAO,MAAM,YAAY,QAAmB,CAAC;AAE7C;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,MAAM,EAAE,CASX;AAED;;;;;;;;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,CAiDV;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,CAiCf;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;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACf,GACL,MAAM,EAAE,CA8DV;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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|
package/dist/core/docker.js
DELETED
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Docker Execution Utilities
|
|
3
|
-
*
|
|
4
|
-
* Handles Docker container execution for CLI commands.
|
|
5
|
-
*/
|
|
6
|
-
import { spawn } from 'child_process';
|
|
7
|
-
import path from 'path';
|
|
8
|
-
import { VERSION as DOCKER_VERSION } from '@walkeros/docker';
|
|
9
|
-
import { isUrl } from '../config/utils.js';
|
|
10
|
-
const CLI_VERSION = typeof __VERSION__ !== 'undefined' ? __VERSION__ : '0.0.0';
|
|
11
|
-
/**
|
|
12
|
-
* Docker image for CLI/build tools (bundle, simulate)
|
|
13
|
-
* Uses explicit version by default, can be overridden with env var
|
|
14
|
-
*/
|
|
15
|
-
export const CLI_DOCKER_IMAGE = process.env.WALKEROS_CLI_DOCKER_IMAGE || `walkeros/cli:${CLI_VERSION}`;
|
|
16
|
-
/**
|
|
17
|
-
* Docker image for production runtime (run command)
|
|
18
|
-
* Uses explicit version by default, can be overridden with env var
|
|
19
|
-
*/
|
|
20
|
-
export const RUNTIME_DOCKER_IMAGE = process.env.WALKEROS_RUNTIME_DOCKER_IMAGE ||
|
|
21
|
-
`walkeros/docker:${DOCKER_VERSION}`;
|
|
22
|
-
/**
|
|
23
|
-
* @deprecated Use CLI_DOCKER_IMAGE or RUNTIME_DOCKER_IMAGE instead
|
|
24
|
-
*/
|
|
25
|
-
export const DOCKER_IMAGE = CLI_DOCKER_IMAGE;
|
|
26
|
-
/**
|
|
27
|
-
* Build common Docker arguments from CLI options
|
|
28
|
-
*
|
|
29
|
-
* Extracts common flags (config, json, verbose, silent) that are shared
|
|
30
|
-
* across bundle and simulate commands. Command-specific flags should be
|
|
31
|
-
* added after calling this function.
|
|
32
|
-
*
|
|
33
|
-
* @param options - CLI options containing common flags
|
|
34
|
-
* @returns Array of command-line arguments starting with config path
|
|
35
|
-
*/
|
|
36
|
-
export function buildCommonDockerArgs(options) {
|
|
37
|
-
const args = [options.config];
|
|
38
|
-
// Common flags
|
|
39
|
-
if (options.json)
|
|
40
|
-
args.push('--json');
|
|
41
|
-
if (options.verbose)
|
|
42
|
-
args.push('--verbose');
|
|
43
|
-
if (options.silent)
|
|
44
|
-
args.push('--silent');
|
|
45
|
-
return args;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Build Docker command for executing CLI commands
|
|
49
|
-
*
|
|
50
|
-
* @param command - CLI command (bundle, simulate, run)
|
|
51
|
-
* @param args - Command arguments
|
|
52
|
-
* @param options - Global options
|
|
53
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
54
|
-
* @returns Docker command array
|
|
55
|
-
*/
|
|
56
|
-
export function buildDockerCommand(command, args, options = {}, configFile) {
|
|
57
|
-
const cwd = process.cwd();
|
|
58
|
-
const cmd = ['docker', 'run', '--rm'];
|
|
59
|
-
// Mount config file if provided (only for local files, not URLs)
|
|
60
|
-
if (configFile && !isUrl(configFile)) {
|
|
61
|
-
const configPath = path.resolve(cwd, configFile);
|
|
62
|
-
// Mount config file at /config/flow.json (read-only, separate from workspace)
|
|
63
|
-
cmd.push('-v', `${configPath}:/config/flow.json:ro`);
|
|
64
|
-
// Update args to use container path - replace first occurrence of config file path
|
|
65
|
-
args = args.map((arg) => (arg === configFile ? '/config/flow.json' : arg));
|
|
66
|
-
}
|
|
67
|
-
// For URLs, pass them through as-is - container will download them
|
|
68
|
-
// Mount current directory for output files
|
|
69
|
-
cmd.push('-v', `${cwd}:/workspace`);
|
|
70
|
-
cmd.push('-w', '/workspace');
|
|
71
|
-
// Add user mapping on Linux/Mac to prevent permission issues
|
|
72
|
-
if (process.platform !== 'win32') {
|
|
73
|
-
try {
|
|
74
|
-
const uid = process.getuid?.();
|
|
75
|
-
const gid = process.getgid?.();
|
|
76
|
-
if (uid !== undefined && gid !== undefined) {
|
|
77
|
-
cmd.push('--user', `${uid}:${gid}`);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
// Ignore if not available
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
// Pass through environment variables
|
|
85
|
-
if (options.verbose) {
|
|
86
|
-
cmd.push('-e', 'VERBOSE=true');
|
|
87
|
-
}
|
|
88
|
-
if (options.silent) {
|
|
89
|
-
cmd.push('-e', 'SILENT=true');
|
|
90
|
-
}
|
|
91
|
-
// Add the Docker image (CLI tools for bundle/simulate)
|
|
92
|
-
cmd.push(CLI_DOCKER_IMAGE);
|
|
93
|
-
// Add the command and arguments
|
|
94
|
-
cmd.push(command, ...args);
|
|
95
|
-
return cmd;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Execute command in Docker container
|
|
99
|
-
*
|
|
100
|
-
* @param command - CLI command
|
|
101
|
-
* @param args - Command arguments
|
|
102
|
-
* @param options - Global options
|
|
103
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
104
|
-
* @returns Promise that resolves when command completes
|
|
105
|
-
*/
|
|
106
|
-
export async function executeInDocker(command, args, options = {}, configFile) {
|
|
107
|
-
// Force --local execution inside container to prevent nested Docker attempts
|
|
108
|
-
// Architecture: Host CLI decides environment (Docker vs local),
|
|
109
|
-
// Container CLI always executes locally (no Docker-in-Docker)
|
|
110
|
-
const containerArgs = [...args, '--local'];
|
|
111
|
-
const dockerCmd = buildDockerCommand(command, containerArgs, options, configFile);
|
|
112
|
-
return new Promise((resolve, reject) => {
|
|
113
|
-
const proc = spawn(dockerCmd[0], dockerCmd.slice(1), {
|
|
114
|
-
stdio: options.silent ? 'ignore' : 'inherit',
|
|
115
|
-
shell: false,
|
|
116
|
-
});
|
|
117
|
-
proc.on('error', (error) => {
|
|
118
|
-
reject(new Error(`Docker execution failed: ${error.message}`));
|
|
119
|
-
});
|
|
120
|
-
proc.on('exit', (code) => {
|
|
121
|
-
if (code === 0) {
|
|
122
|
-
resolve();
|
|
123
|
-
}
|
|
124
|
-
else {
|
|
125
|
-
// Docker already logged the error via stdio inherit
|
|
126
|
-
// Just exit with same code - no duplicate message
|
|
127
|
-
process.exit(code || 1);
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Check if Docker is available
|
|
134
|
-
*
|
|
135
|
-
* @returns Promise resolving to true if Docker is available
|
|
136
|
-
*/
|
|
137
|
-
export async function isDockerAvailable() {
|
|
138
|
-
return new Promise((resolve) => {
|
|
139
|
-
const proc = spawn('docker', ['--version'], {
|
|
140
|
-
stdio: 'ignore',
|
|
141
|
-
});
|
|
142
|
-
proc.on('error', () => resolve(false));
|
|
143
|
-
proc.on('exit', (code) => resolve(code === 0));
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Check if Docker image exists locally
|
|
148
|
-
*
|
|
149
|
-
* @param image - Docker image name
|
|
150
|
-
* @returns Promise resolving to true if image exists
|
|
151
|
-
*/
|
|
152
|
-
export async function imageExists(image = CLI_DOCKER_IMAGE) {
|
|
153
|
-
return new Promise((resolve) => {
|
|
154
|
-
const proc = spawn('docker', ['image', 'inspect', image], {
|
|
155
|
-
stdio: 'ignore',
|
|
156
|
-
});
|
|
157
|
-
proc.on('error', () => resolve(false));
|
|
158
|
-
proc.on('exit', (code) => resolve(code === 0));
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* Build Docker command for run command (production runtime)
|
|
163
|
-
*
|
|
164
|
-
* @param mode - Run mode (collect | serve)
|
|
165
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
166
|
-
* @param options - Runtime options
|
|
167
|
-
* @returns Docker command array
|
|
168
|
-
*/
|
|
169
|
-
export function buildDockerRunCommand(mode, flowPath, options = {}) {
|
|
170
|
-
const cwd = process.cwd();
|
|
171
|
-
const cmd = ['docker', 'run', '--rm'];
|
|
172
|
-
// Set MODE environment variable
|
|
173
|
-
cmd.push('-e', `MODE=${mode}`);
|
|
174
|
-
// Mount entire dist folder for collect mode (includes bundle + shared folders)
|
|
175
|
-
// Must mount to /app/dist (not /app) to preserve container's node_modules
|
|
176
|
-
// This allows relative paths like ./shared/credentials/sa.json to work
|
|
177
|
-
if (mode === 'collect' && flowPath) {
|
|
178
|
-
const absoluteFlowPath = path.resolve(cwd, flowPath);
|
|
179
|
-
const flowDir = path.dirname(absoluteFlowPath);
|
|
180
|
-
const flowFile = path.basename(absoluteFlowPath);
|
|
181
|
-
cmd.push('-v', `${flowDir}:/app/dist:ro`);
|
|
182
|
-
cmd.push('-e', `FLOW=/app/dist/${flowFile}`);
|
|
183
|
-
}
|
|
184
|
-
// Mount custom file for serve mode
|
|
185
|
-
if (mode === 'serve' && flowPath) {
|
|
186
|
-
const absoluteFilePath = path.resolve(cwd, flowPath);
|
|
187
|
-
cmd.push('-v', `${absoluteFilePath}:/app/bundle.mjs:ro`);
|
|
188
|
-
cmd.push('-e', 'FILE_PATH=/app/bundle.mjs');
|
|
189
|
-
}
|
|
190
|
-
// Port mapping - always map port for serve mode, use default if not specified
|
|
191
|
-
const port = options.port !== undefined ? options.port : 8080;
|
|
192
|
-
cmd.push('-p', `${port}:${port}`);
|
|
193
|
-
cmd.push('-e', `PORT=${port}`);
|
|
194
|
-
// Host
|
|
195
|
-
if (options.host) {
|
|
196
|
-
cmd.push('-e', `HOST=${options.host}`);
|
|
197
|
-
}
|
|
198
|
-
// Serve name (filename in URL)
|
|
199
|
-
if (options.serveName) {
|
|
200
|
-
cmd.push('-e', `SERVE_NAME=${options.serveName}`);
|
|
201
|
-
}
|
|
202
|
-
// Serve path (URL directory path)
|
|
203
|
-
if (options.servePath) {
|
|
204
|
-
cmd.push('-e', `SERVE_PATH=${options.servePath}`);
|
|
205
|
-
}
|
|
206
|
-
// Add user mapping on Linux/Mac to prevent permission issues
|
|
207
|
-
if (process.platform !== 'win32') {
|
|
208
|
-
try {
|
|
209
|
-
const uid = process.getuid?.();
|
|
210
|
-
const gid = process.getgid?.();
|
|
211
|
-
if (uid !== undefined && gid !== undefined) {
|
|
212
|
-
cmd.push('--user', `${uid}:${gid}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
// Ignore if not available
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
// Add the runtime Docker image
|
|
220
|
-
cmd.push(RUNTIME_DOCKER_IMAGE);
|
|
221
|
-
return cmd;
|
|
222
|
-
}
|
|
223
|
-
/**
|
|
224
|
-
* Execute run command in Docker container (production runtime)
|
|
225
|
-
*
|
|
226
|
-
* @param mode - Run mode (collect | serve)
|
|
227
|
-
* @param flowPath - Path to pre-built .mjs bundle (for collect mode) or custom file (for serve mode)
|
|
228
|
-
* @param options - Runtime and global options
|
|
229
|
-
* @returns Promise that resolves when command completes
|
|
230
|
-
*/
|
|
231
|
-
export async function executeRunInDocker(mode, flowPath, options = {}) {
|
|
232
|
-
const dockerCmd = buildDockerRunCommand(mode, flowPath, options);
|
|
233
|
-
return new Promise((resolve, reject) => {
|
|
234
|
-
const proc = spawn(dockerCmd[0], dockerCmd.slice(1), {
|
|
235
|
-
stdio: options.silent ? 'ignore' : 'inherit',
|
|
236
|
-
shell: false,
|
|
237
|
-
});
|
|
238
|
-
proc.on('error', (error) => {
|
|
239
|
-
reject(new Error(`Docker execution failed: ${error.message}`));
|
|
240
|
-
});
|
|
241
|
-
proc.on('exit', (code) => {
|
|
242
|
-
if (code === 0) {
|
|
243
|
-
resolve();
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
// Docker already logged the error via stdio inherit
|
|
247
|
-
// Just exit with same code - no duplicate message
|
|
248
|
-
process.exit(code || 1);
|
|
249
|
-
}
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
|
-
}
|
|
253
|
-
//# sourceMappingURL=docker.js.map
|
package/dist/core/docker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/core/docker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAK3C,MAAM,WAAW,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,gBAAgB,WAAW,EAAE,CAAC;AAEzE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,OAAO,CAAC,GAAG,CAAC,6BAA6B;IACzC,mBAAmB,cAAc,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE7C;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAKrC;IACC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B,eAAe;IACf,IAAI,OAAO,CAAC,IAAI;QAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAe,EACf,IAAc,EACd,UAAyB,EAAE,EAC3B,UAAmB;IAEnB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtC,iEAAiE;IACjE,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAEjD,8EAA8E;QAC9E,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,UAAU,uBAAuB,CAAC,CAAC;QAErD,mFAAmF;QACnF,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7E,CAAC;IACD,mEAAmE;IAEnE,2CAA2C;IAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,CAAC,CAAC;IACpC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAE7B,6DAA6D;IAC7D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAChC,CAAC;IAED,uDAAuD;IACvD,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE3B,gCAAgC;IAChC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IAE3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,IAAc,EACd,UAAyB,EAAE,EAC3B,UAAmB;IAEnB,6EAA6E;IAC7E,gEAAgE;IAChE,8DAA8D;IAC9D,MAAM,aAAa,GAAG,CAAC,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,kBAAkB,CAClC,OAAO,EACP,aAAa,EACb,OAAO,EACP,UAAU,CACX,CAAC;IAEF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACnD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,kDAAkD;gBAClD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE;YAC1C,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,QAAgB,gBAAgB;IAEhC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE;YACxD,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAyB,EACzB,QAAuB,EACvB,UAKI,EAAE;IAEN,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtC,gCAAgC;IAChC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAE/B,+EAA+E;IAC/E,0EAA0E;IAC1E,uEAAuE;IACvE,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,eAAe,CAAC,CAAC;QAC1C,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,gBAAgB,qBAAqB,CAAC,CAAC;QACzD,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAC;IAC9C,CAAC;IAED,8EAA8E;IAC9E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAE/B,OAAO;IACP,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,+BAA+B;IAC/B,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,kCAAkC;IAClC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,6DAA6D;IAC7D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC/B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBAC3C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE/B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAyB,EACzB,QAAuB,EACvB,UAMI,EAAE;IAEN,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACnD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YAC5C,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,kDAAkD;gBAClD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/core/execution.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execution Mode Handler
|
|
3
|
-
*
|
|
4
|
-
* Determines whether to execute commands locally or in Docker.
|
|
5
|
-
*/
|
|
6
|
-
import type { GlobalOptions } from '../types/global.js';
|
|
7
|
-
import type { Logger } from './logger.js';
|
|
8
|
-
/**
|
|
9
|
-
* Execution mode
|
|
10
|
-
*/
|
|
11
|
-
export type ExecutionMode = 'local' | 'docker';
|
|
12
|
-
/**
|
|
13
|
-
* Get execution mode from options
|
|
14
|
-
*
|
|
15
|
-
* @param options - Global options
|
|
16
|
-
* @returns Execution mode
|
|
17
|
-
*/
|
|
18
|
-
export declare function getExecutionMode(options: GlobalOptions): ExecutionMode;
|
|
19
|
-
/**
|
|
20
|
-
* Execute command handler type
|
|
21
|
-
*/
|
|
22
|
-
export type ExecuteHandler = () => Promise<void>;
|
|
23
|
-
/**
|
|
24
|
-
* Execute command based on mode
|
|
25
|
-
*
|
|
26
|
-
* @param localHandler - Function to execute locally
|
|
27
|
-
* @param dockerCommand - Docker command name
|
|
28
|
-
* @param dockerArgs - Docker command arguments
|
|
29
|
-
* @param options - Global options
|
|
30
|
-
* @param logger - Logger instance
|
|
31
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
32
|
-
*/
|
|
33
|
-
export declare function executeCommand(localHandler: ExecuteHandler, dockerCommand: string, dockerArgs: string[], options: GlobalOptions, logger?: Logger, configFile?: string): Promise<void>;
|
|
34
|
-
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAQtE;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
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Execution Mode Handler
|
|
3
|
-
*
|
|
4
|
-
* Determines whether to execute commands locally or in Docker.
|
|
5
|
-
*/
|
|
6
|
-
import { executeInDocker, isDockerAvailable, } from './docker.js';
|
|
7
|
-
/**
|
|
8
|
-
* Get execution mode from options
|
|
9
|
-
*
|
|
10
|
-
* @param options - Global options
|
|
11
|
-
* @returns Execution mode
|
|
12
|
-
*/
|
|
13
|
-
export function getExecutionMode(options) {
|
|
14
|
-
// Force local mode if:
|
|
15
|
-
// 1. --local flag is provided, OR
|
|
16
|
-
// 2. Running inside a Docker container (WALKEROS_CONTAINER env var)
|
|
17
|
-
if (options.local || process.env.WALKEROS_CONTAINER === 'true') {
|
|
18
|
-
return 'local';
|
|
19
|
-
}
|
|
20
|
-
return 'docker';
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Execute command based on mode
|
|
24
|
-
*
|
|
25
|
-
* @param localHandler - Function to execute locally
|
|
26
|
-
* @param dockerCommand - Docker command name
|
|
27
|
-
* @param dockerArgs - Docker command arguments
|
|
28
|
-
* @param options - Global options
|
|
29
|
-
* @param logger - Logger instance
|
|
30
|
-
* @param configFile - Optional config file path to mount in Docker
|
|
31
|
-
*/
|
|
32
|
-
export async function executeCommand(localHandler, dockerCommand, dockerArgs, options, logger, configFile) {
|
|
33
|
-
const mode = getExecutionMode(options);
|
|
34
|
-
// Handle dry-run
|
|
35
|
-
if (options.dryRun) {
|
|
36
|
-
if (mode === 'docker') {
|
|
37
|
-
const cmd = `docker run walkeros/cli:latest ${dockerCommand} ${dockerArgs.join(' ')}`;
|
|
38
|
-
logger?.info(`[DRY-RUN] Would execute: ${cmd}`);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
logger?.info(`[DRY-RUN] Would execute locally: ${dockerCommand} ${dockerArgs.join(' ')}`);
|
|
42
|
-
}
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
// Execute based on mode
|
|
46
|
-
if (mode === 'local') {
|
|
47
|
-
if (logger && !options.silent) {
|
|
48
|
-
logger.info('🖥️ Executing locally...');
|
|
49
|
-
}
|
|
50
|
-
await localHandler();
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
// Docker mode
|
|
54
|
-
const dockerAvailable = await isDockerAvailable();
|
|
55
|
-
if (!dockerAvailable) {
|
|
56
|
-
throw new Error('Docker is not available. Please install Docker or use --local flag to execute locally.');
|
|
57
|
-
}
|
|
58
|
-
if (logger && !options.silent) {
|
|
59
|
-
logger.info('🐳 Executing in Docker container...');
|
|
60
|
-
}
|
|
61
|
-
await executeInDocker(dockerCommand, dockerArgs, options, configFile);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
//# sourceMappingURL=execution.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/core/execution.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,eAAe,EAEf,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAsB;IACrD,uBAAuB;IACvB,kCAAkC;IAClC,oEAAoE;IACpE,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;QAC/D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,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"}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Temporary Directory Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages temporary directories for CLI operations using hash-based naming.
|
|
5
|
-
* This provides a single location for all temp files per operation, making
|
|
6
|
-
* cleanup simple and Docker mounting straightforward.
|
|
7
|
-
*/
|
|
8
|
-
export interface TempDirPaths {
|
|
9
|
-
root: string;
|
|
10
|
-
nodeModules: string;
|
|
11
|
-
cache: string;
|
|
12
|
-
bundle: string;
|
|
13
|
-
entry: string;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Manages a unified temporary directory structure for CLI operations
|
|
17
|
-
*/
|
|
18
|
-
export declare class TempDirManager {
|
|
19
|
-
private hash;
|
|
20
|
-
readonly paths: TempDirPaths;
|
|
21
|
-
/**
|
|
22
|
-
* Create a new TempDirManager with hash-based directory naming
|
|
23
|
-
*
|
|
24
|
-
* @param configPath - Path to the config file (used in hash)
|
|
25
|
-
* @param operation - Operation type ('bundle' | 'simulate')
|
|
26
|
-
* @param timestamp - Optional timestamp for uniqueness (defaults to Date.now())
|
|
27
|
-
*/
|
|
28
|
-
static create(configPath: string, operation: 'bundle' | 'simulate', timestamp?: number): Promise<TempDirManager>;
|
|
29
|
-
constructor(hash: string);
|
|
30
|
-
/**
|
|
31
|
-
* Initialize the temporary directory structure
|
|
32
|
-
*/
|
|
33
|
-
initialize(): Promise<void>;
|
|
34
|
-
/**
|
|
35
|
-
* Clean up the temporary directory
|
|
36
|
-
*/
|
|
37
|
-
cleanup(): Promise<void>;
|
|
38
|
-
/**
|
|
39
|
-
* Get the hash used for this temp directory
|
|
40
|
-
*/
|
|
41
|
-
getHash(): string;
|
|
42
|
-
/**
|
|
43
|
-
* Get a path within the temp directory
|
|
44
|
-
*/
|
|
45
|
-
getPath(...parts: string[]): string;
|
|
46
|
-
/**
|
|
47
|
-
* Check if the temp directory exists
|
|
48
|
-
*/
|
|
49
|
-
exists(): Promise<boolean>;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=temp-manager.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"temp-manager.d.ts","sourceRoot":"","sources":["../../src/core/temp-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAS;IACrB,SAAgB,KAAK,EAAE,YAAY,CAAC;IAEpC;;;;;;OAMG;WACU,MAAM,CACjB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,UAAU,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,CAAC;gBAMd,IAAI,EAAE,MAAM;IAaxB;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,OAAO,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAInC;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;CAGjC"}
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unified Temporary Directory Manager
|
|
3
|
-
*
|
|
4
|
-
* Manages temporary directories for CLI operations using hash-based naming.
|
|
5
|
-
* This provides a single location for all temp files per operation, making
|
|
6
|
-
* cleanup simple and Docker mounting straightforward.
|
|
7
|
-
*/
|
|
8
|
-
import { getHashServer } from '@walkeros/server-core';
|
|
9
|
-
import path from 'path';
|
|
10
|
-
import fs from 'fs-extra';
|
|
11
|
-
/**
|
|
12
|
-
* Manages a unified temporary directory structure for CLI operations
|
|
13
|
-
*/
|
|
14
|
-
export class TempDirManager {
|
|
15
|
-
hash;
|
|
16
|
-
paths;
|
|
17
|
-
/**
|
|
18
|
-
* Create a new TempDirManager with hash-based directory naming
|
|
19
|
-
*
|
|
20
|
-
* @param configPath - Path to the config file (used in hash)
|
|
21
|
-
* @param operation - Operation type ('bundle' | 'simulate')
|
|
22
|
-
* @param timestamp - Optional timestamp for uniqueness (defaults to Date.now())
|
|
23
|
-
*/
|
|
24
|
-
static async create(configPath, operation, timestamp) {
|
|
25
|
-
const ts = timestamp || Date.now();
|
|
26
|
-
const hash = await getHashServer(`${configPath}:${operation}:${ts}`, 12);
|
|
27
|
-
return new TempDirManager(hash);
|
|
28
|
-
}
|
|
29
|
-
constructor(hash) {
|
|
30
|
-
this.hash = hash;
|
|
31
|
-
const root = path.join('.tmp', `walkeros-${hash}`);
|
|
32
|
-
this.paths = {
|
|
33
|
-
root,
|
|
34
|
-
nodeModules: path.join(root, 'node_modules'),
|
|
35
|
-
cache: path.join(root, 'cache'),
|
|
36
|
-
bundle: path.join(root, 'bundle.js'),
|
|
37
|
-
entry: path.join(root, 'entry.js'),
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Initialize the temporary directory structure
|
|
42
|
-
*/
|
|
43
|
-
async initialize() {
|
|
44
|
-
await fs.ensureDir(this.paths.root);
|
|
45
|
-
await fs.ensureDir(this.paths.nodeModules);
|
|
46
|
-
await fs.ensureDir(this.paths.cache);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Clean up the temporary directory
|
|
50
|
-
*/
|
|
51
|
-
async cleanup() {
|
|
52
|
-
await fs.remove(this.paths.root);
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Get the hash used for this temp directory
|
|
56
|
-
*/
|
|
57
|
-
getHash() {
|
|
58
|
-
return this.hash;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Get a path within the temp directory
|
|
62
|
-
*/
|
|
63
|
-
getPath(...parts) {
|
|
64
|
-
return path.join(this.paths.root, ...parts);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Check if the temp directory exists
|
|
68
|
-
*/
|
|
69
|
-
async exists() {
|
|
70
|
-
return fs.pathExists(this.paths.root);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=temp-manager.js.map
|