@nx-dotnet/utils
Version:
This library was generated with [Nx](https://nx.dev).
94 lines • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getProjectFileForNxProject = getProjectFileForNxProject;
exports.getProjectFileForNxProjectSync = getProjectFileForNxProjectSync;
exports.forEachDependantProject = forEachDependantProject;
exports.getNxDotnetProjects = getNxDotnetProjects;
exports.getProjectFilesForProject = getProjectFilesForProject;
exports.inlineNxTokens = inlineNxTokens;
exports.isNxCrystalEnabled = isNxCrystalEnabled;
const devkit_1 = require("@nx/devkit");
const fs_1 = require("fs");
const semver_1 = require("semver");
const xmldoc_1 = require("xmldoc");
const glob_1 = require("./glob");
async function getProjectFileForNxProject(project, tree) {
const srcDirectory = project.root;
return (0, glob_1.findProjectFileInPath)(srcDirectory, tree);
}
function getProjectFileForNxProjectSync(project) {
const srcDirectory = project.root;
return (0, glob_1.findProjectFileInPathSync)(srcDirectory);
}
function forEachDependantProject(targetProject, graph, forEachCallback) {
for (const dependant of graph.dependencies[targetProject] ?? []) {
if (forEachCallback) {
forEachCallback(graph.nodes[dependant.target].data, dependant.target, dependant.type === devkit_1.DependencyType.implicit);
}
}
}
async function getNxDotnetProjects(host) {
const allProjects = (0, devkit_1.getProjects)(host);
for (const [key, p] of allProjects) {
let isNetProject = false;
for (const pattern of ['*.csproj', '*.fsproj', '*.vbproj']) {
const matches = await (0, glob_1.glob)(pattern, p?.root);
if (matches?.length) {
isNetProject = true;
break;
}
}
if (!isNetProject) {
allProjects.delete(key);
}
}
return allProjects;
}
function getProjectFilesForProject(host, project, projectName) {
if (!project?.sourceRoot && !project?.root) {
throw new Error(`Unable to read source root for project ${projectName}`);
}
return host
.children(project.sourceRoot ?? project.root)
.filter((x) => x.endsWith('proj'))
.map((x) => `${project.sourceRoot ?? project.root}/${x}`);
}
/**
* Currently @nx/devkit[normalizePath] functionality differs a bit based on OS. See
*/
function normalizePath(p) {
return (0, devkit_1.normalizePath)(p).split('\\').join('/');
}
function inlineNxTokens(value, project) {
if (value.startsWith('{workspaceRoot}/')) {
value = value.replace(/^\{workspaceRoot\}\//, '');
}
if (value.includes('{workspaceRoot}')) {
throw new Error(`[nx-dotnet] The {workspaceRoot} token is only valid at the beginning of an output.`);
}
value = value.replace('{projectRoot}', project.root);
return value.replace('{projectName}', project.name);
}
function isNxCrystalEnabled(tree) {
const nxJson = tree
? ((0, devkit_1.readNxJson)(tree) ?? {})
: (0, devkit_1.readJsonFile)('nx.json');
if (nxJson.useInferencePlugins === false) {
return false;
}
// not the default
if ((0, semver_1.lt)(devkit_1.NX_VERSION, '18.0.0')) {
return process.env.NX_PCV3 === 'true' || process.env.NX_CRYSTAL === 'true';
}
// should be on by default
return !(process.env.NX_PCV3 === 'false' || process.env.NX_CRYSTAL === 'false');
}
function tryGetXmlDocument(file) {
try {
return new xmldoc_1.XmlDocument((0, fs_1.readFileSync)(file).toString());
}
catch {
return null;
}
}
//# sourceMappingURL=workspace.js.map