1 | "use strict";
|
2 | const fs = require("fs-extra");
|
3 | const lodash_1 = require("lodash");
|
4 | const path_1 = require("path");
|
5 | const addConfig_1 = require("../fns/add-cmd/addConfig");
|
6 | const cmdName_1 = require("../fns/cmdName");
|
7 | const sortObjectByKey_1 = require("../fns/sortObjectByKey");
|
8 | const PromptableConfig_1 = require("../lib/PromptableConfig");
|
9 | const command = cmdName_1.cmdName(__filename);
|
10 | const modulesDir = path_1.dirname(require.resolve('../lib/init/00_code-owners'));
|
11 | const initModules = fs.readdirSync(modulesDir, 'utf8')
|
12 | .sort()
|
13 | .map(p => require(path_1.join(modulesDir, p)));
|
14 | const cmd = {
|
15 | builder(argv) {
|
16 | addConfig_1.addConfig(argv, 'init');
|
17 | const opts = {};
|
18 | for (const mod of initModules) {
|
19 | if (!lodash_1.isEmpty(mod.options)) {
|
20 | Object.assign(opts, mod.options);
|
21 | }
|
22 | }
|
23 | return argv.options(sortObjectByKey_1.sortObjectByKey(opts));
|
24 | },
|
25 | command,
|
26 | describe: 'Project initialisation operations',
|
27 | handler(conf) {
|
28 | const c = new PromptableConfig_1.PromptableConfig(conf);
|
29 | for (const mod of initModules) {
|
30 | mod.handle(c);
|
31 | }
|
32 | }
|
33 | };
|
34 | module.exports = cmd;
|