1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | var debug = require('debug')('pm2:paths');
|
8 | var p = require('path');
|
9 |
|
10 | function getDefaultPM2Home() {
|
11 | var PM2_ROOT_PATH;
|
12 |
|
13 | if (process.env.PM2_HOME)
|
14 | PM2_ROOT_PATH = process.env.PM2_HOME;
|
15 | else if (process.env.HOME && !process.env.HOMEPATH)
|
16 | PM2_ROOT_PATH = p.resolve(process.env.HOME, '.pm2');
|
17 | else if (process.env.HOME || process.env.HOMEPATH)
|
18 | PM2_ROOT_PATH = p.resolve(process.env.HOMEDRIVE, process.env.HOME || process.env.HOMEPATH, '.pm2');
|
19 | else {
|
20 | console.error('[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!');
|
21 | console.error('[PM2][Initialization] Defaulting to /etc/.pm2');
|
22 | PM2_ROOT_PATH = p.resolve('/etc', '.pm2');
|
23 | }
|
24 |
|
25 | debug('pm2 home resolved to %s', PM2_ROOT_PATH, process.env.HOME);
|
26 | return PM2_ROOT_PATH;
|
27 | }
|
28 |
|
29 | module.exports = function(PM2_HOME) {
|
30 | if (!PM2_HOME)
|
31 | PM2_HOME = getDefaultPM2Home()
|
32 |
|
33 | var pm2_file_stucture = {
|
34 | PM2_HOME : PM2_HOME,
|
35 | PM2_ROOT_PATH : PM2_HOME,
|
36 |
|
37 | PM2_CONF_FILE : p.resolve(PM2_HOME, 'conf.js'),
|
38 | PM2_MODULE_CONF_FILE : p.resolve(PM2_HOME, 'module_conf.json'),
|
39 |
|
40 | PM2_LOG_FILE_PATH : p.resolve(PM2_HOME, 'pm2.log'),
|
41 | PM2_PID_FILE_PATH : p.resolve(PM2_HOME, 'pm2.pid'),
|
42 |
|
43 | PM2_RELOAD_LOCKFILE : p.resolve(PM2_HOME, 'reload.lock'),
|
44 |
|
45 | DEFAULT_PID_PATH : p.resolve(PM2_HOME, 'pids'),
|
46 | DEFAULT_LOG_PATH : p.resolve(PM2_HOME, 'logs'),
|
47 | DEFAULT_MODULE_PATH : p.resolve(PM2_HOME, 'modules'),
|
48 | PM2_IO_ACCESS_TOKEN : p.resolve(PM2_HOME, 'pm2-io-token'),
|
49 | DUMP_FILE_PATH : p.resolve(PM2_HOME, 'dump.pm2'),
|
50 | DUMP_BACKUP_FILE_PATH : p.resolve(PM2_HOME, 'dump.pm2.bak'),
|
51 |
|
52 | DAEMON_RPC_PORT : p.resolve(PM2_HOME, 'rpc.sock'),
|
53 | DAEMON_PUB_PORT : p.resolve(PM2_HOME, 'pub.sock'),
|
54 | INTERACTOR_RPC_PORT : p.resolve(PM2_HOME, 'interactor.sock'),
|
55 |
|
56 | INTERACTOR_LOG_FILE_PATH : p.resolve(PM2_HOME, 'agent.log'),
|
57 | INTERACTOR_PID_PATH : p.resolve(PM2_HOME, 'agent.pid'),
|
58 | INTERACTION_CONF : p.resolve(PM2_HOME, 'agent.json5')
|
59 | };
|
60 |
|
61 |
|
62 | var paths = Object.keys(pm2_file_stucture);
|
63 | paths.forEach(function (key) {
|
64 | var envKey = key.indexOf('PM2_') > -1 ? key : 'PM2_' + key;
|
65 | if (process.env[envKey] && key !== 'PM2_HOME' && key !== 'PM2_ROOT_PATH') {
|
66 | pm2_file_stucture[key] = process.env[envKey];
|
67 | }
|
68 | });
|
69 |
|
70 | if (process.platform === 'win32' ||
|
71 | process.platform === 'win64') {
|
72 |
|
73 | pm2_file_stucture.DAEMON_RPC_PORT = '\\\\.\\pipe\\rpc.sock';
|
74 | pm2_file_stucture.DAEMON_PUB_PORT = '\\\\.\\pipe\\pub.sock';
|
75 | pm2_file_stucture.INTERACTOR_RPC_PORT = '\\\\.\\pipe\\interactor.sock';
|
76 | }
|
77 |
|
78 | return pm2_file_stucture;
|
79 | };
|