@adikari/config-manager
Version:
Tool to deploy configs to different stores
69 lines (58 loc) • 1.94 kB
JavaScript
;
const chalk = require('chalk');
const path = require('path');
const { log } = require('../lib/utils/logger');
const {
makeParameterStore
} = require('./services/parameter-store/make-parameter-store');
const {
makeSettingsService
} = require('./services/settings/make-settings-service');
const { makeCfService } = require('./services/cf/make-cf-service');
const { makeList } = require('./commands/list/make-list');
const { makeRun } = require('./commands/run/make-run');
const { makeExport } = require('./commands/import-export/make-export');
const { makeImport } = require('./commands/import-export/make-import');
const { makeFetch } = require('./commands/fetch/make-fetch');
const { makeInit } = require('./commands/init/make-init');
const { makeConfigure } = require('./commands/configure/make-configure');
const makeConfigManager = ({
stage,
config,
variables = {},
interactive = false,
missingOnly = false
}) => {
const cfService = makeCfService();
config = config
? path.resolve(config)
: path.resolve(process.cwd(), 'configs.yml');
const settingsService = makeSettingsService({
settingsFilePath: config,
variables: Object.assign({}, variables, { stage }),
cfService
});
const parameterStore = makeParameterStore({
settingsService
});
log(chalk.gray(`Stage --> ${stage}`));
log(chalk.gray(`Config --> ${config}`));
const configure = makeConfigure({
interactive,
missingOnly,
stage,
settingsService,
parameterStore
});
const init = makeInit({ settingsService, cfService });
return {
configure,
init,
run: makeRun({ init, configure }),
list: makeList({ settingsService, parameterStore }),
export: makeExport({ settingsService, parameterStore }),
import: makeImport({ settingsService, parameterStore }),
fetch: makeFetch({ parameterStore, settingsService })
};
};
module.exports = { makeConfigManager };