1 | const isObject = require('isobject');
|
2 |
|
3 | module.exports = (cli) => {
|
4 | const { flags: argv, entries } = cli;
|
5 | let entry;
|
6 | const flag = argv.entry;
|
7 | const assertArray = () => {
|
8 | if (!entry) {
|
9 | entry = { main: [] };
|
10 | } else if (!entry.main || !Array.isArray(entry.main)) {
|
11 | entry.main = [entry.main];
|
12 | }
|
13 | };
|
14 |
|
15 |
|
16 | if (entries.length) {
|
17 | entry = { main: entries.length > 1 ? entries : entries[0] };
|
18 | }
|
19 |
|
20 | if (flag) {
|
21 | if (isObject(flag)) {
|
22 | if (flag.main) {
|
23 | assertArray();
|
24 | entry.main = entry.main.concat(flag.main);
|
25 | }
|
26 |
|
27 | if (!entry) {
|
28 | entry = {};
|
29 | }
|
30 |
|
31 | const keys = Object.keys(flag).filter((name) => name !== 'main');
|
32 |
|
33 | for (const key of keys) {
|
34 | entry[key] = flag[key];
|
35 | }
|
36 | } else if (Array.isArray(flag)) {
|
37 | assertArray();
|
38 |
|
39 | entry.main = entry.main.concat(flag);
|
40 | } else if (typeof flag === 'string') {
|
41 | if (entry && entry.main) {
|
42 | assertArray();
|
43 |
|
44 | entry.main.push(flag);
|
45 | } else {
|
46 | entry = { main: flag };
|
47 | }
|
48 | }
|
49 | }
|
50 |
|
51 | return entry;
|
52 | };
|