@openfn/cli 0.0.16 → 0.0.19
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/index.js +4 -1
- package/dist/process/runner.js +48 -16
- package/package.json +6 -5
package/dist/index.js
CHANGED
|
@@ -103,6 +103,9 @@ var executeCommand = {
|
|
|
103
103
|
}).option("no-compile", {
|
|
104
104
|
boolean: true,
|
|
105
105
|
description: "Skip compilation"
|
|
106
|
+
}).option("no-strict-output", {
|
|
107
|
+
boolean: true,
|
|
108
|
+
description: "Allow properties other than data to be returned in the output."
|
|
106
109
|
}).example(
|
|
107
110
|
"openfn foo/job.js",
|
|
108
111
|
"Reads foo/job.js, looks for state and output in foo"
|
|
@@ -124,7 +127,7 @@ var applyExecuteOptions = (yargs2) => yargs2.positional("path", {
|
|
|
124
127
|
}).option("output-stdout", {
|
|
125
128
|
alias: "O",
|
|
126
129
|
boolean: true,
|
|
127
|
-
description: "Print output to stdout (
|
|
130
|
+
description: "Print output to stdout (instead of a file)"
|
|
128
131
|
}).option("adaptors", {
|
|
129
132
|
alias: ["a", "adaptor"],
|
|
130
133
|
description: "A language adaptor to use for the job. Short-form names are allowed. Can include an explicit path to a local adaptor build.",
|
package/dist/process/runner.js
CHANGED
|
@@ -82,6 +82,7 @@ function ensureOpts(basePath = ".", opts) {
|
|
|
82
82
|
outputStdout: Boolean(opts.outputStdout),
|
|
83
83
|
packages: opts.packages,
|
|
84
84
|
stateStdin: opts.stateStdin,
|
|
85
|
+
strictOutput: opts.strictOutput ?? true,
|
|
85
86
|
immutable: opts.immutable || false
|
|
86
87
|
};
|
|
87
88
|
const set = (key, value) => {
|
|
@@ -105,9 +106,6 @@ function ensureOpts(basePath = ".", opts) {
|
|
|
105
106
|
return newOpts;
|
|
106
107
|
}
|
|
107
108
|
|
|
108
|
-
// src/execute/handler.ts
|
|
109
|
-
import { writeFile } from "node:fs/promises";
|
|
110
|
-
|
|
111
109
|
// src/execute/load-state.ts
|
|
112
110
|
import fs from "node:fs/promises";
|
|
113
111
|
var load_state_default = async (opts, log) => {
|
|
@@ -251,6 +249,38 @@ var loadTransformOptions = async (opts, log) => {
|
|
|
251
249
|
return options;
|
|
252
250
|
};
|
|
253
251
|
|
|
252
|
+
// src/execute/serialize-output.ts
|
|
253
|
+
import { writeFile } from "node:fs/promises";
|
|
254
|
+
import stringify from "fast-safe-stringify";
|
|
255
|
+
var serializeOutput = async (options, result, logger) => {
|
|
256
|
+
let output = result;
|
|
257
|
+
if (output && (output.configuration || output.data)) {
|
|
258
|
+
const { data, configuration, ...rest } = result;
|
|
259
|
+
if (options.strictOutput !== false) {
|
|
260
|
+
output = { data };
|
|
261
|
+
} else {
|
|
262
|
+
output = {
|
|
263
|
+
data,
|
|
264
|
+
...rest
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (output === void 0) {
|
|
269
|
+
output = "";
|
|
270
|
+
} else {
|
|
271
|
+
output = stringify(output, void 0, 2);
|
|
272
|
+
}
|
|
273
|
+
if (options.outputStdout) {
|
|
274
|
+
logger.success(`Result: `);
|
|
275
|
+
logger.success(output);
|
|
276
|
+
} else if (options.outputPath) {
|
|
277
|
+
logger.success(`Writing output to ${options.outputPath}`);
|
|
278
|
+
await writeFile(options.outputPath, output);
|
|
279
|
+
}
|
|
280
|
+
return output;
|
|
281
|
+
};
|
|
282
|
+
var serialize_output_default = serializeOutput;
|
|
283
|
+
|
|
254
284
|
// src/repo/handler.ts
|
|
255
285
|
import { exec } from "node:child_process";
|
|
256
286
|
import treeify from "treeify";
|
|
@@ -269,18 +299,18 @@ var expand_adaptors_default = (names, log = nullLogger) => names == null ? void
|
|
|
269
299
|
|
|
270
300
|
// src/repo/handler.ts
|
|
271
301
|
var install = async (opts, log = defaultLogger) => {
|
|
272
|
-
log.timer("install");
|
|
273
302
|
let { packages, adaptor, repoDir } = opts;
|
|
274
|
-
log.success("Installing packages...");
|
|
275
303
|
if (packages) {
|
|
304
|
+
log.timer("install");
|
|
305
|
+
log.success("Installing packages...");
|
|
276
306
|
log.debug("repoDir is set to:", repoDir);
|
|
277
307
|
if (adaptor) {
|
|
278
308
|
packages = expand_adaptors_default(packages, log);
|
|
279
309
|
}
|
|
280
310
|
await rtInstall(packages, repoDir, log);
|
|
311
|
+
const duration = log.timer("install");
|
|
312
|
+
log.success(`Installation complete in ${duration}`);
|
|
281
313
|
}
|
|
282
|
-
const duration = log.timer("install");
|
|
283
|
-
log.success(`Installation complete in ${duration}`);
|
|
284
314
|
};
|
|
285
315
|
var clean = async (options, logger) => {
|
|
286
316
|
if (options.repoDir) {
|
|
@@ -335,23 +365,25 @@ var list = async (options, logger) => {
|
|
|
335
365
|
};
|
|
336
366
|
|
|
337
367
|
// src/execute/handler.ts
|
|
368
|
+
var getAutoinstallTargets = (options) => {
|
|
369
|
+
var _a;
|
|
370
|
+
if (options.autoinstall && options.adaptors) {
|
|
371
|
+
return (_a = options.adaptors) == null ? void 0 : _a.filter((a) => !/=/.test(a));
|
|
372
|
+
}
|
|
373
|
+
return [];
|
|
374
|
+
};
|
|
338
375
|
var executeHandler = async (options, logger) => {
|
|
339
376
|
const start = new Date().getTime();
|
|
340
|
-
|
|
377
|
+
const autoInstallTargets = getAutoinstallTargets(options);
|
|
378
|
+
if (autoInstallTargets.length) {
|
|
341
379
|
const { repoDir } = options;
|
|
342
380
|
logger.info("Auto-installing language adaptors");
|
|
343
|
-
await install({ packages:
|
|
381
|
+
await install({ packages: autoInstallTargets, repoDir }, logger);
|
|
344
382
|
}
|
|
345
383
|
const state = await load_state_default(options, logger);
|
|
346
384
|
const code = await compile_default(options, logger);
|
|
347
385
|
const result = await execute_default(code, state, options);
|
|
348
|
-
|
|
349
|
-
logger.success(`Result: `);
|
|
350
|
-
logger.success(result);
|
|
351
|
-
} else {
|
|
352
|
-
logger.success(`Writing output to ${options.outputPath}`);
|
|
353
|
-
await writeFile(options.outputPath, JSON.stringify(result, null, 4));
|
|
354
|
-
}
|
|
386
|
+
await serialize_output_default(options, result, logger);
|
|
355
387
|
const duration = printDuration(new Date().getTime() - start);
|
|
356
388
|
logger.success(`Done in ${duration}! \u2728`);
|
|
357
389
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openfn/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"description": "CLI devtools for the openfn toolchain.",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@types/mock-fs": "^4.13.1",
|
|
29
29
|
"@types/node": "^17.0.45",
|
|
30
30
|
"@types/yargs": "^17.0.12",
|
|
31
|
-
"ava": "
|
|
31
|
+
"ava": "5.1.0",
|
|
32
32
|
"mock-fs": "^5.1.4",
|
|
33
33
|
"ts-node": "^10.8.1",
|
|
34
34
|
"tslib": "^2.4.0",
|
|
@@ -36,9 +36,10 @@
|
|
|
36
36
|
"typescript": "^4.7.4"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
|
-
"@openfn/compiler": "^0.0.
|
|
40
|
-
"@openfn/logger": "^0.0.
|
|
41
|
-
"@openfn/runtime": "^0.0.
|
|
39
|
+
"@openfn/compiler": "^0.0.18",
|
|
40
|
+
"@openfn/logger": "^0.0.7",
|
|
41
|
+
"@openfn/runtime": "^0.0.12",
|
|
42
|
+
"fast-safe-stringify": "^2.1.1",
|
|
42
43
|
"rimraf": "^3.0.2",
|
|
43
44
|
"treeify": "^1.1.0",
|
|
44
45
|
"yargs": "^17.5.1"
|