@openfn/cli
Advanced tools
Comparing version
@@ -59,4 +59,4 @@ #!/usr/bin/env node | ||
const job = step; | ||
if (job.adaptor) { | ||
job.adaptor = expand(job.adaptor); | ||
if (job.adaptors) { | ||
job.adaptors = job.adaptors.map(expand); | ||
} | ||
@@ -63,0 +63,0 @@ }); |
@@ -272,6 +272,6 @@ // src/apollo/handler.ts | ||
const job = step; | ||
if (job.adaptor) { | ||
const { name, ...maybeVersionAndPath } = extractInfo(job.adaptor); | ||
job.adaptors?.forEach((adaptor) => { | ||
const { name, ...maybeVersionAndPath } = extractInfo(adaptor); | ||
adaptors[name] = maybeVersionAndPath; | ||
} | ||
}); | ||
}); | ||
@@ -311,5 +311,5 @@ return adaptors; | ||
const job = step; | ||
if (job.adaptor && !/=/.test(job.adaptor)) { | ||
adaptors[job.adaptor] = true; | ||
} | ||
job.adaptors?.filter((adaptor) => !/=/.test(adaptor)).forEach((adaptor) => { | ||
adaptors[adaptor] = true; | ||
}); | ||
}); | ||
@@ -448,7 +448,5 @@ return Object.keys(adaptors); | ||
const jobOpts = { | ||
...opts | ||
...opts, | ||
adaptors: job.adaptors ?? opts.adaptors | ||
}; | ||
if (job.adaptor) { | ||
jobOpts.adaptors = [job.adaptor]; | ||
} | ||
if (job.expression) { | ||
@@ -489,29 +487,28 @@ job.expression = await compileJob( | ||
if (opts.adaptors?.length && opts.ignoreImports != true) { | ||
let exports; | ||
const [pattern] = opts.adaptors; | ||
const [specifier] = pattern.split("="); | ||
log.debug(`Trying to preload types for ${specifier}`); | ||
const path9 = await resolveSpecifierPath(pattern, opts.repoDir, log); | ||
if (path9) { | ||
try { | ||
exports = await preloadAdaptorExports( | ||
path9, | ||
opts.useAdaptorsMonorepo, | ||
log | ||
); | ||
} catch (e) { | ||
log.error(`Failed to load adaptor typedefs from path ${path9}`); | ||
log.error(e); | ||
const adaptorsConfig = []; | ||
for (const adaptorInput of opts.adaptors) { | ||
let exports; | ||
const [specifier] = adaptorInput.split("="); | ||
log.debug(`Trying to preload types for ${specifier}`); | ||
const path9 = await resolveSpecifierPath(adaptorInput, opts.repoDir, log); | ||
if (path9) { | ||
try { | ||
exports = await preloadAdaptorExports(path9, log); | ||
} catch (e) { | ||
log.error(`Failed to load adaptor typedefs from path ${path9}`); | ||
log.error(e); | ||
} | ||
} | ||
if (!exports || exports.length === 0) { | ||
log.debug(`No module exports found for ${adaptorInput}`); | ||
} | ||
adaptorsConfig.push({ | ||
name: stripVersionSpecifier(specifier), | ||
exports, | ||
exportAll: true | ||
}); | ||
} | ||
if (!exports || exports.length === 0) { | ||
log.debug(`No module exports found for ${pattern}`); | ||
} | ||
options["add-imports"] = { | ||
ignore: opts.ignoreImports, | ||
adaptor: { | ||
name: stripVersionSpecifier(specifier), | ||
exports, | ||
exportAll: true | ||
} | ||
adaptors: adaptorsConfig | ||
}; | ||
@@ -660,4 +657,4 @@ } | ||
const job = step; | ||
if (job.adaptor) { | ||
job.adaptor = expand(job.adaptor); | ||
if (job.adaptors) { | ||
job.adaptors = job.adaptors.map(expand); | ||
} | ||
@@ -707,4 +704,6 @@ }); | ||
const job = step; | ||
if (job.adaptor) { | ||
job.adaptor = updatePath(job.adaptor, monorepoPath, log); | ||
if (job.adaptors) { | ||
job.adaptors = job.adaptors.map( | ||
(a) => updatePath(a, monorepoPath, log) | ||
); | ||
} | ||
@@ -776,9 +775,7 @@ }); | ||
const name = path4.parse(expressionPath).name; | ||
const step = { expression }; | ||
if (options.adaptors) { | ||
const [adaptor] = options.adaptors; | ||
if (adaptor) { | ||
step.adaptor = adaptor; | ||
} | ||
} | ||
const step = { | ||
expression, | ||
// The adaptor should have been expanded nicely already, so we don't need intervene here | ||
adaptors: options.adaptors ?? [] | ||
}; | ||
const wfOptions = {}; | ||
@@ -878,2 +875,12 @@ maybeAssign(options, wfOptions, ["timeout"]); | ||
}; | ||
var ensureAdaptors = (plan) => { | ||
Object.values(plan.workflow.steps).forEach((step) => { | ||
const job = step; | ||
if (job.adaptor) { | ||
job.adaptors = [job.adaptor]; | ||
delete job.adaptor; | ||
} | ||
job.adaptors ??= []; | ||
}); | ||
}; | ||
var loadXPlan = async (plan, options, logger, defaultName = "") => { | ||
@@ -886,2 +893,3 @@ if (!plan.options) { | ||
} | ||
ensureAdaptors(plan); | ||
await importExpressions(plan, options.baseDir, logger); | ||
@@ -956,3 +964,3 @@ if (options.expandAdaptors) { | ||
"previous", | ||
"adaptor", | ||
"adaptors", | ||
"expression", | ||
@@ -968,3 +976,3 @@ "state", | ||
} | ||
if ("adaptor" in step && !("expression" in step)) { | ||
if (step.adaptors?.length && !("expression" in step)) { | ||
throw new Error( | ||
@@ -1660,9 +1668,7 @@ `Step ${step.id ?? index} with an adaptor must also have an expression` | ||
const { adaptors, logJson } = options; | ||
let adaptor = ""; | ||
if (adaptors && adaptors.length) { | ||
adaptor = adaptors[0]; | ||
} | ||
let adaptorVersion; | ||
let adaptorName = ""; | ||
if (adaptor) { | ||
let longestAdaptorName = ""; | ||
const adaptorList = []; | ||
adaptors?.forEach((adaptor) => { | ||
let adaptorVersion; | ||
let adaptorName = ""; | ||
if (adaptor.match("=")) { | ||
@@ -1680,5 +1686,9 @@ const [namePart, pathPart] = adaptor.split("="); | ||
} | ||
} | ||
adaptorList.push([adaptorName, adaptorVersion]); | ||
if (adaptorName.length > longestAdaptorName.length) { | ||
longestAdaptorName = adaptorName; | ||
} | ||
}); | ||
const longest = Math.max( | ||
...[NODE, CLI2, RUNTIME2, COMPILER2, adaptorName].map((s) => s.length) | ||
...[NODE, CLI2, RUNTIME2, COMPILER2, longestAdaptorName].map((s) => s.length) | ||
); | ||
@@ -1703,4 +1713,6 @@ const prefix = (str) => ` ${t} ${str.padEnd(longest + 4, " ")}`; | ||
} | ||
if (adaptorName) { | ||
output.versions[adaptorName] = adaptorVersion; | ||
if (adaptorList.length) { | ||
for (const [name, version2] of adaptorList) { | ||
output.versions[name] = version2; | ||
} | ||
} | ||
@@ -1716,5 +1728,7 @@ } else { | ||
} | ||
if (adaptorName) { | ||
output += ` | ||
${prefix(adaptorName)}${adaptorVersion}`; | ||
if (adaptorList.length) { | ||
for (const [name, version2] of adaptorList) { | ||
output += ` | ||
${prefix(name)}${version2}`; | ||
} | ||
} | ||
@@ -1721,0 +1735,0 @@ } |
{ | ||
"name": "@openfn/cli", | ||
"version": "1.8.5", | ||
"version": "1.8.6", | ||
"description": "CLI devtools for the openfn toolchain.", | ||
@@ -50,7 +50,7 @@ "engines": { | ||
"yargs": "^17.7.2", | ||
"@openfn/compiler": "0.3.3", | ||
"@openfn/compiler": "0.4.0", | ||
"@openfn/deploy": "0.8.0", | ||
"@openfn/describe-package": "0.1.2", | ||
"@openfn/logger": "1.0.2", | ||
"@openfn/deploy": "0.8.0", | ||
"@openfn/runtime": "1.4.2" | ||
"@openfn/runtime": "1.5.0" | ||
}, | ||
@@ -57,0 +57,0 @@ "files": [ |
91981
0.75%2536
0.56%+ Added
+ Added
- Removed
- Removed
Updated
Updated