@journeyapps/cloudcode-build-agent 0.0.0-dev.6fdb5b1 → 0.0.0-dev.8215bb7

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 CHANGED
@@ -1,7 +1,22 @@
1
+ import { DetectedTask } from './detect_tasks';
1
2
  export type GeneralTaskConfig = {
2
3
  app_id: string;
3
4
  env: string;
4
5
  backend_id: string;
5
6
  backend_url: string;
6
7
  };
7
- export declare function buildTasks(project_path: string, dest: string, config: GeneralTaskConfig, only?: string): Promise<void>;
8
+ export type BuildOptions = {
9
+ only?: string;
10
+ custom_node_installation_path?: string;
11
+ };
12
+ type ToolPaths = {
13
+ bin_path: string;
14
+ node_bin: string;
15
+ npm_bin: string;
16
+ npx_bin: string;
17
+ };
18
+ export declare function buildTasks(project_path: string, dest: string, config: GeneralTaskConfig, options?: BuildOptions): Promise<void>;
19
+ export declare function buildTask(task: DetectedTask, project_path: string, dest: string, config: GeneralTaskConfig, node_context: {
20
+ node_version: string;
21
+ } & ToolPaths): Promise<void>;
22
+ export {};
package/dist/builder.js CHANGED
@@ -23,88 +23,89 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.buildTasks = void 0;
26
+ exports.buildTask = exports.buildTasks = void 0;
27
27
  const path = __importStar(require("node:path"));
28
28
  const jetpack = __importStar(require("fs-jetpack"));
29
29
  const semver = __importStar(require("semver"));
30
- const utils = __importStar(require("./utils"));
31
- const child_process_1 = require("child_process");
30
+ const installer_1 = require("./installer");
32
31
  const detect_tasks_1 = require("./detect_tasks");
