@nx/gradle 20.3.0-canary.20241217-ee4de0b → 20.3.0-canary.20241218-fb40366

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/gradle",
3
- "version": "20.3.0-canary.20241217-ee4de0b",
3
+ "version": "20.3.0-canary.20241218-fb40366",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Gradle allows Gradle tasks to be run through Nx",
6
6
  "repository": {
@@ -34,7 +34,7 @@
34
34
  "migrations": "./migrations.json"
35
35
  },
36
36
  "dependencies": {
37
- "@nx/devkit": "20.3.0-canary.20241217-ee4de0b"
37
+ "@nx/devkit": "20.3.0-canary.20241218-fb40366"
38
38
  },
39
39
  "publishConfig": {
40
40
  "access": "public"
@@ -8,6 +8,18 @@ export interface GradleReport {
8
8
  gradleProjectNameToProjectRootMap: Map<string, string>;
9
9
  gradleProjectToChildProjects: Map<string, string[]>;
10
10
  }
11
+ export interface GradleReportJSON {
12
+ hash: string;
13
+ gradleFileToGradleProjectMap: Record<string, string>;
14
+ buildFileToDepsMap: Record<string, string>;
15
+ gradleFileToOutputDirsMap: Record<string, Record<string, string>>;
16
+ gradleProjectToTasksTypeMap: Record<string, Record<string, string>>;
17
+ gradleProjectToTasksMap: Record<string, Array<String>>;
18
+ gradleProjectToProjectName: Record<string, string>;
19
+ gradleProjectNameToProjectRootMap: Record<string, string>;
20
+ gradleProjectToChildProjects: Record<string, string[]>;
21
+ }
22
+ export declare function writeGradleReportToCache(cachePath: string, results: GradleReport): void;
11
23
  export declare function getCurrentGradleReport(): GradleReport;
12
24
  /**
13
25
  * This function populates the gradle report cache.
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeGradleReportToCache = writeGradleReportToCache;
3
4
  exports.getCurrentGradleReport = getCurrentGradleReport;
4
5
  exports.populateGradleReport = populateGradleReport;
5
6
  exports.processProjectReports = processProjectReports;
@@ -10,8 +11,52 @@ const workspace_context_1 = require("nx/src/utils/workspace-context");
10
11
  const path_1 = require("path");
11
12
  const split_config_files_1 = require("./split-config-files");
12
13
  const get_project_report_lines_1 = require("./get-project-report-lines");
14
+ const cache_directory_1 = require("nx/src/utils/cache-directory");
15
+ function readGradleReportCache(cachePath, hash) {
16
+ const gradleReportJson = (0, node_fs_1.existsSync)(cachePath)
17
+ ? (0, devkit_1.readJsonFile)(cachePath)
18
+ : undefined;
19
+ if (!gradleReportJson || gradleReportJson.hash !== hash) {
20
+ return;
21
+ }
22
+ let results = {
23
+ gradleFileToGradleProjectMap: new Map(Object.entries(gradleReportJson['gradleFileToGradleProjectMap'])),
24
+ buildFileToDepsMap: new Map(Object.entries(gradleReportJson['buildFileToDepsMap'])),
25
+ gradleFileToOutputDirsMap: new Map(Object.entries(gradleReportJson['gradleFileToOutputDirsMap']).map(([key, value]) => [key, new Map(Object.entries(value))])),
26
+ gradleProjectToTasksTypeMap: new Map(Object.entries(gradleReportJson['gradleProjectToTasksTypeMap']).map(([key, value]) => [key, new Map(Object.entries(value))])),
27
+ gradleProjectToTasksMap: new Map(Object.entries(gradleReportJson['gradleProjectToTasksMap']).map(([key, value]) => [key, new Set(value)])),
28
+ gradleProjectToProjectName: new Map(Object.entries(gradleReportJson['gradleProjectToProjectName'])),
29
+ gradleProjectNameToProjectRootMap: new Map(Object.entries(gradleReportJson['gradleProjectNameToProjectRootMap'])),
30
+ gradleProjectToChildProjects: new Map(Object.entries(gradleReportJson['gradleProjectToChildProjects'])),
31
+ };
32
+ return results;
33
+ }
34
+ function writeGradleReportToCache(cachePath, results) {
35
+ let gradleReportJson = {
36
+ hash: gradleCurrentConfigHash,
37
+ gradleFileToGradleProjectMap: Object.fromEntries(results.gradleFileToGradleProjectMap),
38
+ buildFileToDepsMap: Object.fromEntries(results.buildFileToDepsMap),
39
+ gradleFileToOutputDirsMap: Object.fromEntries(Array.from(results.gradleFileToOutputDirsMap).map(([key, value]) => [
40
+ key,
41
+ Object.fromEntries(value),
42
+ ])),
43
+ gradleProjectToTasksTypeMap: Object.fromEntries(Array.from(results.gradleProjectToTasksTypeMap).map(([key, value]) => [
44
+ key,
45
+ Object.fromEntries(value),
46
+ ])),
47
+ gradleProjectToTasksMap: Object.fromEntries(Array.from(results.gradleProjectToTasksMap).map(([key, value]) => [
48
+ key,
49
+ Array.from(value),
50
+ ])),
51
+ gradleProjectToProjectName: Object.fromEntries(results.gradleProjectToProjectName),
52
+ gradleProjectNameToProjectRootMap: Object.fromEntries(results.gradleProjectNameToProjectRootMap),
53
+ gradleProjectToChildProjects: Object.fromEntries(results.gradleProjectToChildProjects),
54
+ };
55
+ (0, devkit_1.writeJsonFile)(cachePath, gradleReportJson);
56
+ }
13
57
  let gradleReportCache;
14
58
  let gradleCurrentConfigHash;
59
+ let gradleReportCachePath = (0, node_path_1.join)(cache_directory_1.workspaceDataDirectory, 'gradle-report.hash');
15
60
  function getCurrentGradleReport() {
16
61
  if (!gradleReportCache) {
17
62
  throw new devkit_1.AggregateCreateNodesError([
@@ -37,7 +82,9 @@ async function populateGradleReport(workspaceRoot, gradlewFiles) {
37
82
  const gradleConfigHash = await (0, workspace_context_1.hashWithWorkspaceContext)(workspaceRoot, [
38
83
  split_config_files_1.gradleConfigAndTestGlob,
39
84
  ]);
40
- if (gradleReportCache && gradleConfigHash === gradleCurrentConfigHash) {
85
+ gradleReportCache ??= readGradleReportCache(gradleReportCachePath, gradleConfigHash);
86
+ if (gradleReportCache &&
87
+ (!gradleCurrentConfigHash || gradleConfigHash === gradleCurrentConfigHash)) {
41
88
  return;
42
89
  }
43
90
  const gradleProjectReportStart = performance.mark('gradleProjectReport:start');
@@ -50,6 +97,7 @@ async function populateGradleReport(workspaceRoot, gradlewFiles) {
50
97
  performance.measure('gradleProjectReport', gradleProjectReportStart.name, gradleProjectReportEnd.name);
51
98
  gradleCurrentConfigHash = gradleConfigHash;
52
99
  gradleReportCache = processProjectReports(projectReportLines);
100
+ writeGradleReportToCache(gradleReportCachePath, gradleReportCache);
53
101
  }
54
102
  function processProjectReports(projectReportLines) {
55
103
  /**