@nx/gradle
Version:
65 lines (64 loc) • 3.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createDependencies = void 0;
const devkit_1 = require("@nx/devkit");
const node_path_1 = require("node:path");
const get_gradle_report_1 = require("../utils/get-gradle-report");
const split_config_files_1 = require("../utils/split-config-files");
const createDependencies = async (_, context) => {
const gradleFiles = findGradleFiles(context.filesToProcess);
if (gradleFiles.length === 0) {
return [];
}
const gradleDependenciesStart = performance.mark('gradleDependencies:start');
const { gradleFileToGradleProjectMap, gradleProjectNameToProjectRootMap, buildFileToDepsMap, gradleProjectToChildProjects, } = (0, get_gradle_report_1.getCurrentGradleReport)();
const dependencies = new Set();
for (const gradleFile of gradleFiles) {
const gradleProject = gradleFileToGradleProjectMap.get(gradleFile);
const projectName = Object.values(context.projects).find((project) => project.root === (0, node_path_1.dirname)(gradleFile))?.name;
const dependedProjects = buildFileToDepsMap.get(gradleFile);
if (projectName && dependedProjects?.size) {
dependedProjects?.forEach((dependedProject) => {
const targetProjectRoot = gradleProjectNameToProjectRootMap.get(dependedProject);
const targetProjectName = Object.values(context.projects).find((project) => project.root === targetProjectRoot)?.name;
if (targetProjectName) {
const dependency = {
source: projectName,
target: targetProjectName,
type: devkit_1.DependencyType.static,
sourceFile: gradleFile,
};
(0, devkit_1.validateDependency)(dependency, context);
dependencies.add(dependency);
}
});
}
gradleProjectToChildProjects.get(gradleProject)?.forEach((childProject) => {
if (childProject) {
const dependency = {
source: projectName,
target: childProject,
type: devkit_1.DependencyType.static,
sourceFile: gradleFile,
};
(0, devkit_1.validateDependency)(dependency, context);
dependencies.add(dependency);
}
});
}
const gradleDependenciesEnd = performance.mark('gradleDependencies:end');
performance.measure('gradleDependencies', gradleDependenciesStart.name, gradleDependenciesEnd.name);
return Array.from(dependencies);
};
exports.createDependencies = createDependencies;
function findGradleFiles(fileMap) {
const gradleFiles = [];
for (const [_, files] of Object.entries(fileMap.projectFileMap)) {
for (const file of files) {
if (split_config_files_1.GRADLE_BUILD_FILES.has((0, node_path_1.basename)(file.file))) {
gradleFiles.push(file.file);
}
}
}
return gradleFiles;
}