33
- const _ = __importStar(require("lodash"));
34
- async function buildTasks(project_path, dest, config, only) {
35
- const tasks = await (0, detect_tasks_1.detectTasks)(project_path, only);
36
- const required_node_versions = _.compact(tasks.map((t) => t.required_node_version));
37
- const install_node_versions = _.uniq(required_node_versions);
38
- // FIXME: Maybe refactor this section into an ensureNodeVersion (or something) that returns the relevant toolpaths?
39
- const tool_paths = {};
32
+ const run_1 = require("./run");
33
+ async function buildTasks(project_path, dest, config, options) {
34
+ const tasks = await (0, detect_tasks_1.detectTasks)(project_path, options?.only);
40
35
  // Use the version of nodejs that's running this script as the default.
41
36
  const default_tool_paths = {
42
37
  bin_path: path.dirname(process.execPath),
43
38
  node_bin: process.execPath,
44
- npm_bin: path.join(path.dirname(process.execPath), 'npm')
39
+ npm_bin: path.join(path.dirname(process.execPath), 'npm'),
40
+ npx_bin: path.join(path.dirname(process.execPath), 'npx')
45
41
  };
46
- tool_paths[process.version] = default_tool_paths;
47
- for (const required_node_version of install_node_versions) {
48
- const custom_node_path = path.resolve(`node-${semver.major(required_node_version)}`);
49
- if (!jetpack.exists(path.join(custom_node_path, 'bin/node'))) {
50
- console.debug(`installing to ${custom_node_path}`);
51
- await jetpack.dirAsync(custom_node_path);
52
- await utils.downloadAndInstallNode(required_node_version, custom_node_path);
53
- }
54
- else {
55
- console.debug(`already installed in ${custom_node_path}`);
56
- }
57
- tool_paths[required_node_version] = utils.nodePaths(custom_node_path);
58
- }
59
- console.debug('----');
60
42
  for (const task of tasks) {
61
- const node_version = task.required_node_version ?? process.version;
62
- const builder_package = task.builder_package;
63
- const builder_script = task.builder_script;
64
- const { bin_path, node_bin, npm_bin } = tool_paths[node_version];
65
- const builder_bin = path.resolve(bin_path, builder_script);
66
- if (!jetpack.exists(node_bin)) {
67
- throw new Error(`Node binary not found: ${node_bin}`);
43
+ let custom_tool_paths;
44
+ if (task.required_node_version) {
45
+ // FIXME: when defaulting to project_path, the custom node installation is copied into the builder's workdir as well.
46
+ const custom_node_installation_path = options?.custom_node_installation_path ?? project_path;
47
+ const custom_node_path = path.resolve(custom_node_installation_path, `node-${semver.major(task.required_node_version)}`);
48
+ custom_tool_paths = await (0, installer_1.ensureCustomNodeVersion)(task.required_node_version, custom_node_path);
68
49
  }
69
- console.debug(`[${task.task_name}] Installing builder script "${builder_package}" for node ${node_version}`);
70
- // TODO: This may need to be replaced with the something like the spawn-stream stuff in build-agent? OR what to do with the stdout/stderr and errorhandling?
71
- const spawnResult = (0, child_process_1.spawnSync)(node_bin, [npm_bin, '--global', 'install', builder_package], { cwd: project_path });
72
- if (spawnResult.status != 0) {
73
- console.error(`[${task.task_name}] failed to install ${builder_package}`);
74
- console.debug(`[${task.task_name}] STDOUT: ${spawnResult.stdout}`);
75
- console.debug(`[${task.task_name}] STDERR: ${spawnResult.stderr}`);
76
- throw new Error(`Failed to install builder script for task ${task.task_name}`);
77
- }
78
- if (!jetpack.exists(builder_bin)) {
79
- console.error(`[${task.task_name}] ${builder_bin} not found`);
80
- throw new Error(`Builder script not found for task ${task.task_name}`);
50
+ const node_version = task.required_node_version ?? process.version;
51
+ await buildTask(task, project_path, dest, config, {
52
+ node_version,
53
+ ...(custom_tool_paths ?? default_tool_paths)
54
+ });
55
+ }
56
+ }
57
+ exports.buildTasks = buildTasks;
58
+ async function buildTask(task, project_path, dest, config, node_context) {
59
+ const builder_package = task.builder_package;
60
+ const builder_script = task.builder_script;
61
+ const { node_bin, npm_bin, npx_bin } = node_context;
62
+ if (!jetpack.exists(node_bin)) {
63
+ throw new Error(`Node binary not found: ${node_bin}`);
64
+ }
65
+ console.debug(`[${task.task_name}] Installing builder script "${builder_package}" for node ${node_context.node_version}`);
66
+ /*
67
+ * The builder package is installed locally so as to not require write access to the global node installation,
68
+ * and executed with npx to handle the path resoluton, etc.
69
+ */
70
+ const stream1 = (0, run_1.runCommand)(node_bin, [npm_bin, '--no-save', '--no-fund', '--no-audit', 'install', builder_package], {
71
+ cwd: project_path,
72
+ env: {
73
+ npm_config_loglevel: 'error',
74
+ ...process.env
81
75
  }
82
- const builder_args = [];
83
- // --src ./ --out ./dist/echo --task echo --appId 'appid' --env 'testing' --backendId 'backendid' --backendUrl 'http://run.journeyapps.test'
84
- builder_args.push(builder_bin);
85
- builder_args.push('--src', project_path);
86
- builder_args.push(`--out`, path.join(dest, task.task_name));
87
- builder_args.push(`--task`, `${task.task_name}`);
88
- builder_args.push(`--appId`, config.app_id);
89
- builder_args.push(`--env`, config.env);
90
- builder_args.push(`--backendId`, config.backend_id);
91
- builder_args.push(`--backendUrl`, config.backend_url);
92
- // builder_args.push(`--runInstallScripts`, 'true'); // TODO: handle this from feature flags somehow
93
- console.debug(`[${task.task_name}] Trying: ${node_bin} ${builder_args.join(' ')}`);
94
- const builderSpawnResult = (0, child_process_1.spawnSync)(node_bin, builder_args, { cwd: project_path });
95
- if (builderSpawnResult.status !== 0) {
96
- console.error(`[${task.task_name}] FAILED TO RUN BUILDER SCRIPT`);
97
- console.debug(`[${task.task_name}] STDOUT: ${builderSpawnResult.stdout}`);
98
- console.debug(`[${task.task_name}] STDERR: ${builderSpawnResult.stderr}`);
76
+ });
77
+ for await (let event of stream1) {
78
+ const log = event.stdout ?? event.stderr;
79
+ if (log) {
80
+ console.log(`[${task.task_name} - install]`, log.trimRight());
99
81
  }
100
- else {
101
- // NOTE/FIXME?: a CLOUDCODE/BUILD/BUILD_FAILED build failure (eg. TS error in task) lands here, with the output in stderr.
102
- console.debug(`[${task.task_name}] SCRIPT SUCCESS`);
103
- console.debug(`[${task.task_name}] STDOUT: ${builderSpawnResult.stdout}`);
104
- console.debug(`[${task.task_name}] STDERR: ${builderSpawnResult.stderr}`);
82
+ }
83
+ const build_metadata = {
84
+ name: task.task_name,
85
+ version: task.task_version,
86
+ lambda_runtime: task.task_runtime
87
+ };
88
+ await jetpack.writeAsync(path.join(dest, `${task.task_name}-metadata.json`), JSON.stringify(build_metadata));
89
+ const builder_args = [];
90
+ builder_args.push(builder_script);
91
+ builder_args.push('--src', project_path);
92
+ builder_args.push(`--out`, path.join(dest, task.task_name));
93
+ builder_args.push(`--zip`, path.join(dest, `${task.task_name}.zip`));
94
+ builder_args.push(`--task`, `${task.task_name}`);
95
+ builder_args.push(`--appId`, config.app_id);
96
+ builder_args.push(`--env`, config.env);
97
+ builder_args.push(`--backendId`, config.backend_id);
98
+ builder_args.push(`--backendUrl`, config.backend_url);
99
+ builder_args.push(`--runInstallScripts`, 'true');
100
+ console.debug(`[${task.task_name}] Trying: ${node_bin} ${builder_args.join(' ')}`);
101
+ const stream2 = (0, run_1.runCommand)(npx_bin, ['--no-install', ...builder_args], { cwd: project_path, env: process.env });
102
+ for await (let event of stream2) {
103
+ const log = event.stdout ?? event.stderr;
104
+ if (log) {
105
+ console.log(`[${task.task_name} - build]`, log.trimRight());
105
106
  }
106
- console.debug('----');
107
107
  }
108
+ console.log(`[${task.task_name} - build]`, `Finished.`);
108
109
  }
109
- exports.buildTasks = buildTasks;
110
+ exports.buildTask = buildTask;
110
111
  //# sourceMappingURL=builder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -27,7 +27,8 @@ 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 = './dist';
30
+ const DEFAULT_OUT_PATH = './dist/cloudcode';
31
+ const DEFAULT_TMP_PATH = '/tmp/cloudcode-build-agent/node';
31
32
  yargs
32
33
  .command(['build', '$0'], // $0 means this is the default command
33
34
  'build tasks', (yargs) => {
@@ -35,6 +36,7 @@ yargs
35
36
  .option('only', { string: true })
36
37
  .option('path', { default: DEFAULT_SRC_PATH })
37
38
  .option('out', { default: DEFAULT_OUT_PATH })
39
+ .option('node_work_dir', { default: DEFAULT_TMP_PATH })
38
40
  // TODO: investigate yargs.config() for reading task config blob from a file. But how to ensure required args?
39
41
  .option('appId', { string: true, demandOption: true, describe: "CloudCode's reference id" })
40
42
  .option('env', { string: true, demandOption: true })
@@ -47,7 +49,10 @@ yargs
47
49
  backend_id: argv.backendId,
48
50
  backend_url: argv.backendUrl
49
51
  };
50
- await (0, _1.buildTasks)(argv.path, argv.out, config, argv.only);
52
+ await (0, _1.buildTasks)(argv.path, argv.out, config, {
53
+ only: argv.only,
54
+ custom_node_installation_path: argv.node_work_dir
55
+ });
51
56
  }))
52
57
  .option('verbose', {
53
58
  alias: 'v',
@@ -59,14 +64,8 @@ function handled(fn) {
59
64
  await fn(argv);
60
65
  }
61
66
  catch (err) {
62
- if (err instanceof _1.ProcessError) {
63
- console.error(err.message);
64
- process.exit(err.status);
65
- }
66
- else {
67
- console.error(err.stack);
68
- process.exit(1);
69
- }
67
+ console.error(err.stack);
68
+ process.exit(1);
70
69
  }
71
70
  };
72
71
  }
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,yBAA8C;AAE9C,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,IAAI,GAAG,YAAY,eAAY,EAAE;gBAC/B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC1B;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACjB;SACF;IACH,CAAC,CAAC;AACJ,CAAC"}
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,kBAAkB,CAAC;AAC5C,MAAM,gBAAgB,GAAG,iCAAiC,CAAC;AAE3D,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;SAC5C,MAAM,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QACvD,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;QAC5C,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,6BAA6B,EAAE,IAAI,CAAC,aAAa;KAClD,CAAC,CAAC;AACL,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,7 @@
1
1
  export declare const SUPPORTED_VERSIONS: {
2
2
  version: string;
3
3
  node: string;
4
+ runtime: string;
4
5
  builder_package: string;
5
6
  builder_script: string;
6
7
  }[];
package/dist/defs.js CHANGED
@@ -3,46 +3,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SUPPORTED_VERSIONS = void 0;
4
4
  // TODO: maybe publish (some of) this from the CC service?
5
5
  exports.SUPPORTED_VERSIONS = [
6
- {
7
- // proposed
8
- version: '1.13.0',
9
- node: '16.19.1',
10
- builder_package: '@journeyapps/cloudcode-build@1.13.0',
11
- builder_script: 'cloudcode-build'
12
- },
6
+ // {
7
+ // // proposed
8
+ // version: '1.13.0',
9
+ // node: '18.14.2',
10
+ // runtime: 'nodejs18.x',
11
+ // builder_package: '@journeyapps/cloudcode-build@1.13.0',
12
+ // builder_script: 'cloudcode-build'
13
+ // },
13
14
  {
14
15
  version: '1.12.0',
15
16
  node: '16.19.1',
16
- // builder_package: '@journeyapps/cloudcode-build-legacy@1.12.0'
17
- // DEV HACK:
18
- builder_package: '~/src/journey-cloudcode/packages/cloudcode-build-legacy',
17
+ runtime: 'nodejs16.x',
18
+ builder_package: '@journeyapps/cloudcode-build-legacy',
19
19
  builder_script: 'cloudcode-build-legacy'
20
20
  },
21
21
  {
22
22
  version: '1.11.2',
23
- // node: '14.21.3',
24
- // builder_package: '@journeyapps/cloudcode-build-legacy@1.12.0'
25
- // DEV HACK:
26
- node: '16.19.1',
27
- builder_package: '~/src/journey-cloudcode/packages/cloudcode-build-legacy',
23
+ node: '14.21.3',
24
+ runtime: 'nodejs14.x',
25
+ builder_package: '@journeyapps/cloudcode-build-legacy',
28
26
  builder_script: 'cloudcode-build-legacy'
29
27
  },
30
28
  {
31
29
  version: '1.11.1',
32
- // node: '14.21.3',
33
- // builder_package: '@journeyapps/cloudcode-build-legacy@1.12.0'
34
- // DEV HACK:
35
- node: '16.19.1',
36
- builder_package: '~/src/journey-cloudcode/packages/cloudcode-build-legacy',
30
+ node: '14.21.3',
31
+ runtime: 'nodejs14.x',
32
+ builder_package: '@journeyapps/cloudcode-build-legacy',
37
33
  builder_script: 'cloudcode-build-legacy'
38
34
  },
39
35
  {
40
36
  version: '1.11.0',
41
- // node: '14.21.3',
42
- // builder_package: '@journeyapps/cloudcode-build-legacy@1.12.0'
43
- // DEV HACK:
44
- node: '16.19.1',
45
- builder_package: '~/src/journey-cloudcode/packages/cloudcode-build-legacy',
37
+ node: '14.21.3',
38
+ runtime: 'nodejs14.x',
39
+ builder_package: '@journeyapps/cloudcode-build-legacy',
46
40
  builder_script: 'cloudcode-build-legacy'
47
41
  }
48
42
  ];
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,IAAI,EAAE,SAAS;QACf,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"}
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../src/defs.ts"],"names":[],"mappings":";;;AAAA,0DAA0D;AAC7C,QAAA,kBAAkB,GAAG;IAChC,IAAI;IACJ,gBAAgB;IAChB,uBAAuB;IACvB,qBAAqB;IACrB,2BAA2B;IAC3B,4DAA4D;IAC5D,sCAAsC;IACtC,KAAK;IACL;QACE,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,wBAAwB;KACzC;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,YAAY;QACrB,eAAe,EAAE,qCAAqC;QACtD,cAAc,EAAE,wBAAwB;KACzC;CACF,CAAC"}
@@ -1,8 +1,10 @@
1
- export declare function detectTasks(project_path: string, only?: string): Promise<{
1
+ export type DetectedTask = {
2
2
  pkg_path: string;
3
- task_name: any;
4
- task_version: any;
5
- required_node_version: string | undefined;
3
+ task_name: string;
4
+ task_version: string;
5
+ task_runtime: string;
6
+ required_node_version?: string;
6
7
  builder_package: string;
7
8
  builder_script: string;
8
- }[]>;
9
+ };
10
+ export declare function detectTasks(project_path: string, only?: string): Promise<DetectedTask[]>;
@@ -29,7 +29,6 @@ const path = __importStar(require("node:path"));
29
29
  const jetpack = __importStar(require("fs-jetpack"));
30
30
  const semver = __importStar(require("semver"));
31
31
  const defs = __importStar(require("./defs"));
32
- // TODO: validations for cloudcode specific keys and structure?
33
32
  async function readPackage(path) {
34
33
  try {
35
34
  const content = await fs.promises.readFile(path, { encoding: 'utf-8' });
@@ -70,17 +69,18 @@ async function detectTasks(project_path, only) {
70
69
  throw new Error('FIXME: unsupported version');
71
70
  }
72
71
  console.debug(`Matching versions: ${JSON.stringify(matching)}`);
72
+ const task_runtime = matching.runtime;
73
73
  const running_node_version = process.versions.node;
74
74
  let required_node_version;
75
- // if (matching?.node && semver.major(matching.node) !== semver.major(running_node_version)) {
76
- if (matching?.node && semver.parse(matching.node) !== semver.parse(running_node_version)) {
77
- console.debug(`Task requires different node version: v${matching.node}`);
75
+ if (matching?.node && semver.major(matching.node) !== semver.major(running_node_version)) {
76
+ console.debug(`Task requires different node version: v${matching.node}. Running: ${running_node_version}`);
78
77
  required_node_version = matching.node;
79
78
  }
80
79
  return {
81
80
  pkg_path,
82
81
  task_name,
83
82
  task_version,
83
+ task_runtime,
84
84
  required_node_version,
85
85
  builder_package: matching.builder_package,
86
86
  builder_script: matching.builder_script
@@ -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;AAEM,KAAK,UAAU,WAAW,CAAC,YAAoB,EAAE,IAAa;IACnE,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IACrH,MAAM,sBAAsB,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC/D,+BAA+B;QAC/B,MAAM,EAAE,GAAG,yCAAyC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,EAAE,EAAE;YACP,OAAO,KAAK,CAAC;SACd;QACD,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,QAAQ,EAAE;YACpC,qFAAqF;YACrF,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAChB,sBAAsB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC5C,MAAM,YAAY,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,6CAA6C;QAClF,MAAM,YAAY,GAAG,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC;QACtD,yEAAyE;QAEzE,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QAEvD,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;YAClD,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,EAAE;YACb,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QAED,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAEhE,MAAM,oBAAoB,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnD,IAAI,qBAAqB,CAAC;QAC1B,8FAA8F;QAC9F,IAAI,QAAQ,EAAE,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE;YACxF,OAAO,CAAC,KAAK,CAAC,0CAA0C,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAEzE,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC;SACvC;QACD,OAAO;YACL,QAAQ;YACR,SAAS;YACT,YAAY;YACZ,qBAAqB;YACrB,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,cAAc,EAAE,QAAQ,CAAC,cAAc;SACxC,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;AACJ,CAAC;AAtDD,kCAsDC"}
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
@@ -1,2 +1 @@
1
- export * from './errors';
2
1
  export * from './builder';
package/dist/index.js CHANGED
@@ -14,6 +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
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,2CAAyB;AACzB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
@@ -1,11 +1,19 @@
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
+ npx_bin: string;
6
+ }>;
1
7
  export declare function downloadAndInstallNode(node_version: string, destination: string): Promise<{
2
8
  bin_path: string;
3
9
  node_bin: string;
4
10
  npm_bin: string;
11
+ npx_bin: string;
5
12
  }>;
6
13
  export declare function nodePaths(destination: string): {
7
14
  bin_path: string;
8
15
  node_bin: string;
9
16
  npm_bin: string;
17
+ npx_bin: string;
10
18
  };
11
19
  export declare function downloadAndExtractTarball(url: string, dest: string): Promise<void>;
@@ -26,13 +26,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.downloadAndExtractTarball = exports.nodePaths = exports.downloadAndInstallNode = void 0;
30
- const node_fetch_1 = __importDefault(require("node-fetch"));
29
+ exports.downloadAndExtractTarball = exports.nodePaths = exports.downloadAndInstallNode = exports.ensureCustomNodeVersion = void 0;
30
+ const jetpack = __importStar(require("fs-jetpack"));
31
31
  const path = __importStar(require("node:path"));
32
+ const URL = __importStar(require("node:url"));
33
+ const node_fetch_1 = __importDefault(require("node-fetch"));
32
34
  const fs = __importStar(require("node:fs"));
33
35
  const os = __importStar(require("node:os"));
34
- const URL = __importStar(require("node:url"));
35
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;
36
49
  /* Basically this, but for different dirs.
37
50
  curl https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-${PLATFORM}64.tar.gz -L | tar -xzC /node-dedicated && \
38
51
  mv /node-dedicated/node-v${NODE_VERSION}-linux-${PLATFORM}64/bin/node /node-dedicated/node
@@ -40,14 +53,10 @@ const tar = __importStar(require("tar"));
40
53
  // TODO: feature to find the latest minor and patch for a given major version?
41
54
  async function downloadAndInstallNode(node_version, destination) {
42
55
  // eg. https://nodejs.org/dist/v18.14.2/node-v18.14.2-linux-x64.tar.xz
43
- // const PLATFORM = 'x';
44
- // const node_download_url = `https://nodejs.org/dist/v${node_version}/node-v${node_version}-linux-${PLATFORM}64.tar.gz`;
45
- // TODO: this is just for dev for now. Find a better fix.
46
56
  const ARCH = os.arch();
47
57
  const PLATFORM = os.platform();
48
58
  const node_download_url = `https://nodejs.org/dist/v${node_version}/node-v${node_version}-${PLATFORM}-${ARCH}.tar.gz`;
49
59
  await downloadAndExtractTarball(node_download_url, destination);
50
- // TODO: move binaries into local bin path?
51
60
  return nodePaths(destination);
52
61
  }
53
62
  exports.downloadAndInstallNode = downloadAndInstallNode;
@@ -55,7 +64,8 @@ function nodePaths(destination) {
55
64
  return {
56
65
  bin_path: path.resolve(destination, 'bin'),
57
66
  node_bin: path.resolve(destination, 'bin', 'node'),
58
- npm_bin: path.resolve(destination, 'bin', 'npm')
67
+ npm_bin: path.resolve(destination, 'bin', 'npm'),
68
+ npx_bin: path.resolve(destination, 'bin', 'npx')
59
69
  };
60
70
  }
61
71
  exports.nodePaths = nodePaths;
@@ -69,19 +79,17 @@ async function downloadAndExtractTarball(url, dest) {
69
79
  fs.unlinkSync(download);
70
80
  }
71
81
  await new Promise(async (resolve, reject) => {
72
- console.log(`fetching ${url} into ${download}`);
82
+ console.debug(`fetching ${url} into ${download}`);
73
83
  const response = await (0, node_fetch_1.default)(url);
74
84
  if (!response.ok) {
75
85
  const errorBody = await response.statusText;
76
86
  throw new Error(`Failed to download: ${errorBody}`);
77
87
  }
78
- // FIXME: replace with webstreams? but according to the types package webstreams aren't available in node 16?!??
79
88
  const file = fs.createWriteStream(download); // Sink the download stream into a file, so it can be extracted.
80
89
  response.body.pipe(file);
81
90
  file.on('finish', async () => {
82
91
  try {
83
- console.log('Extracting...', download);
84
- // const comp = fs.createReadStream(download);
92
+ console.debug('Extracting...', download);
85
93
  tar.extract({
86
94
  cwd: tmpdir,
87
95
  file: download,
@@ -94,28 +102,29 @@ async function downloadAndExtractTarball(url, dest) {
94
102
  // fs.rmSync(dist, { recursive: true });
95
103
  // }
96
104
  if (fs.existsSync(uncomp)) {
97
- console.log(`Moving extracted files from ${uncomp} to ${dist}`);
105
+ console.debug(`Moving extracted files from ${uncomp} to ${dist}`);
98
106
  fs.renameSync(uncomp, dist);
99
107
  }
100
108
  else {
101
- console.log(`Can't find extract dir ${uncomp}`);
109
+ console.debug(`Can't find extract dir ${uncomp}`);
102
110
  }
103
- // FIXME: this seems to sometimes cause errors
104
111
  /*
105
- ----
106
- node:events:505
107
- throw er; // Unhandled 'error' event
108
- ^
112
+ FIXME: this seems to sometimes cause errors: eg.
113
+ ```
114
+ node:events:505
115
+ throw er; // Unhandled 'error' event
116
+ ^
109
117
 
110
- Error: ENOENT: no such file or directory, open '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
111
- Emitted 'error' event on ReadStream instance at:
112
- at emitErrorNT (node:internal/streams/destroy:157:8)
113
- at emitErrorCloseNT (node:internal/streams/destroy:122:3)
114
- at processTicksAndRejections (node:internal/process/task_queues:83:21) {
115
- errno: -2,
116
- code: 'ENOENT',
117
- syscall: 'open',
118
- path: '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
118
+ Error: ENOENT: no such file or directory, open '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
119
+ Emitted 'error' event on ReadStream instance at:
120
+ at emitErrorNT (node:internal/streams/destroy:157:8)
121
+ at emitErrorCloseNT (node:internal/streams/destroy:122:3)
122
+ at processTicksAndRejections (node:internal/process/task_queues:83:21) {
123
+ errno: -2,
124
+ code: 'ENOENT',
125
+ syscall: 'open',
126
+ path: '/var/folders/kc/h6m4zpmd23v13s63mygvkslm0000gn/T/node-v16.19.1-darwin-arm64.tar.gz'
127
+ ```
119
128
  */
120
129
  // fs.unlinkSync(file.path);
121
130
  resolve(null);
@@ -127,4 +136,4 @@ async function downloadAndExtractTarball(url, dest) {
127
136
  });
128
137
  }
129
138
  exports.downloadAndExtractTarball = downloadAndExtractTarball;
130
- //# sourceMappingURL=utils.js.map
139
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
package/dist/run.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ /// <reference types="node" />
2
+ import { SpawnStreamEvent } from './spawn-stream';
3
+ import { SpawnOptions } from 'child_process';
4
+ export declare function runCommand(command: string, args: string[], options?: Partial<SpawnOptions>): AsyncIterable<SpawnStreamEvent>;
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
@@ -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"}