oprah
Version:
Package to deploy parameters to AWS
46 lines (36 loc) • 1.12 kB
JavaScript
const chalk = require('chalk');
const get = require('lodash/get');
const fs = require('fs');
const { log } = require('../../utils/logger');
const makeExport = ({ settingsService, parameterStore }) => async (
filePath,
target,
configOnly = false
) => {
const settings = await settingsService.getSettings();
log(chalk.white(`Getting parameters..`));
const secretsPromise = configOnly
? Promise.resolve({})
: parameterStore.getParameters({
parameterNames: get(settings, 'secretParameters')
});
const configsPromise = parameterStore.getParameters({
parameterNames: get(settings, 'configParameters')
});
const [secrets, configs] = await Promise.all([
secretsPromise,
configsPromise
]);
log(chalk.white(`Saving parameters to: ${filePath}`));
return fs.writeFileSync(
filePath,
target === 'env'
? `${Object.entries({ ...configs, ...secrets })
.map(([key, val]) => `${key.replace(/[^A-Za-z0-9]+/g, '_')}="${val}"`)
.join('\n')}\n`
: JSON.stringify({ configs, secrets }, null, 2)
);
};
module.exports = {
makeExport
};