UNPKG

@yolkai/nx-workspace

Version:

Extensible Dev Tools for Monorepos

56 lines (55 loc) 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const run_command_1 = require("../tasks-runner/run-command"); const utils_1 = require("./utils"); const output_1 = require("../utils/output"); const project_graph_1 = require("../core/project-graph"); const file_utils_1 = require("../core/file-utils"); const project_has_target_and_configuration_1 = require("../utils/project-has-target-and-configuration"); function runMany(parsedArgs) { const { nxArgs, overrides } = utils_1.splitArgsIntoNxArgsAndOverrides(parsedArgs); const env = file_utils_1.readEnvironment(nxArgs.target); const projectGraph = project_graph_1.createProjectGraph(); const projects = projectsToRun(nxArgs, projectGraph); run_command_1.runCommand(projects, projectGraph, env, nxArgs, overrides); } exports.runMany = runMany; function projectsToRun(nxArgs, projectGraph) { const allProjects = Object.values(projectGraph.nodes); if (nxArgs.all) { return runnableForTargetAndConfiguration(allProjects, nxArgs.target, nxArgs.configuration); } else { checkForInvalidProjects(nxArgs, allProjects); let selectedProjects = allProjects.filter(p => nxArgs.projects.indexOf(p.name) > -1); if (nxArgs.withDeps) { selectedProjects = Object.values(project_graph_1.withDeps(projectGraph, selectedProjects).nodes); } return runnableForTargetAndConfiguration(selectedProjects, nxArgs.target, nxArgs.configuration, true); } } function checkForInvalidProjects(nxArgs, allProjects) { const invalid = nxArgs.projects.filter(name => !allProjects.find(p => p.name === name)); if (invalid.length !== 0) { throw new Error(`Invalid projects: ${invalid.join(', ')}`); } } function runnableForTargetAndConfiguration(projects, target, configuration, strict = false) { const notRunnable = []; const runnable = []; for (let project of projects) { if (project_has_target_and_configuration_1.projectHasTargetAndConfiguration(project, target, configuration)) { runnable.push(project); } else { notRunnable.push(project); } } if (strict && notRunnable.length) { output_1.output.warn({ title: `the following do not have configuration for "${target}"`, bodyLines: notRunnable.map(p => '- ' + p) }); } return runnable; }