UNPKG

@adikari/config-manager

Version:

Tool to deploy configs to different stores

54 lines (43 loc) 1.61 kB
'use strict'; const Bluebird = require('bluebird'); const isEmpty = require('lodash.isempty'); const get = require('lodash.get'); const mapKeys = require('lodash.mapkeys'); const chalk = require('chalk'); const { log } = require('../../utils/logger'); const makePopulateConfig = ({ parameterStore, promptRequiredConfigs }) => ({ settings, stage, interactive, missingOnly }) => { if (!get(settings, 'config')) { log(chalk.white('Skipping population of config...')); return Bluebird.resolve(); } log(chalk.white('Populating configuration...')); const overrides = get(settings, `config.${stage}`); if (isEmpty(overrides)) { log(chalk.cyan('Could not find configuration overrides. Using default values.')); } const path = get(settings, 'config.path'); const required = get(settings, 'config.required'); const defaults = get(settings, 'config.defaults') || {}; const outputs = get(settings, 'outputs') || {}; if(!path) { return Bluebird.reject(new Error('Please specify ssmPath for populateConfig')); } return promptRequiredConfigs({ parameterNames: get(settings, 'configParameters'), required, interactive, missingOnly }) .then(configFromPrompt => { const mergedConfig = Object.assign({}, configFromPrompt, defaults, outputs, overrides); const parameters = mapKeys(mergedConfig, (_, key) => { return `${path}/${key}`; }); return parameterStore.updateConfigs({ parameters }); }) }; module.exports = { makePopulateConfig };