91 lines
2.1 KiB
TypeScript
91 lines
2.1 KiB
TypeScript
import * as path from 'path';
|
|
import * as fs from 'fs';
|
|
import { Workspace } from './workspace';
|
|
import { parseRunOneOptions } from './parse-run-one-options';
|
|
|
|
/**
|
|
* Nx is being run inside a workspace.
|
|
*
|
|
* @param workspace Relevant local workspace properties
|
|
*/
|
|
export function initLocal(workspace: Workspace) {
|
|
const supportedNxCommands = require('@nrwl/workspace/src/command-line/supported-nx-commands')
|
|
.supportedNxCommands;
|
|
const runOpts = runOneOptions(workspace);
|
|
|
|
if (supportedNxCommands.includes(process.argv[2])) {
|
|
// required to make sure nrwl/workspace import works
|
|
if (workspace.type === 'nx') {
|
|
require(path.join(
|
|
workspace.dir,
|
|
'node_modules',
|
|
'@nrwl',
|
|
'tao',
|
|
'src',
|
|
'compat',
|
|
'compat.js'
|
|
));
|
|
}
|
|
require('@nrwl/workspace/src/command-line/nx-commands').commandsObject.argv;
|
|
} else {
|
|
if (runOpts === false || process.env.NX_SKIP_TASKS_RUNNER) {
|
|
loadCli(workspace);
|
|
} else {
|
|
require('@nrwl/workspace/src/command-line/run-one').runOne(runOpts);
|
|
}
|
|
}
|
|
}
|
|
|
|
function loadCli(workspace: Workspace) {
|
|
if (workspace.type === 'nx') {
|
|
require(path.join(
|
|
workspace.dir,
|
|
'node_modules',
|
|
'@nrwl',
|
|
'tao',
|
|
'index.js'
|
|
));
|
|
} else if (workspace.type === 'angular') {
|
|
require(path.join(
|
|
workspace.dir,
|
|
'node_modules',
|
|
'@angular',
|
|
'cli',
|
|
'lib',
|
|
'init.js'
|
|
));
|
|
} else {
|
|
console.error(`Cannot recognize the workspace type.`);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
function runOneOptions(
|
|
workspace: Workspace
|
|
): false | { project; target; configuration; overrides } {
|
|
try {
|
|
const nxJson = JSON.parse(
|
|
fs.readFileSync(path.join(workspace.dir, 'nx.json')).toString()
|
|
);
|
|
|
|
const workspaceConfigJson = JSON.parse(
|
|
fs
|
|
.readFileSync(
|
|
path.join(
|
|
workspace.dir,
|
|
workspace.type === 'nx' ? 'workspace.json' : 'angular.json'
|
|
)
|
|
)
|
|
.toString()
|
|
);
|
|
|
|
return parseRunOneOptions(
|
|
nxJson,
|
|
workspaceConfigJson,
|
|
process.argv.slice(2)
|
|
);
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|