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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  /**