18F/federalist

View on GitHub
api/workers/jobProcessors/nightlyBuilds.js

Summary

Maintainability
A
55 mins
Test Coverage
A
100%
const NightlyBuildsHelper = require('../../services/NightlyBuildsHelper');
const { logger } = require('../../../winston');

async function nightlyBuilds() {
  const results = await NightlyBuildsHelper.nightlyBuilds();

  const successes = results
    .filter(result => result.status === 'fulfilled')
    .map(result => result.value);

  const failures = results
    .filter(result => result.status === 'rejected')
    .map(result => result.reason);

  const msg = [`Queued nightly builds with ${successes.length} successes and ${failures.length} failures.`];
  if (successes.length) {
    msg.push(`   Successes:\n      ${successes.join('\n      ')}`);
  }
  if (failures.length) {
    msg.push(`   Failures:\n      ${failures.join('\n      ')}`);
  }

  if (failures.length) {
    logger.error(`Exiting with failed build errors.  ${msg.join('\n')}`);
    throw new Error(msg.join('\n'));
  }

  logger.info(msg.join('\n'));
}

module.exports = nightlyBuilds;