UNPKG

briareus

Version:

Briareus assists with Feature Branch deploys to ECS

44 lines (37 loc) 1.29 kB
'use strict' const _ = require('lodash'); const Ajv = require('ajv'); const errors = require('../errors'); module.exports = function (service) { function extractEnvs(scopes, key) { return _.flatMap(scopes, (scope, scopeName) => { return _.flatMap(scope.containers, (containerName) => { return _.flatMap(_.toPairs(scope[key]), (env) => { return { id: `${containerName}/${env[0]}`, scope: scopeName, container: containerName, name: env[0], value: env[1] }; }); }); }); } return function (req, res, next) { let envs = extractEnvs(req.body.scopes, 'envs'); let secrets = extractEnvs(req.body.scopes, 'secrets'); let duplicateEnvs = _.map(_.filter(_.groupBy([].concat(envs, secrets), 'id'), (a) => a.length > 1), _.first); let envErrors = _.map(duplicateEnvs, (dupes) => { return { message: `Duplicate environment variable/secret detected. "${dupes.name}" was defined twice as Environment variable or Secret in container "${dupes.container}"` } }); if (envErrors.length > 0) { return next(new errors.InputValidationError(envErrors)); } req.body.envs = envs; req.body.secrets = secrets; next(); } }