1 | "use strict"; |
||
2 | |||
3 | if (['dev', 'prod'].indexOf(process.env.NODE_ENV)) { |
||
4 | console.warn(`Undefined node environment "${process.env.NODE_ENV}", fallback to dev !`); |
||
5 | process.env.NODE_ENV = 'dev'; |
||
6 | } |
||
7 | |||
8 | const logger = require('./lib/logger'); |
||
9 | const server = require('./lib/server'); |
||
10 | const Alfred = require('./lib/Alfred'); |
||
11 | const Client = require('./lib/Client'); |
||
12 | const PluginManager = require('./lib/PluginManager'); |
||
13 | const pkg = require('./package.json'); |
||
14 | const NestedError = require('nested-error-stacks'); |
||
15 | |||
16 | const appName = pkg.name; |
||
17 | |||
18 | const alfred = new Alfred( |
||
19 | new Client(), |
||
20 | new PluginManager([]) |
||
21 | ); |
||
22 | |||
23 | const cleanAndExit = (exitCode = 0) => { |
||
0 ignored issues
–
show
|
|||
24 | let canExit = false; |
||
25 | const waitAndExit = arg => { |
||
26 | |||
27 | if (arg instanceof Error) { |
||
28 | exitCode = 1; |
||
0 ignored issues
–
show
|
|||
29 | } |
||
30 | |||
31 | if (canExit === false) { |
||
32 | setTimeout(waitAndExit, 1000); |
||
33 | } else { |
||
34 | process.exit(); |
||
0 ignored issues
–
show
Compatibility
Debugging Code
Best Practice
introduced
by
|
|||
35 | } |
||
36 | }; |
||
37 | |||
38 | const stopAlfred = arg => { |
||
39 | |||
40 | if (arg instanceof Error) { |
||
41 | exitCode = 1; |
||
0 ignored issues
–
show
|
|||
42 | } |
||
43 | return alfred.sleep() |
||
44 | }; |
||
45 | const updateCleanState = arg => { |
||
46 | if (arg instanceof Error) { |
||
47 | exitCode = 1; |
||
0 ignored issues
–
show
|
|||
48 | } |
||
49 | canExit = true; |
||
50 | }; |
||
51 | server.stop() |
||
52 | .then(stopAlfred, stopAlfred) |
||
53 | .then(updateCleanState, updateCleanState) |
||
54 | }; |
||
55 | |||
56 | process.on('SIGINT', cleanAndExit); |
||
57 | |||
58 | logger.starting(appName); |
||
59 | return alfred.wakeUp() |
||
60 | .then(() => server.start()) |
||
61 | .then(() => logger.started(appName)) |
||
62 | .catch(error => { |
||
63 | const newError = new NestedError(`Exit ${appName} after an error at initialisation`, error); |
||
0 ignored issues
–
show
|
|||
64 | logger.error(error.stack); |
||
65 | cleanAndExit(1); |
||
66 | }); |
||
67 |
This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.