@journeyapps/cloudcode-build-agent 0.0.0-dev.55699c3 → 0.0.0-dev.6530336
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/dist/builder.d.ts +17 -1
- package/dist/builder.js +95 -4
- package/dist/builder.js.map +1 -1
- package/dist/cli.js +17 -22
- package/dist/cli.js.map +1 -1
- package/dist/defs.d.ts +7 -2
- package/dist/defs.js +1 -1
- package/dist/defs.js.map +1 -1
- package/dist/detect_tasks.d.ts +6 -5
- package/dist/detect_tasks.js +1 -0
- package/dist/detect_tasks.js.map +1 -1
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts +16 -1
- package/dist/installer.js +107 -61
- package/dist/installer.js.map +1 -1
- package/dist/run.d.ts +4 -0
- package/dist/run.js +19 -0
- package/dist/run.js.map +1 -0
- package/dist/spawn-stream.d.ts +15 -0
- package/dist/spawn-stream.js +59 -0
- package/dist/spawn-stream.js.map +1 -0
- package/package.json +4 -2
- package/src/builder.ts +103 -6
- package/src/cli.ts +22 -31
- package/src/defs.ts +2 -2
- package/src/detect_tasks.ts +11 -1
- package/src/index.ts +0 -2
- package/src/installer.ts +113 -78
- package/src/run.ts +23 -0
- package/src/spawn-stream.ts +73 -0
- package/tsconfig.json +1 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/errors.d.ts +0 -8
- package/dist/errors.js +0 -21
- package/dist/errors.js.map +0 -1
- package/dist/utils.d.ts +0 -11
- package/dist/utils.js +0 -99
- package/dist/utils.js.map +0 -1
- package/src/errors.ts +0 -22
- package/src/utils.ts +0 -82
package/dist/builder.d.ts
CHANGED
|
@@ -1 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
import { DetectedTask } from './detect_tasks';
|
|
2
|
+
export type GeneralTaskConfig = {
|
|
3
|
+
app_id: string;
|
|
4
|
+
env: string;
|
|
5
|
+
backend_id: string;
|
|
6
|
+
backend_url: string;
|
|
7
|
+
};
|
|
8
|
+
type ToolPaths = {
|
|
9
|
+
bin_path: string;
|
|
10
|
+
node_bin: string;
|
|
11
|
+
npm_bin: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function buildTasks(project_path: string, dest: string, config: GeneralTaskConfig, only?: string): Promise<void>;
|
|
14
|
+
export declare function buildTask(task: DetectedTask, project_path: string, dest: string, config: GeneralTaskConfig, node_context: {
|
|
15
|
+
node_version: string;
|
|
16
|
+
} & ToolPaths): Promise<void>;
|
|
17
|
+
export {};
|
package/dist/builder.js
CHANGED
|
@@ -1,13 +1,104 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildTasks = void 0;
|
|
26
|
+
exports.buildTask = exports.buildTasks = void 0;
|
|
27
|
+
const path = __importStar(require("node:path"));
|
|
28
|
+
const jetpack = __importStar(require("fs-jetpack"));
|
|
29
|
+
const semver = __importStar(require("semver"));
|
|
30
|
+
const installer_1 = require("./installer");
|
|
4
31
|
const detect_tasks_1 = require("./detect_tasks");
|
|
5
|
-
|
|
32
|
+
const run_1 = require("./run");
|
|
6
33
|
async function buildTasks(project_path, dest, config, only) {
|
|
7
34
|
const tasks = await (0, detect_tasks_1.detectTasks)(project_path, only);
|
|
8
|
-
|
|
9
|
-
|
|
35
|
+
// Use the version of nodejs that's running this script as the default.
|
|
36
|
+
const default_tool_paths = {
|
|
37
|
+
bin_path: path.dirname(process.execPath),
|
|
38
|
+
node_bin: process.execPath,
|
|
39
|
+
npm_bin: path.join(path.dirname(process.execPath), 'npm')
|
|
40
|
+
};
|
|
41
|
+
for (const task of tasks) {
|
|
42
|
+
let custom_tool_paths;
|
|
43
|
+
if (task.required_node_version) {
|
|
44
|
+
// FIXME: put this in another directory to avoid leaking into the builder
|
|
45
|
+
const custom_node_path = path.resolve(`node-${semver.major(task.required_node_version)}`);
|
|
46
|
+
custom_tool_paths = await (0, installer_1.ensureCustomNodeVersion)(task.required_node_version, custom_node_path);
|
|
47
|
+
}
|
|
48
|
+
const node_version = task.required_node_version ?? process.version;
|
|
49
|
+
await buildTask(task, project_path, dest, config, {
|
|
50
|
+
node_version,
|
|
51
|
+
...(custom_tool_paths ?? default_tool_paths)
|
|
52
|
+
});
|
|
10
53
|
}
|
|
11
54
|
}
|
|
12
55
|
exports.buildTasks = buildTasks;
|
|
56
|
+
async function buildTask(task, project_path, dest, config, node_context) {
|
|
57
|
+
const builder_package = task.builder_package;
|
|
58
|
+
const builder_script = task.builder_script;
|
|
59
|
+
const { bin_path, node_bin, npm_bin } = node_context;
|
|
60
|
+
const builder_bin = path.resolve(bin_path, builder_script);
|
|
61
|
+
if (!jetpack.exists(node_bin)) {
|
|
62
|
+
throw new Error(`Node binary not found: ${node_bin}`);
|
|
63
|
+
}
|
|
64
|
+
console.debug(`[${task.task_name}] Installing builder script "${builder_package}" for node ${node_context.node_version}`);
|
|
65
|
+
// debug(`Installing builder script "${builder_package}" for node ${node_version}`);
|
|
66
|
+
const stream1 = (0, run_1.runCommand)(node_bin, [npm_bin, '--global', 'install', builder_package], {
|
|
67
|
+
cwd: project_path,
|
|
68
|
+
env: process.env
|
|
69
|
+
});
|
|
70
|
+
for await (let event of stream1) {
|
|
71
|
+
const log = event.stdout ?? event.stderr;
|
|
72
|
+
if (log) {
|
|
73
|
+
console.log(`[${task.task_name} - install]`, log.trimRight());
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (!jetpack.exists(builder_bin)) {
|
|
77
|
+
console.error(`[${task.task_name}] ${builder_bin} not found`);
|
|
78
|
+
throw new Error(`Builder script not found for task ${task.task_name}`);
|
|
79
|
+
}
|
|
80
|
+
const builder_args = [];
|
|
81
|
+
// --src ./ --out ./dist/echo --task echo --appId 'appid' --env 'testing' --backendId 'backendid' --backendUrl 'http://run.journeyapps.test'
|
|
82
|
+
builder_args.push(builder_bin);
|
|
83
|
+
builder_args.push('--src', project_path);
|
|
84
|
+
builder_args.push(`--out`, path.join(dest, task.task_name));
|
|
85
|
+
builder_args.push(`--zip`, path.join(dest, `${task.task_name}.zip`));
|
|
86
|
+
builder_args.push(`--task`, `${task.task_name}`);
|
|
87
|
+
builder_args.push(`--appId`, config.app_id);
|
|
88
|
+
builder_args.push(`--env`, config.env);
|
|
89
|
+
builder_args.push(`--backendId`, config.backend_id);
|
|
90
|
+
builder_args.push(`--backendUrl`, config.backend_url);
|
|
91
|
+
// builder_args.push(`--runInstallScripts`, 'true'); // TODO: handle this from feature flags somehow
|
|
92
|
+
console.debug(`[${task.task_name}] Trying: ${node_bin} ${builder_args.join(' ')}`);
|
|
93
|
+
// debug(`Trying: ${node_bin} ${builder_args.join(' ')}`);
|
|
94
|
+
const stream2 = (0, run_1.runCommand)(node_bin, builder_args, { cwd: project_path, env: process.env });
|
|
95
|
+
for await (let event of stream2) {
|
|
96
|
+
const log = event.stdout ?? event.stderr;
|
|
97
|
+
if (log) {
|
|
98
|
+
console.log(`[${task.task_name} - build]`, log.trimRight());
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// console.debug('----');
|
|
102
|
+
}
|
|
103
|
+
exports.buildTask = buildTask;
|
|
13
104
|
//# sourceMappingURL=builder.js.map
|
package/dist/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -27,26 +27,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
27
27
|
const yargs = __importStar(require("yargs"));
|
|
28
28
|
const _1 = require("./");
|
|
29
29
|
const DEFAULT_SRC_PATH = './';
|
|
30
|
-
const DEFAULT_OUT_PATH = '';
|
|
30
|
+
const DEFAULT_OUT_PATH = './dist';
|
|
31
31
|
yargs
|
|
32
32
|
.command(['build', '$0'], // $0 means this is the default command
|
|
33
33
|
'build tasks', (yargs) => {
|
|
34
|
-
return yargs
|
|
34
|
+
return (yargs
|
|
35
35
|
.option('only', { string: true })
|
|
36
36
|
.option('path', { default: DEFAULT_SRC_PATH })
|
|
37
|
-
.option('out', { default: DEFAULT_OUT_PATH })
|
|
37
|
+
.option('out', { default: DEFAULT_OUT_PATH })
|
|
38
|
+
// TODO: investigate yargs.config() for reading task config blob from a file. But how to ensure required args?
|
|
39
|
+
.option('appId', { string: true, demandOption: true, describe: "CloudCode's reference id" })
|
|
40
|
+
.option('env', { string: true, demandOption: true })
|
|
41
|
+
.option('backendId', { string: true, demandOption: true })
|
|
42
|
+
.option('backendUrl', { string: true, demandOption: true }));
|
|
38
43
|
}, handled(async (argv) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
// iterate over task directories:
|
|
47
|
-
// ensure required node version for task CC version is installed - What if too old - error?
|
|
48
|
-
// run yarn install
|
|
49
|
-
await (0, _1.prepareBuildEnvForTasks)(argv.path, argv.only);
|
|
44
|
+
const config = {
|
|
45
|
+
app_id: argv.appId,
|
|
46
|
+
env: argv.env,
|
|
47
|
+
backend_id: argv.backendId,
|
|
48
|
+
backend_url: argv.backendUrl
|
|
49
|
+
};
|
|
50
|
+
await (0, _1.buildTasks)(argv.path, argv.out, config, argv.only);
|
|
50
51
|
}))
|
|
51
52
|
.option('verbose', {
|
|
52
53
|
alias: 'v',
|
|
@@ -58,14 +59,8 @@ function handled(fn) {
|
|
|
58
59
|
await fn(argv);
|
|
59
60
|
}
|
|
60
61
|
catch (err) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
process.exit(err.status);
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
console.error(err.stack);
|
|
67
|
-
process.exit(1);
|
|
68
|
-
}
|
|
62
|
+
console.error(err.stack);
|
|
63
|
+
process.exit(1);
|
|
69
64
|
}
|
|
70
65
|
};
|
|
71
66
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6CAA+B;AAE/B,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,6CAA+B;AAE/B,yBAAgC;AAEhC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAElC,KAAK;KACF,OAAO,CACN,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,uCAAuC;AACxD,aAAa,EACb,CAAC,KAAK,EAAE,EAAE;IACR,OAAO,CACL,KAAK;SACF,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAChC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;SAC7C,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC7C,8GAA8G;SAC7G,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,0BAA0B,EAAE,CAAC;SAC3F,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACnD,MAAM,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;SACzD,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;AACJ,CAAC,EACD,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,MAAM,GAAG;QACb,MAAM,EAAE,IAAI,CAAC,KAAK;QAClB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,UAAU,EAAE,IAAI,CAAC,SAAS;QAC1B,WAAW,EAAE,IAAI,CAAC,UAAU;KAC7B,CAAC;IACF,MAAM,IAAA,aAAU,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC,CAAC,CACH;KACA,MAAM,CAAC,SAAS,EAAE;IACjB,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,KAAK;CACf,CAAC,CAAC,IAAI,CAAC;AAEV,SAAS,OAAO,CAAI,EAA8B;IAChD,OAAO,KAAK,EAAE,IAAO,EAAE,EAAE;QACvB,IAAI;YACF,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;SAChB;QAAC,OAAO,GAAG,EAAE;YACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjB;IACH,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/defs.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
export declare const SUPPORTED_VERSIONS: {
|
|
1
|
+
export declare const SUPPORTED_VERSIONS: ({
|
|
2
2
|
version: string;
|
|
3
3
|
node: string;
|
|
4
4
|
builder_package: string;
|
|
5
5
|
builder_script: string;
|
|
6
|
-
}
|
|
6
|
+
} | {
|
|
7
|
+
version: string;
|
|
8
|
+
builder_package: string;
|
|
9
|
+
builder_script: string;
|
|
10
|
+
node?: undefined;
|
|
11
|
+
})[];
|
package/dist/defs.js
CHANGED
|
@@ -12,7 +12,7 @@ exports.SUPPORTED_VERSIONS = [
|
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
version: '1.12.0',
|
|
15
|
-
node: '16.19.1',
|
|
15
|
+
// node: '16.19.1',
|
|
16
16
|
// builder_package: '@journeyapps/cloudcode-build-legacy@1.12.0'
|
|
17
17
|
// DEV HACK:
|
|
18
18
|
builder_package: '~/src/journey-cloudcode/packages/cloudcode-build-legacy',
|
package/dist/defs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":";;;AAAA,0DAA0D;AAC7C,QAAA,kBAAkB,GAAG;IAChC;QACE,WAAW;QACX,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,iBAAiB;KAClC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,
|
|
1
|
+
{"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":";;;AAAA,0DAA0D;AAC7C,QAAA,kBAAkB,GAAG;IAChC;QACE,WAAW;QACX,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,iBAAiB;KAClC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,mBAAmB;QACnB,gEAAgE;QAChE,YAAY;QACZ,eAAe,EAAE,yDAAyD;QAC1E,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,mBAAmB;QACnB,gEAAgE;QAChE,YAAY;QACZ,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,yDAAyD;QAC1E,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,mBAAmB;QACnB,gEAAgE;QAChE,YAAY;QACZ,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,yDAAyD;QAC1E,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,mBAAmB;QACnB,gEAAgE;QAChE,YAAY;QACZ,IAAI,EAAE,SAAS;QACf,eAAe,EAAE,yDAAyD;QAC1E,cAAc,EAAE,wBAAwB;KACzC;CACF,CAAC"}
|
package/dist/detect_tasks.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type DetectedTask = {
|
|
2
2
|
pkg_path: string;
|
|
3
|
-
task_name:
|
|
4
|
-
task_version:
|
|
5
|
-
required_node_version
|
|
3
|
+
task_name: string;
|
|
4
|
+
task_version: string;
|
|
5
|
+
required_node_version?: string;
|
|
6
6
|
builder_package: string;
|
|
7
7
|
builder_script: string;
|
|
8
|
-
}
|
|
8
|
+
};
|
|
9
|
+
export declare function detectTasks(project_path: string, only?: string): Promise<DetectedTask[]>;
|
package/dist/detect_tasks.js
CHANGED
|
@@ -61,6 +61,7 @@ async function detectTasks(project_path, only) {
|
|
|
61
61
|
const task_package = await readPackage(pkg_path);
|
|
62
62
|
const task_name = task_package.name; // CAVEAT: the pkg name _must_ match the dir.
|
|
63
63
|
const task_version = task_package?.cloudcode?.runtime;
|
|
64
|
+
// FIXME: Do we want to filter out disabled tasks from the build process?
|
|
64
65
|
console.debug(`Detected task version ${task_version}`);
|
|
65
66
|
const matching = defs.SUPPORTED_VERSIONS.find((v) => {
|
|
66
67
|
return semver.satisfies(v.version, task_version);
|
package/dist/detect_tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect_tasks.js","sourceRoot":"","sources":["../src/detect_tasks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,gDAAkC;AAClC,oDAAsC;AACtC,+CAAiC;AACjC,6CAA+B;AAE/B,+DAA+D;AAC/D,KAAK,UAAU,WAAW,CAAC,IAAY;IACrC,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KAC5B;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC/B,MAAM,GAAG,CAAC;QACV,mCAAmC;QACnC,+CAA+C;KAChD;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"detect_tasks.js","sourceRoot":"","sources":["../src/detect_tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,7 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./errors"), exports);
|
|
18
17
|
__exportStar(require("./builder"), exports);
|
|
19
|
-
__exportStar(require("./installer"), exports);
|
|
20
18
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
|
package/dist/installer.d.ts
CHANGED
|
@@ -1 +1,16 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function ensureCustomNodeVersion(node_version: string, install_path: string): Promise<{
|
|
2
|
+
bin_path: string;
|
|
3
|
+
node_bin: string;
|
|
4
|
+
npm_bin: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function downloadAndInstallNode(node_version: string, destination: string): Promise<{
|
|
7
|
+
bin_path: string;
|
|
8
|
+
node_bin: string;
|
|
9
|
+
npm_bin: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare function nodePaths(destination: string): {
|
|
12
|
+
bin_path: string;
|
|
13
|
+
node_bin: string;
|
|
14
|
+
npm_bin: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function downloadAndExtractTarball(url: string, dest: string): Promise<void>;
|
package/dist/installer.js
CHANGED
|
@@ -22,71 +22,117 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
27
|
-
const path = __importStar(require("node:path"));
|
|
29
|
+
exports.downloadAndExtractTarball = exports.nodePaths = exports.downloadAndInstallNode = exports.ensureCustomNodeVersion = void 0;
|
|
28
30
|
const jetpack = __importStar(require("fs-jetpack"));
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
const path = __importStar(require("node:path"));
|
|
32
|
+
const URL = __importStar(require("node:url"));
|
|
33
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
34
|
+
const fs = __importStar(require("node:fs"));
|
|
35
|
+
const os = __importStar(require("node:os"));
|
|
36
|
+
const tar = __importStar(require("tar"));
|
|
37
|
+
async function ensureCustomNodeVersion(node_version, install_path) {
|
|
38
|
+
if (!jetpack.exists(path.join(install_path, 'bin/node'))) {
|
|
39
|
+
console.debug(`[node ${node_version}] Installing to ${install_path}`);
|
|
40
|
+
await jetpack.dirAsync(install_path);
|
|
41
|
+
await downloadAndInstallNode(node_version, install_path);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
console.debug(`[node ${node_version}] Already installed in ${install_path}`);
|
|
45
|
+
}
|
|
46
|
+
return nodePaths(install_path);
|
|
47
|
+
}
|
|
48
|
+
exports.ensureCustomNodeVersion = ensureCustomNodeVersion;
|
|
49
|
+
/* Basically this, but for different dirs.
|
|
50
|
+
curl https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${PLATFORM}64.tar.gz -L | tar -xzC /node-dedicated && \
|
|
51
|
+
mv /node-dedicated/node-v${NODE_VERSION}-linux-${PLATFORM}64/bin/node /node-dedicated/node
|
|
52
|
+
*/
|
|
53
|
+
// TODO: feature to find the latest minor and patch for a given major version?
|
|
54
|
+
async function downloadAndInstallNode(node_version, destination) {
|
|
55
|
+
// eg. https://nodejs.org/dist/v18.14.2/node-v18.14.2-linux-x64.tar.xz
|
|
56
|
+
const ARCH = os.arch();
|
|
57
|
+
const PLATFORM = os.platform();
|
|
58
|
+
const node_download_url = `https://nodejs.org/dist/v${node_version}/node-v${node_version}-${PLATFORM}-${ARCH}.tar.gz`;
|
|
59
|
+
await downloadAndExtractTarball(node_download_url, destination);
|
|
60
|
+
return nodePaths(destination);
|
|
61
|
+
}
|
|
62
|
+
exports.downloadAndInstallNode = downloadAndInstallNode;
|
|
63
|
+
function nodePaths(destination) {
|
|
64
|
+
return {
|
|
65
|
+
bin_path: path.resolve(destination, 'bin'),
|
|
66
|
+
node_bin: path.resolve(destination, 'bin', 'node'),
|
|
67
|
+
npm_bin: path.resolve(destination, 'bin', 'npm')
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
exports.nodePaths = nodePaths;
|
|
71
|
+
async function downloadAndExtractTarball(url, dest) {
|
|
72
|
+
const tmpdir = os.tmpdir();
|
|
73
|
+
const filename = path.basename(URL.parse(url).pathname);
|
|
74
|
+
const base = path.basename(filename, '.tar.gz');
|
|
75
|
+
const download = path.join(tmpdir, filename);
|
|
76
|
+
if (fs.existsSync(download)) {
|
|
77
|
+
console.debug(`deleting old ${download}`);
|
|
78
|
+
fs.unlinkSync(download);
|
|
51
79
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
80
|
+
await new Promise(async (resolve, reject) => {
|
|
81
|
+
console.log(`fetching ${url} into ${download}`);
|
|
82
|
+
const response = await (0, node_fetch_1.default)(url);
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
const errorBody = await response.statusText;
|
|
85
|
+
throw new Error(`Failed to download: ${errorBody}`);
|
|
86
|
+
}
|
|
87
|
+
const file = fs.createWriteStream(download); // Sink the download stream into a file, so it can be extracted.
|
|
88
|
+
response.body.pipe(file);
|
|
89
|
+
file.on('finish', async () => {
|
|
90
|
+
try {
|
|
91
|
+
console.debug('Extracting...', download);
|
|
92
|
+
tar.extract({
|
|
93
|
+
cwd: tmpdir,
|
|
94
|
+
file: download,
|
|
95
|
+
sync: true
|
|
96
|
+
});
|
|
97
|
+
const uncomp = path.join(tmpdir, base);
|
|
98
|
+
const dist = path.resolve(dest);
|
|
99
|
+
// FIXME: dangerous. Add protection or replace.
|
|
100
|
+
// if (fs.existsSync(dist)) {
|
|
101
|
+
// fs.rmSync(dist, { recursive: true });
|
|
102
|
+
// }
|
|
103
|
+
if (fs.existsSync(uncomp)) {
|
|
104
|
+
console.debug(`Moving extracted files from ${uncomp} to ${dist}`);
|
|
105
|
+
fs.renameSync(uncomp, dist);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
console.debug(`Can't find extract dir ${uncomp}`);
|
|
109
|
+
}
|
|
110
|
+
/*
|
|
111
|
+
FIXME: this seems to sometimes cause errors: eg.
|
|
112
|
+
```
|
|
113
|
+
node:events:505
|
|
114
|
+
throw er; // Unhandled 'error' event
|
|
115
|
+
^
|
|
116
|
+
|
|
117
|
+
Error: ENOENT: no such file or directory, open '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
|
|
118
|
+
Emitted 'error' event on ReadStream instance at:
|
|
119
|
+
at emitErrorNT (node:internal/streams/destroy:157:8)
|
|
120
|
+
at emitErrorCloseNT (node:internal/streams/destroy:122:3)
|
|
121
|
+
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
|
|
122
|
+
errno: -2,
|
|
123
|
+
code: 'ENOENT',
|
|
124
|
+
syscall: 'open',
|
|
125
|
+
path: '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
|
|
126
|
+
```
|
|
127
|
+
*/
|
|
128
|
+
// fs.unlinkSync(file.path);
|
|
129
|
+
resolve(null);
|
|
78
130
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
console.log(`[${task.task_name}] OUTPUT: ${builderSpawnResult.stdout}`);
|
|
82
|
-
console.log(`[${task.task_name}] ERROR: ${builderSpawnResult.stderr}`);
|
|
131
|
+
catch (err) {
|
|
132
|
+
reject(err);
|
|
83
133
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
else {
|
|
87
|
-
console.log(`[${task.task_name}] failed to install ${builder_package}`);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
90
136
|
}
|
|
91
|
-
exports.
|
|
137
|
+
exports.downloadAndExtractTarball = downloadAndExtractTarball;
|
|
92
138
|
//# sourceMappingURL=installer.js.map
|
package/dist/installer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/run.d.ts
ADDED
package/dist/run.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runCommand = void 0;
|
|
4
|
+
const spawn_stream_1 = require("./spawn-stream");
|
|
5
|
+
async function* runCommand(command, args, options) {
|
|
6
|
+
const { childProcess, stream } = (0, spawn_stream_1.spawnStream)(command, args, { cwd: options?.cwd, splitLines: true, ...options });
|
|
7
|
+
let exitCode = null;
|
|
8
|
+
for await (let event of stream) {
|
|
9
|
+
yield event;
|
|
10
|
+
if (event.exitCode != null) {
|
|
11
|
+
exitCode = event.exitCode;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (exitCode != 0) {
|
|
15
|
+
throw new Error(`Command failed with code ${exitCode}`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.runCommand = runCommand;
|
|
19
|
+
//# sourceMappingURL=run.js.map
|
package/dist/run.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":";;;AAAA,iDAA+D;AAGxD,KAAK,SAAS,CAAC,CAAC,UAAU,CAC/B,OAAe,EACf,IAAc,EACd,OAA+B;IAE/B,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAW,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IAEjH,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,MAAM,EAAE;QAC9B,MAAM,KAAK,CAAC;QACZ,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;YAC1B,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC3B;KACF;IAED,IAAI,QAAQ,IAAI,CAAC,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;KACzD;AACH,CAAC;AAnBD,gCAmBC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { SpawnOptions } from 'child_process';
|
|
3
|
+
export interface StreamOptions {
|
|
4
|
+
splitLines?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function spawnStream(command: string, args: string[], options: SpawnOptions & StreamOptions): {
|
|
7
|
+
childProcess: import("child_process").ChildProcessWithoutNullStreams;
|
|
8
|
+
stream: AsyncIterable<SpawnStreamEvent>;
|
|
9
|
+
};
|
|
10
|
+
export interface SpawnStreamEvent {
|
|
11
|
+
event: 'stdout' | 'stderr' | 'exit';
|
|
12
|
+
stdout?: string;
|
|
13
|
+
stderr?: string;
|
|
14
|
+
exitCode?: number;
|
|
15
|
+
}
|