@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 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 (intead of a file)"
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.",
@@ -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
- if (options.autoinstall) {
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: options.adaptors, repoDir }, logger);
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
- if (options.outputStdout) {
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.16",
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": "^4.2.0",
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.15",
40
- "@openfn/logger": "^0.0.6",
41
- "@openfn/runtime": "^0.0.11",
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"