create-nx-workspace
Version:
128 lines (127 loc) • 4.29 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.determineNxCloud = determineNxCloud;
exports.determineIfGitHubWillBeUsed = determineIfGitHubWillBeUsed;
exports.determineDefaultBase = determineDefaultBase;
exports.determinePackageManager = determinePackageManager;
const enquirer = require("enquirer");
const chalk = require("chalk");
const ab_testing_1 = require("../utils/nx/ab-testing");
const output_1 = require("../utils/output");
const default_base_1 = require("../utils/git/default-base");
const package_manager_1 = require("../utils/package-manager");
const string_utils_1 = require("../utils/string-utils");
const is_ci_1 = require("../utils/ci/is-ci");
async function determineNxCloud(parsedArgs) {
if (parsedArgs.nxCloud) {
return parsedArgs.nxCloud;
}
else if (!parsedArgs.interactive || (0, is_ci_1.isCI)()) {
return 'skip';
}
else {
return nxCloudPrompt('setupCI');
}
}
async function determineIfGitHubWillBeUsed(parsedArgs) {
if (parsedArgs.nxCloud === 'yes' || parsedArgs.nxCloud === 'circleci') {
if (parsedArgs?.useGitHub)
return true;
const reply = await enquirer.prompt([
{
name: 'github',
message: 'Will you be using GitHub as your git hosting provider?',
type: 'autocomplete',
choices: [{ name: 'Yes' }, { name: 'No' }],
initial: 0,
},
]);
return reply.github === 'Yes';
}
return false;
}
async function nxCloudPrompt(key) {
const { message, choices, initial, fallback, footer, hint } = ab_testing_1.messages.getPrompt(key);
const promptConfig = {
name: 'NxCloud',
message,
type: 'autocomplete',
choices,
initial,
}; // meeroslav: types in enquirer are not up to date
if (footer) {
promptConfig.footer = () => chalk.dim(footer);
}
if (hint) {
promptConfig.hint = () => chalk.dim(hint);
}
return enquirer.prompt([promptConfig]).then((a) => {
if (fallback && a.NxCloud === fallback.value) {
return nxCloudPrompt(fallback.key);
}
return a.NxCloud;
});
}
async function determineDefaultBase(parsedArgs) {
if (parsedArgs.defaultBase) {
return parsedArgs.defaultBase;
}
else if (parsedArgs.allPrompts) {
return enquirer
.prompt([
{
name: 'DefaultBase',
message: `Main branch name`,
initial: `main`,
type: 'input',
},
])
.then((a) => {
if (!a.DefaultBase) {
output_1.output.error({
title: 'Invalid branch name',
bodyLines: [`Branch name cannot be empty`],
});
process.exit(1);
}
return a.DefaultBase;
});
}
return (0, default_base_1.deduceDefaultBase)();
}
async function determinePackageManager(parsedArgs) {
const packageManager = parsedArgs.packageManager;
if (packageManager) {
if (package_manager_1.packageManagerList.includes(packageManager)) {
return packageManager;
}
output_1.output.error({
title: 'Invalid package manager',
bodyLines: [
`Package manager must be one of ${(0, string_utils_1.stringifyCollection)([
...package_manager_1.packageManagerList,
])}`,
],
});
process.exit(1);
}
else if (parsedArgs.allPrompts) {
return enquirer
.prompt([
{
name: 'packageManager',
message: `Which package manager to use`,
initial: 0,
type: 'autocomplete',
choices: [
{ name: 'npm', message: 'NPM' },
{ name: 'yarn', message: 'Yarn' },
{ name: 'pnpm', message: 'PNPM' },
{ name: 'bun', message: 'Bun' },
],
},
])
.then((a) => a.packageManager);
}
return (0, package_manager_1.detectInvokedPackageManager)();
}