75 lines
1.8 KiB
TypeScript
75 lines
1.8 KiB
TypeScript
import { runCommand } from '../tasks-runner/run-command';
|
|
import { createProjectGraph, ProjectGraph } from '../core/project-graph';
|
|
import { readEnvironment } from '../core/file-utils';
|
|
import { EmptyReporter } from '../tasks-runner/empty-reporter';
|
|
import { splitArgsIntoNxArgsAndOverrides } from './utils';
|
|
import { projectHasTarget } from '../utils/project-graph-utils';
|
|
|
|
export function runOne(opts: {
|
|
project: string;
|
|
target: string;
|
|
configuration: string;
|
|
parsedArgs: any;
|
|
}): void {
|
|
const { nxArgs, overrides } = splitArgsIntoNxArgsAndOverrides(
|
|
{
|
|
...opts.parsedArgs,
|
|
configuration: opts.configuration,
|
|
target: opts.target,
|
|
_: []
|
|
},
|
|
'run-one'
|
|
);
|
|
|
|
const projectGraph = createProjectGraph();
|
|
const { projects, projectsMap } = getProjects(
|
|
projectGraph,
|
|
nxArgs.withDeps,
|
|
opts.project,
|
|
opts.target
|
|
);
|
|
const env = readEnvironment(opts.target, projectsMap);
|
|
const reporter = nxArgs.withDeps
|
|
? new (require(`../tasks-runner/run-one-reporter`)).RunOneReporter(
|
|
opts.project
|
|
)
|
|
: new EmptyReporter();
|
|
|
|
runCommand(
|
|
projects,
|
|
projectGraph,
|
|
env,
|
|
nxArgs,
|
|
overrides,
|
|
reporter,
|
|
opts.project
|
|
);
|
|
}
|
|
|
|
function getProjects(
|
|
projectGraph: ProjectGraph,
|
|
includeDeps: boolean,
|
|
project: string,
|
|
target: string
|
|
): any {
|
|
let projects = [projectGraph.nodes[project]];
|
|
let projectsMap = {
|
|
[project]: projectGraph.nodes[project]
|
|
};
|
|
|
|
if (includeDeps) {
|
|
const s = require(`../core/project-graph`);
|
|
const deps = s.onlyWorkspaceProjects(s.withDeps(projectGraph, projects))
|
|
.nodes;
|
|
const projectsWithTarget = Object.values(deps).filter((p: any) =>
|
|
projectHasTarget(p, target)
|
|
);
|
|
return {
|
|
projects: projectsWithTarget,
|
|
projectsMap: deps
|
|
};
|
|
} else {
|
|
return { projects, projectsMap };
|
|
}
|
|
}
|