briareus
Version:
Briareus assists with Feature Branch deploys to ECS
73 lines (54 loc) • 2.04 kB
JavaScript
const crypto = require('crypto');
const fs = require('fs');
const async = require('async');
const taskDefinitionValidator = require('./taskDefinitionValidator');
let utilities = module.exports = {
awsRetry(fn, cb) {
let params = {
times: 10,
interval: function (retryCount) {
return 100 * Math.pow(2, retryCount);
}
};
async.retry(params, fn, cb);
},
hashSlug(slug) {
return crypto.createHash('md5').update(slug).digest("hex").substr(0, 22);
},
getProjectBriareusDir(projectRootDir) {
return `${projectRootDir}/.briareus`;
},
getProjectConfigPath(projectRootDir) {
return `${utilities.getProjectBriareusDir(projectRootDir)}/config.json`;
},
getProjectTaskDefinitionPath(projectRootDir) {
return `${utilities.getProjectBriareusDir(projectRootDir)}/task-definition.json`;
},
getProjectConfigRaw(projectRootDir) {
let projectBriareusConfig = `${utilities.getProjectConfigPath(projectRootDir)}`;
if (!fs.existsSync(projectBriareusConfig)) {
throw new Error(`config.json file not found in .briareus directory`);
}
try { var config = JSON.parse(fs.readFileSync(projectBriareusConfig)); }
catch (e) {
throw new Error(`Error parsing json at ${projectBriareusConfig}. ${e.message}`);
}
return config;
},
packageBriareusConfig(projectRootDir) {
let projectTaskDefinition = `${utilities.getProjectTaskDefinitionPath(projectRootDir)}`;
let config = utilities.getProjectConfigRaw(projectRootDir);
if (!fs.existsSync(projectTaskDefinition)) {
throw new Error(`task-definition.json file not found in .briareus directory`);
}
try { var taskDefinition = JSON.parse(fs.readFileSync(projectTaskDefinition, 'utf8')); }
catch (e) {
throw new Error(`Error parsing json at ${projectTaskDefinition}. ${e.message}`);
}
let result = taskDefinitionValidator(taskDefinition);
if (result) throw result;
config.taskDefinition = taskDefinition;
return config;
}
}