in src/core.js [212:268]
async run(options) {
options = options || {};
let extensions = options.extensions || Object.keys(this.extensions);
let extResponse, overallErrors = [];
let overrideResults = options.overrideResults || false;
let envVars = this.connector.getEnvVars();
let sources;
if (options['srcDatasetId']) {
sources = await this.connector.getDataList(options['srcDatasetId'], options);
} else {
sources = [options['srcData']]
}
options.envVars = envVars;
// Before all runs.
extResponse = this.runExtensions(extensions, 'beforeAllRuns', { sources: sources }, options);
overallErrors = overallErrors.concat(extResponse.errors);
// Clean up list if overrideResults.
if (overrideResults) {
this.connector.clearDataList(options['destDatasetId']);
}
// Run gatherer.
let newResults = await this.execute(options['destDatasetId'], sources, options);
// Collect all errors.
newResults.forEach(result => {
if (result.errors && result.errors.length > 0) {
overallErrors = overallErrors.concat(result.errors);
}
});
// After all runs.
extResponse = this.runExtensions(extensions, 'afterAllRuns', {
sources: sources,
results: newResults,
}, options);
overallErrors = overallErrors.concat(extResponse.errors);
if (!this.quiet) {
if (overallErrors.length > 0) {
console.log(`Run completed for ${sources.length} sources with errors:`);
console.log(overallErrors);
} else {
console.log(`Run completed for ${sources.length} sources.`);
}
}
return {
sources: sources,
results: newResults,
errors: overallErrors,
};
}