UNPKG

briareus

Version:

Briareus assists with Feature Branch deploys to ECS

73 lines (54 loc) 2.04 kB
'use strict' 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; } }