diff --git a/lib/API/Modules/Modularizer.js b/lib/API/Modules/Modularizer.js index b8b88e1e9..f54631d4b 100644 --- a/lib/API/Modules/Modularizer.js +++ b/lib/API/Modules/Modularizer.js @@ -137,7 +137,7 @@ Modularizer.installMultipleModules = function (modules, cb) { } } - cb(err); + if(cb) cb(err); }); }; diff --git a/lib/API/PM2/PM2IO.js b/lib/API/PM2/PM2IO.js index 9a6633e10..698e9c067 100644 --- a/lib/API/PM2/PM2IO.js +++ b/lib/API/PM2/PM2IO.js @@ -12,6 +12,8 @@ const Table = require('cli-table-redemption'); const open = require('../../tools/open.js'); const pkg = require('../../../package.json') const IOAPI = require('@pm2/js-api') +const semver = require('semver'); +const Modularizer = require('../Modules/Modularizer.js'); // const CustomStrategy = require('./custom_auth') @@ -43,7 +45,7 @@ module.exports = function(CLI) { }); }; - CLI.prototype.loginToKM = function() { + CLI.prototype.loginToKM = function(cb) { var promptly = require('promptly') return CLIAuthStrategy._retrieveTokens((err, tokens) => { @@ -81,15 +83,16 @@ module.exports = function(CLI) { } }); - if (target_bucket == null) + if (target_bucket == null) { return retryInsertion(); - linkOpenExit(target_bucket); + } + return linkOpenExit(target_bucket, cb); }); })(); } else { var target_bucket = buckets[0]; - linkOpenExit(target_bucket) + linkOpenExit(target_bucket, cb) } }).catch(err => { console.error(chalk.bold.red(`Oups, a error happened : ${err}`)) @@ -102,9 +105,36 @@ module.exports = function(CLI) { var promptly = require('promptly'); printMotd(); + const self = this + promptly.confirm(chalk.bold('Do you have a pm2.io account? (y/n)'), (err, answer) => { + if (answer == true) { - return this.loginToKM(); + return CLI.prototype.loginToKM(() => { + promptly.confirm(chalk.bold('Do you want to install monitoring modules (pm2-logrotate, pm2-server-monit, ...) ? (y/n)'), (errModule, answerModule) => { + if(!errModule && answerModule === true) { + const modules = ['pm2-logrotate', 'pm2-server-monit', 'event-loop-inspector'] + + if (semver.satisfies(process.version, '< 8.0.0')) { + modules.push('v8-profiler-node8') + } + + Modularizer.installMultipleModules(modules, () => { + self.reload('all') + setTimeout(function() { + console.log(chalk.bold.green('[+] Exiting now.')) + process.exit(cst.SUCCESS_EXIT); + }, 100); + }); + } else { + self.reload('all') + setTimeout(function() { + console.log(chalk.bold.green('[+] Exiting now.')) + process.exit(cst.SUCCESS_EXIT); + }, 100); + } + }); + }); } CLIAuthStrategy.registerViaCLI((err, data) => { console.log('[-] Creating Bucket...') @@ -214,7 +244,7 @@ module.exports = function(CLI) { }; - function linkOpenExit(target_bucket) { + function linkOpenExit(target_bucket, cb) { console.log('[-] Linking local PM2 to newly created bucket...') KMDaemon.launchAndInteract(cst, { public_key : target_bucket.public_id, @@ -227,6 +257,10 @@ module.exports = function(CLI) { setTimeout(function() { open('https://app.pm2.io/#/r/' + target_bucket.public_id); + + if (cb) { + return cb() + } console.log(chalk.bold.green('[+] Opened! Exiting now.')) setTimeout(function() { process.exit(cst.SUCCESS_EXIT);