/
prompt-installation.js
39 lines (35 loc) · 1.13 KB
/
prompt-installation.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
const { prompt } = require('enquirer');
const { green } = require('colorette');
const { runCommand } = require('./run-command');
const { getPackageManager } = require('./get-package-manager');
const { packageExists } = require('./package-exists');
/**
*
* @param packageName
* @param preMessage Message to show before the question
*/
async function promptInstallation(packageName, preMessage) {
const packageManager = getPackageManager();
const options = [packageManager === 'yarn' ? 'add' : 'install', '-D', packageName];
const commandToBeRun = `${packageManager} ${options.join(' ')}`;
if (preMessage) {
preMessage();
}
const question = `Would you like to install ${packageName}? (That will run ${green(commandToBeRun)})`;
const { installConfirm } = await prompt([
{
type: 'confirm',
name: 'installConfirm',
message: question,
initial: 'Y',
},
]);
if (installConfirm) {
await runCommand(commandToBeRun);
return packageExists(packageName);
}
process.exitCode = 2;
}
module.exports = {
promptInstallation,
};