<!-- Please make sure you have read the submission guidelines before posting an PR --> <!-- https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr --> <!-- Please make sure that your commit message follows our format --> <!-- Example: `fix(nx): must begin with lowercase` --> <!-- If this is a particularly complex change or feature addition, you can request a dedicated Nx release for this pull request branch. Mention someone from the Nx team or the `@nrwl/nx-pipelines-reviewers` and they will confirm if the PR warrants its own release for testing purposes, and generate it for you if appropriate. --> ## Current Behavior <!-- This is the behavior we have today --> ## Expected Behavior <!-- This is the behavior we should expect with the changes in this PR --> ## Related Issue(s) <!-- Please link the issue being fixed so it gets closed when this is merged. --> Fixes #
68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
import { combineGlobPatterns } from 'nx/src/utils/globs';
|
|
import { basename, dirname } from 'node:path';
|
|
|
|
export const GRADLE_BUILD_FILES = new Set(['build.gradle', 'build.gradle.kts']);
|
|
export const GRALDEW_FILES = new Set(['gradlew', 'gradlew.bat']);
|
|
export const GRADLE_TEST_FILES = [
|
|
'**/src/test/java/**/*Test.java',
|
|
'**/src/test/kotlin/**/*Test.kt',
|
|
'**/src/test/java/**/*Tests.java',
|
|
'**/src/test/kotlin/**/*Tests.kt',
|
|
];
|
|
|
|
export const gradleConfigGlob = combineGlobPatterns(
|
|
...Array.from(GRADLE_BUILD_FILES).map((file) => `**/${file}`)
|
|
);
|
|
|
|
export const gradleConfigAndTestGlob = combineGlobPatterns(
|
|
...Array.from(GRADLE_BUILD_FILES).map((file) => `**/${file}`),
|
|
...Array.from(GRALDEW_FILES).map((file) => `**/${file}`),
|
|
...GRADLE_TEST_FILES
|
|
);
|
|
|
|
/**
|
|
* This function split config files into build files, settings files, test files and project roots
|
|
* @param files list of files to split
|
|
* @returns object with buildFiles, gradlewFiles, testFiles and projectRoots
|
|
* For gradlewFiles, it will start with settings files and find the nearest gradlew file in the workspace
|
|
*/
|
|
export function splitConfigFiles(files: readonly string[]): {
|
|
buildFiles: string[];
|
|
gradlewFiles: string[];
|
|
testFiles: string[];
|
|
projectRoots: string[];
|
|
} {
|
|
const buildFiles = [];
|
|
const testFiles = [];
|
|
const gradlewFiles = [];
|
|
const projectRoots = new Set<string>();
|
|
|
|
files.forEach((file) => {
|
|
const filename = basename(file);
|
|
const fileDirectory = dirname(file);
|
|
if (GRADLE_BUILD_FILES.has(filename)) {
|
|
buildFiles.push(file);
|
|
projectRoots.add(fileDirectory);
|
|
} else if (GRALDEW_FILES.has(filename)) {
|
|
if (process.platform.startsWith('win')) {
|
|
if (filename === 'gradlew.bat') {
|
|
gradlewFiles.push(file);
|
|
}
|
|
} else {
|
|
if (filename === 'gradlew') {
|
|
gradlewFiles.push(file);
|
|
}
|
|
}
|
|
} else {
|
|
testFiles.push(file);
|
|
}
|
|
});
|
|
|
|
return {
|
|
buildFiles,
|
|
testFiles,
|
|
gradlewFiles,
|
|
projectRoots: Array.from(projectRoots),
|
|
};
|
|
}
|