async run()

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,
    };
  }