62 lines
1.9 KiB
TypeScript
62 lines
1.9 KiB
TypeScript
import * as path from 'path';
|
|
import { execSync } from 'child_process';
|
|
import { output } from './output';
|
|
import { flatten } from 'flat';
|
|
|
|
/*
|
|
* Because we don't want to depend on @nrwl/workspace (to speed up the workspace creation)
|
|
* we duplicate the helper functions from @nrwl/workspace in this file.
|
|
*/
|
|
export function showNxWarning(workspaceName: string) {
|
|
try {
|
|
const pathToRunNxCommand = path.resolve(process.cwd(), workspaceName);
|
|
execSync('nx --version', {
|
|
cwd: pathToRunNxCommand,
|
|
stdio: ['ignore', 'ignore', 'ignore'],
|
|
});
|
|
} catch (e) {
|
|
// no nx found
|
|
output.addVerticalSeparator();
|
|
output.note({
|
|
title: `Nx CLI is not installed globally.`,
|
|
bodyLines: [
|
|
`This means that you might have to use "yarn nx" or "npx nx" to execute commands in the workspace.`,
|
|
`Run "yarn global add nx" or "npm install -g nx" to be able to execute command directly.`,
|
|
],
|
|
});
|
|
}
|
|
}
|
|
|
|
export function unparse(options: Object): string[] {
|
|
const unparsed = [];
|
|
for (const key of Object.keys(options)) {
|
|
const value = options[key];
|
|
unparseOption(key, value, unparsed);
|
|
}
|
|
|
|
return unparsed;
|
|
}
|
|
|
|
function unparseOption(key: string, value: any, unparsed: string[]) {
|
|
if (value === true) {
|
|
unparsed.push(`--${key}`);
|
|
} else if (value === false) {
|
|
unparsed.push(`--no-${key}`);
|
|
} else if (Array.isArray(value)) {
|
|
value.forEach((item) => unparseOption(key, item, unparsed));
|
|
} else if (Object.prototype.toString.call(value) === '[object Object]') {
|
|
const flattened = flatten<any, any>(value, { safe: true });
|
|
for (const flattenedKey in flattened) {
|
|
unparseOption(
|
|
`${key}.${flattenedKey}`,
|
|
flattened[flattenedKey],
|
|
unparsed
|
|
);
|
|
}
|
|
} else if (typeof value === 'string' && value.includes(' ')) {
|
|
unparsed.push(`--${key}="${value}"`);
|
|
} else if (value != null) {
|
|
unparsed.push(`--${key}=${value}`);
|
|
}
|
|
}
|