UNPKG

1.14 kBJavaScriptView Raw
1const isObject = require('isobject');
2
3module.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 // if entries were specified as input, they take precedence
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};