This repository has been archived by the owner on Sep 27, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathapp.js
76 lines (62 loc) · 2.4 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'use strict';
const path = require('path');
const pmx = require('pmx');
const pm2 = require('pm2');
const fsUtils = require('./lib/fs-utils');
const pino = require('pino')({
name: 'pm2-env-module',
prettyPrint: true, // don't need iper-performance, but need legibility
});
const pm2EnvModule = (config) => {
const log = pino.child({ level: config.logLevel });
pm2.list((err, processList) => {
if (err) {
log.error(err, 'Error on listing pm2 process');
return;
}
processList
.filter(process => process.name !== 'pm2-env-module')
.forEach((process) => {
log.debug('Check .env on process: %s', process.name);
const processRootPath = path.dirname(process.pm2_env.pm_exec_path);
const currentEnv = process.pm2_env[config.envVariableName];
log.debug('Current env: %s', currentEnv);
const envFile = path.resolve(processRootPath, config.envRelativePath, config.envFilename);
log.trace('Destination env file: %s', envFile);
let processPromise;
if (config.buildEnvFile === true) {
log.trace('Building file .env');
const envText = Object.entries(process.pm2_env)
.filter(([, value]) => typeof value !== 'object')
.map(([key, value]) => `${key}=${value}`)
.join('\n');
log.trace('Env file generated:\n%s', envText);
log.debug('Building file: %s', envFile);
processPromise = fsUtils.writeTextFile(envFile, envText);
} else {
const envFileToApply = path.resolve(processRootPath, config.envRelativePath, `${config.envFilename}.${currentEnv}`);
log.trace('Source env file to rename: %s', envFileToApply);
processPromise = fsUtils.existFile(envFileToApply)
.then(() => {
log.debug('Try to copy %s to %s', envFileToApply, envFile);
return fsUtils.copyFile(envFileToApply, envFile);
});
}
processPromise
.then(renamed => log.info('.env file ready: %s', renamed))
.catch(renameError => log.error(renameError, 'Error evaluating .env file'));
});
});
};
// pmx.action('rename', (reply) => {
// console.log('rename.');
// pm2EnvModule(configuration);
// return reply('done');
// });
pmx.initModule({}, (err, conf) => {
if (err) {
pino.fatal(err, 'Error on init module');
process.exit(2);
}
pm2EnvModule(conf);
});