@nx/gradle
Version:
75 lines (74 loc) • 3.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.newLineSeparator = exports.fileSeparator = void 0;
exports.getProjectReportLines = getProjectReportLines;
const devkit_1 = require("@nx/devkit");
const exec_gradle_1 = require("./exec-gradle");
exports.fileSeparator = process.platform.startsWith('win')
? 'file:///'
: 'file://';
exports.newLineSeparator = process.platform.startsWith('win')
? '\r\n'
: '\n';
/**
* This function executes the gradle projectReportAll task and returns the output as an array of lines.
* @param gradlewFile the absolute path to the gradlew file
* @returns project report lines
*/
async function getProjectReportLines(gradlewFile) {
let projectReportBuffer;
// Attempt to run projectReport or projectReportAll task, regardless of build.gradle or build.gradle.kts location
try {
projectReportBuffer = await (0, exec_gradle_1.execGradleAsync)(gradlewFile, [
'projectReportAll',
process.env.NX_VERBOSE_LOGGING === 'true' ? '--info' : '',
'--exclude-task',
'htmlDependencyReport',
]);
}
catch (e) {
if (e.toString()?.includes('ERROR: JAVA_HOME')) {
throw new devkit_1.AggregateCreateNodesError([
[
gradlewFile,
new Error(`Could not find Java. Please install Java and try again: https://www.java.com/en/download/help/index_installing.html.\n\r${e.toString()}`),
],
], []);
}
else if (e.toString()?.includes(`Task 'projectReportAll' not found`)) {
try {
projectReportBuffer = await (0, exec_gradle_1.execGradleAsync)(gradlewFile, [
'projectReport',
]);
devkit_1.logger.warn(`Could not run 'projectReportAll' task. Ran 'projectReport' instead. Please run 'nx generate @nx/gradle:init' to generate the necessary tasks.\n\r${e.toString()}`);
}
catch (e) {
throw new devkit_1.AggregateCreateNodesError([
[
gradlewFile,
new Error(`Could not run 'projectReportAll' or 'projectReport' task. Please run 'nx generate @nx/gradle:init' to generate the necessary tasks.\n\r${e.toString()}`),
],
], []);
}
}
else {
throw new devkit_1.AggregateCreateNodesError([
[
gradlewFile,
new Error(`Could not run 'projectReportAll' or 'projectReport' Gradle task. Please install Gradle and try again: https://gradle.org/install/.\r\n${e.toString()}`),
],
], []);
}
}
const projectReportLines = projectReportBuffer
.toString()
.split(exports.newLineSeparator)
.filter((line) => line.trim() !== '');
if (process.env.NX_VERBOSE_LOGGING === 'true') {
devkit_1.output.log({
title: `Successfully ran projectReportAll or projectRerport task using ${gradlewFile}`,
bodyLines: projectReportLines,
});
}
return projectReportLines;
}