@adikari/config-manager
Version:
Tool to deploy configs to different stores
50 lines (41 loc) • 1.33 kB
JavaScript
;
// TODO: this file needs a lot of tests
const get = require('lodash.get');
const { promptForValues } = require('./prompt-for-values');
const { validateExistingValues } = require('./validate-existing-values');
const makePromptRequiredConfigs = ({ parameterStore }) => ({ parameterNames, required, interactive, missingOnly }) => {
const normalizedRequired = required || {};
return parameterStore.getParameters({ parameterNames })
.then(currentValues => {
if (!interactive) {
return validateExistingValues({
requiredValues: normalizedRequired,
currentValues
});
}
if (missingOnly) {
const missingValues = Object.keys(normalizedRequired)
.reduce((acc, key) => {
if (!get(currentValues, key)) {
return Object.assign(
{},
acc,
{
[key]: get(normalizedRequired, key)
}
);
}
return acc;
}, {});
return promptForValues({
requiredValues: missingValues,
currentValues: {}
})
}
return promptForValues({
requiredValues: normalizedRequired,
currentValues
});
});
};
module.exports = { makePromptRequiredConfigs };