1 | const merge = require('deepmerge');
|
2 | const yargs = require('yargs');
|
3 | const { Neutrino } = require('../src');
|
4 |
|
5 | module.exports = ({
|
6 | cli,
|
7 | middleware,
|
8 | args,
|
9 | NODE_ENV,
|
10 | apiCommand = args._[0],
|
11 | commandName = args._[0],
|
12 | commandHandler,
|
13 | errorsHandler,
|
14 | successHandler
|
15 | }) => {
|
16 | const options = merge({
|
17 | args,
|
18 | command: apiCommand,
|
19 | debug: args.debug,
|
20 | quiet: args.quiet,
|
21 | env: { NODE_ENV }
|
22 | }, args.options);
|
23 | const api = Neutrino(options);
|
24 |
|
25 | middleware.forEach(middleware => api.use(middleware));
|
26 |
|
27 | if (!apiCommand || args.help) {
|
28 | Object
|
29 | .keys(api.commands)
|
30 | .forEach(command => {
|
31 | switch (command) {
|
32 | case 'start':
|
33 | case 'test':
|
34 | case 'build': {
|
35 | return;
|
36 | }
|
37 | default: {
|
38 | cli.command(command, api.commandDescriptions[command]);
|
39 | }
|
40 | }
|
41 | });
|
42 |
|
43 | yargs.showHelp();
|
44 | process.exit(1);
|
45 | }
|
46 |
|
47 | api.register(commandName, commandHandler);
|
48 |
|
49 | api
|
50 | .run(commandName)
|
51 | .fork(
|
52 | (errs) => {
|
53 | const errors = Array.isArray(errs) ? errs : [errs];
|
54 |
|
55 | if (errorsHandler) {
|
56 | errorsHandler(errors);
|
57 | }
|
58 |
|
59 | if (!args.quiet) {
|
60 | errors.forEach((err) => {
|
61 | if (!err) {
|
62 | return;
|
63 | }
|
64 |
|
65 | if (err.message && err.message.includes('No entry points found')) {
|
66 | console.error([
|
67 | 'No entry points were found.',
|
68 | 'Ensure that all intended middleware or presets are being used',
|
69 | 'and at least one entry point is defined.',
|
70 | 'You can inspect the final configuration with --inspect.'
|
71 | ].join(' '));
|
72 | } else {
|
73 | console.error(err);
|
74 | }
|
75 | });
|
76 | }
|
77 |
|
78 | process.exit(1);
|
79 | },
|
80 | successHandler
|
81 | );
|
82 |
|
83 | return api;
|
84 | };
|