briareus
Version:
Briareus assists with Feature Branch deploys to ECS
44 lines (37 loc) • 1.29 kB
JavaScript
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();
}
}