From 5c6771f62a68a0d71e4ef745a7e583d5b092eb96 Mon Sep 17 00:00:00 2001 From: Andrew Dunn Date: Mon, 9 Dec 2024 23:03:00 +0000 Subject: [PATCH 1/4] chore: applying spotless formating --- README.md | 106 ++++++------ build.gradle | 2 +- lefthook.yml | 1 + .../ClasspathGradleBuildFileResolver.groovy | 68 ++++---- .../FileNameGradleBuildFileSorter.groovy | 81 +++++----- .../plugins/pater/GradleBuildFile.groovy | 11 +- .../pater/GradleBuildFileResolver.groovy | 7 +- .../GradleBuildFileResolverFactory.groovy | 36 +++-- .../pater/GradleBuildFileSorter.groovy | 6 +- .../pater/GradleBuildFileSorterFactory.groovy | 32 ++-- ...erviceLoaderGradleBuildFileResolver.groovy | 16 +- .../gradle/plugins/pater/PaterPlugin.groovy | 86 +++++----- .../plugins/pater/UriGradleBuildFile.groovy | 41 ++--- .../ClasspathGradleBuildFileResolverTest.java | 22 +-- .../pater/CustomBuildFileResolver.java | 6 +- .../plugins/pater/CustomBuildFileSorter.java | 6 +- .../FileNameGradleBuildFileSorterTest.java | 152 +++++++++--------- .../GradleBuildFileResolverFactoryTest.java | 17 +- .../GradleBuildFileSorterFactoryTest.java | 13 +- .../gradle/plugins/pater/PaterPluginTest.java | 19 +-- .../pater/TestableGradleBuildFile.java | 21 +-- .../plugins/pater/UriGradleBuildFileTest.java | 46 +++--- 22 files changed, 412 insertions(+), 383 deletions(-) diff --git a/README.md b/README.md index 39b6237..44ab29d 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,57 @@ -[![CircleCI](https://circleci.com/gh/boxheed/gradle-pater-build-plugin/tree/master.svg?style=shield)](https://circleci.com/gh/boxheed/gradle-pater-build-plugin/tree/master) - -# Gradle Pater Plugin -This plugin provides parent build script like capabilities to Gradle. Inspired by a number of blog posts about how to work with/around the current capabilities of Gradle to support importing other build scripts. Current strategies use either `apply from:` in conjunction with a URL or recommend writing your own plugin to set different aspects of a Gradle project programmatically. This plugin combines both of these approaches into a single strategy that allows you to write simple gradle build files and take advantage of dependency management. - -# How -By packaging your gradle build script up in a jar file and including in your build script dependencies this plugin will find the build script and apply it to the gradle project as if it was referenced in the `apply from:` notation. What's more by taking advantage of jar library dependency management you can chain a number of build scripts together and have them applied to the project. This plugin uses the naming convention of the build scripts to sort the discovered scripts into a determinate order for applying to the project. - -# Simple Usage -Create your java library which includes your build script. the pater-build plugin scans for files in a specific location in the `META-INF/pater-build` and must end in `.gradle` e.g. `META-INF/pater-build/opinion-java.gradle`. Then all you have to do is add your library into the buildscripts classpath along with the pater-build plugin e.g. - -``` -buildscript { - repositories { - jcenter() - } - dependencies { - //The pater build plugin. - classpath 'com.fizzpod:gradle-pater-build-plugin:1.0.0' - //Your library containing the build file in META-INF/pater-build - classpath 'com.example:opinion-java:1.0.0' - } -} - -apply plugin: 'com.fizzpod.pater-build' - -``` - -You can of course include the pater-build plugin as a dependency of your build jar, in which case you would only have your build jar as a dependency, I'll leave this up to you to decide whether you want to manage it that way or not. - -# Build script ordering -The plugin orders the build scripts that it finds according to the names of the build scripts following a naming convention. -* The .gradle extension is removed. -* The names are separated out by hyphens e.g. `my-build-script.gradle` will become three tokens `[my][build][script]`. -* The tokens from each build script name are compared with scripts with fewer tokens migrating to the top of the list. - -It is therefore necessary to apply a naming convention to the build files included to be certain that they are applied in the correct order. - -# Limitations -As the library uses classpath scanning if you have more than one build script with the same name it is indeterminate which one will be selected, but it will be only one of them. - -# Extension points -The plugin exposes a number of extension points, these are provided by using the Java ServiceLoader to discover implementations of the extension points. - -## Build file resolution -You can customise the build file resolution with your own implementation. The interface is `com.fizzpod.gradle.plugins.pater.GradleBuildFileResolver` with the defualt implentation being `com.fizzpod.gradle.plugins.pater.ClasspathGradleBuildFileResolver`. To apply your own implementation you need to add a file to your `META-INF/services/com.fizzpod.gradle.plugins.pater.GradleBuildFileResolver` the contents of which is the implementing classes. Note that if you still want the default implementation to run along with your custom one then you need to specify the default one in this file. The plugin will use all defined GradleBuildFileResolvers to find the build files. - -## Build file sorting -you can customise the sorting of the buil files with your own implementation. The interface is `com.fizzpod.gradle.plugins.pater.GradleBuildFileSorter` with the default implementation being `com.fizzpod.gradle.plugins.pater.FileNameGradleBuildFileSorter`. As with the build file resolution you need to specify the implementation in a `META-INF/services/com.fizzpod.gradle.plugins.pater.GradleBuildFileSorter`. The difference with this extension point is that whilst you can specify multiple GradleBuildFileSorters it will only use the first one discovered. +[![CircleCI](https://circleci.com/gh/boxheed/gradle-pater-build-plugin/tree/master.svg?style=shield)](https://circleci.com/gh/boxheed/gradle-pater-build-plugin/tree/master) + +# Gradle Pater Plugin + +This plugin provides parent build script like capabilities to Gradle. Inspired by a number of blog posts about how to work with/around the current capabilities of Gradle to support importing other build scripts. Current strategies use either `apply from:` in conjunction with a URL or recommend writing your own plugin to set different aspects of a Gradle project programmatically. This plugin combines both of these approaches into a single strategy that allows you to write simple gradle build files and take advantage of dependency management. + +# How + +By packaging your gradle build script up in a jar file and including in your build script dependencies this plugin will find the build script and apply it to the gradle project as if it was referenced in the `apply from:` notation. What's more by taking advantage of jar library dependency management you can chain a number of build scripts together and have them applied to the project. This plugin uses the naming convention of the build scripts to sort the discovered scripts into a determinate order for applying to the project. + +# Simple Usage + +Create your java library which includes your build script. the pater-build plugin scans for files in a specific location in the `META-INF/pater-build` and must end in `.gradle` e.g. `META-INF/pater-build/opinion-java.gradle`. Then all you have to do is add your library into the buildscripts classpath along with the pater-build plugin e.g. + +``` +buildscript { + repositories { + jcenter() + } + dependencies { + //The pater build plugin. + classpath 'com.fizzpod:gradle-pater-build-plugin:1.0.0' + //Your library containing the build file in META-INF/pater-build + classpath 'com.example:opinion-java:1.0.0' + } +} + +apply plugin: 'com.fizzpod.pater-build' + +``` + +You can of course include the pater-build plugin as a dependency of your build jar, in which case you would only have your build jar as a dependency, I'll leave this up to you to decide whether you want to manage it that way or not. + +# Build script ordering + +The plugin orders the build scripts that it finds according to the names of the build scripts following a naming convention. +* The .gradle extension is removed. +* The names are separated out by hyphens e.g. `my-build-script.gradle` will become three tokens `[my][build][script]`. +* The tokens from each build script name are compared with scripts with fewer tokens migrating to the top of the list. + +It is therefore necessary to apply a naming convention to the build files included to be certain that they are applied in the correct order. + +# Limitations + +As the library uses classpath scanning if you have more than one build script with the same name it is indeterminate which one will be selected, but it will be only one of them. + +# Extension points + +The plugin exposes a number of extension points, these are provided by using the Java ServiceLoader to discover implementations of the extension points. + +## Build file resolution + +You can customise the build file resolution with your own implementation. The interface is `com.fizzpod.gradle.plugins.pater.GradleBuildFileResolver` with the defualt implentation being `com.fizzpod.gradle.plugins.pater.ClasspathGradleBuildFileResolver`. To apply your own implementation you need to add a file to your `META-INF/services/com.fizzpod.gradle.plugins.pater.GradleBuildFileResolver` the contents of which is the implementing classes. Note that if you still want the default implementation to run along with your custom one then you need to specify the default one in this file. The plugin will use all defined GradleBuildFileResolvers to find the build files. + +## Build file sorting + +you can customise the sorting of the buil files with your own implementation. The interface is `com.fizzpod.gradle.plugins.pater.GradleBuildFileSorter` with the default implementation being `com.fizzpod.gradle.plugins.pater.FileNameGradleBuildFileSorter`. As with the build file resolution you need to specify the implementation in a `META-INF/services/com.fizzpod.gradle.plugins.pater.GradleBuildFileSorter`. The difference with this extension point is that whilst you can specify multiple GradleBuildFileSorters it will only use the first one discovered. diff --git a/build.gradle b/build.gradle index 86163b2..4155c45 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } } dependencies { - classpath ('com.fizzpod:gradle-plugin-opinion:20.1.0') + classpath ('com.fizzpod:gradle-plugin-opinion:20.2.0') } } diff --git a/lefthook.yml b/lefthook.yml index 10bdac1..d440cc8 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -2,6 +2,7 @@ assert_lefthook_installed: true pre-commit: follow: true commands: + spotless: {glob: '*', run: ./gradlew spotlessCheck} test: {glob: '*.{groovy,java}', run: ./gradlew test} commit-msg: follow: true diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy index ba67d9b..811a930 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy @@ -1,9 +1,10 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import java.nio.file.Files import java.nio.file.Path import java.util.regex.Pattern - import org.apache.commons.io.FileUtils import org.apache.commons.io.FilenameUtils import org.apache.commons.io.IOUtils @@ -15,54 +16,53 @@ import org.slf4j.LoggerFactory public class ClasspathGradleBuildFileResolver implements GradleBuildFileResolver { - - private static final Logger LOGGER = LoggerFactory.getLogger(ClasspathGradleBuildFileResolver.class); + + private static final Logger LOGGER = LoggerFactory.getLogger(ClasspathGradleBuildFileResolver.class) Collection findBuildFiles(Project project) { - Set buildFiles = scanForBuildFiles(); - LOGGER.info("Discovered build files: {}", buildFiles); - return exportBuildFiles(buildFiles); + Set buildFiles = scanForBuildFiles() + LOGGER.info("Discovered build files: {}", buildFiles) + return exportBuildFiles(buildFiles) } - + private Set scanForBuildFiles(Project project) { - - Reflections reflections = new Reflections("META-INF.pater-build", new ResourcesScanner()); - + + Reflections reflections = new Reflections("META-INF.pater-build", new ResourcesScanner()) + Set buildFiles = - reflections.getResources(Pattern.compile(".*\\.gradle")); - return buildFiles; + reflections.getResources(Pattern.compile(".*\\.gradle")) + return buildFiles } - + private Collection exportBuildFiles(Collection classpathBuildFiles) { - List buildFiles = new LinkedList<>(); + List buildFiles = new LinkedList<>() for(String classpathBuildFile: classpathBuildFiles) { - File buildFile = exportBuildFile(classpathBuildFile); + File buildFile = exportBuildFile(classpathBuildFile) if(buildFile != null && buildFile.exists()) { - GradleBuildFile gradleBuildFile = new UriGradleBuildFile(buildFile.toPath().toUri()); - buildFiles.add(gradleBuildFile); + GradleBuildFile gradleBuildFile = new UriGradleBuildFile(buildFile.toPath().toUri()) + buildFiles.add(gradleBuildFile) } else { - LOGGER.warn("Could not export build file {}", classpathBuildFile); + LOGGER.warn("Could not export build file {}", classpathBuildFile) } } - return buildFiles; + return buildFiles } - + private File exportBuildFile(String classpathBuildFile) { - File tempDirectoryFile = Files.createTempDirectory("pater-build").toFile(); - FileUtils.forceDeleteOnExit(tempDirectoryFile); - File buildFile = new File(tempDirectoryFile, FilenameUtils.getName(classpathBuildFile)); - InputStream inputStream = null; - OutputStream outputStream = null; + File tempDirectoryFile = Files.createTempDirectory("pater-build").toFile() + FileUtils.forceDeleteOnExit(tempDirectoryFile) + File buildFile = new File(tempDirectoryFile, FilenameUtils.getName(classpathBuildFile)) + InputStream inputStream = null + OutputStream outputStream = null try { - inputStream = this.getClass().getClassLoader().getResourceAsStream(classpathBuildFile); - outputStream = new FileOutputStream(buildFile); - IOUtils.copy(inputStream, outputStream); - FileUtils.forceDeleteOnExit(buildFile); + inputStream = this.getClass().getClassLoader().getResourceAsStream(classpathBuildFile) + outputStream = new FileOutputStream(buildFile) + IOUtils.copy(inputStream, outputStream) + FileUtils.forceDeleteOnExit(buildFile) } finally { - IOUtils.closeQuietly(inputStream); - IOUtils.closeQuietly(outputStream); + IOUtils.closeQuietly(inputStream) + IOUtils.closeQuietly(outputStream) } - return buildFile; + return buildFile } - } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy index 4493987..539b0b4 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy @@ -1,9 +1,10 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater -import java.net.URI; -import java.util.Collection; +import java.net.URI +import java.util.Collection import java.util.regex.Pattern - import org.apache.commons.io.FilenameUtils import org.apache.commons.io.IOUtils import org.gradle.api.Project @@ -14,40 +15,40 @@ import org.slf4j.LoggerFactory public class FileNameGradleBuildFileSorter implements GradleBuildFileSorter { - private static final Logger LOGGER = LoggerFactory.getLogger(FileNameGradleBuildFileSorter.class); - - @Override - public Collection sortBuildFiles(Project project, Collection buildFiles) { - List buildFileList = new LinkedList<>(buildFiles); - Collections.sort(buildFileList, new NameSplittingComaparator()); - return buildFileList; - } - - private static final class NameSplittingComaparator implements Comparator { - - @Override - public int compare(GradleBuildFile buildFile1, GradleBuildFile buildFile2) { - int comparison = 0; - String[] parts1 = getNameParts(buildFile1.getName()); - String[] parts2 = getNameParts(buildFile2.getName()); - if(parts1.length == parts2.length) { - comparison = compareParts(parts1, parts2); - } else { - comparison = parts1.length - parts2.length; - } - return comparison; - } - - private String[] getNameParts(String name) { - return name.split("-"); - } - - private int compareParts(String[] parts1, String[] parts2) { - int comparison = 0; - for(int i = 0; i < parts1.length && comparison == 0; i++) { - comparison = parts1[i].toLowerCase().compareTo(parts2[i].toLowerCase()); - } - return comparison; - } - } + private static final Logger LOGGER = LoggerFactory.getLogger(FileNameGradleBuildFileSorter.class) + + @Override + public Collection sortBuildFiles(Project project, Collection buildFiles) { + List buildFileList = new LinkedList<>(buildFiles) + Collections.sort(buildFileList, new NameSplittingComaparator()) + return buildFileList + } + + private static final class NameSplittingComaparator implements Comparator { + + @Override + public int compare(GradleBuildFile buildFile1, GradleBuildFile buildFile2) { + int comparison = 0 + String[] parts1 = getNameParts(buildFile1.getName()) + String[] parts2 = getNameParts(buildFile2.getName()) + if(parts1.length == parts2.length) { + comparison = compareParts(parts1, parts2) + } else { + comparison = parts1.length - parts2.length + } + return comparison + } + + private String[] getNameParts(String name) { + return name.split("-") + } + + private int compareParts(String[] parts1, String[] parts2) { + int comparison = 0 + for(int i = 0; i < parts1.length && comparison == 0; i++) { + comparison = parts1[i].toLowerCase().compareTo(parts2[i].toLowerCase()) + } + return comparison + } + } } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy index 53fe04e..d206ed3 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy @@ -1,11 +1,12 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project public interface GradleBuildFile { - String getName(); - - void apply(Project project); - + String getName() + + void apply(Project project) } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy index 62bc323..26eeca7 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy @@ -1,9 +1,10 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project public interface GradleBuildFileResolver { - Collection findBuildFiles(Project project); - + Collection findBuildFiles(Project project) } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy index 4912fe5..5f911be 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy @@ -1,25 +1,27 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater -import java.util.Collection; -import java.util.LinkedList; -import java.util.ServiceLoader; +import java.util.Collection +import java.util.LinkedList +import java.util.ServiceLoader public class GradleBuildFileResolverFactory { - private static ServiceLoader gradleBuildFileResolverLoader = ServiceLoader - .load(GradleBuildFileResolver.class); + private static ServiceLoader gradleBuildFileResolverLoader = ServiceLoader + .load(GradleBuildFileResolver.class) - public Collection getBuildFileResolvers() { + public Collection getBuildFileResolvers() { - Collection resolvers = new LinkedList(); + Collection resolvers = new LinkedList() - for (GradleBuildFileResolver resolver : gradleBuildFileResolverLoader) { - resolvers.add(resolver); - } - if(resolvers.isEmpty()) { - resolvers.add(new ClasspathGradleBuildFileResolver()); - resolvers.add(new JavaServiceLoaderGradleBuildFileResolver()); - } - return resolvers; - } + for (GradleBuildFileResolver resolver : gradleBuildFileResolverLoader) { + resolvers.add(resolver) + } + if(resolvers.isEmpty()) { + resolvers.add(new ClasspathGradleBuildFileResolver()) + resolvers.add(new JavaServiceLoaderGradleBuildFileResolver()) + } + return resolvers + } } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy index 9995c8d..8746931 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy @@ -1,8 +1,10 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project public interface GradleBuildFileSorter { - public Collection sortBuildFiles(Project project, Collection uris); + public Collection sortBuildFiles(Project project, Collection uris) } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy index be5ee5c..3e5ff39 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy @@ -1,28 +1,30 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.slf4j.Logger import org.slf4j.LoggerFactory public class GradleBuildFileSorterFactory { - private static final Logger LOGGER = LoggerFactory.getLogger(GradleBuildFileSorterFactory.class); + private static final Logger LOGGER = LoggerFactory.getLogger(GradleBuildFileSorterFactory.class) - private static ServiceLoader gradleBuildFileSorterLoader = ServiceLoader - .load(GradleBuildFileSorter.class); + private static ServiceLoader gradleBuildFileSorterLoader = ServiceLoader + .load(GradleBuildFileSorter.class) - public GradleBuildFileSorter getBuildFileSorter() { + public GradleBuildFileSorter getBuildFileSorter() { - GradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + GradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter() - Iterator sortersIterator = gradleBuildFileSorterLoader.iterator(); + Iterator sortersIterator = gradleBuildFileSorterLoader.iterator() - if(sortersIterator.hasNext()) { - sorter = sortersIterator.next(); - LOGGER.info("Found sorter {}", sorter); - } else { - LOGGER.debug("Using default sorter {}", sorter); - } + if(sortersIterator.hasNext()) { + sorter = sortersIterator.next() + LOGGER.info("Found sorter {}", sorter) + } else { + LOGGER.debug("Using default sorter {}", sorter) + } - return sorter; - } + return sorter + } } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy index 0e6c98d..991bc8c 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy @@ -1,13 +1,15 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater -import org.gradle.api.Project; +import org.gradle.api.Project public class JavaServiceLoaderGradleBuildFileResolver implements GradleBuildFileResolver { - private static ServiceLoader gradleBuildFileServiceLoader = ServiceLoader - .load(GradleBuildFile.class); + private static ServiceLoader gradleBuildFileServiceLoader = ServiceLoader + .load(GradleBuildFile.class) - Collection findBuildFiles(Project project) { - return gradleBuildFileServiceLoader.asList(); - } + Collection findBuildFiles(Project project) { + return gradleBuildFileServiceLoader.asList() + } } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy index fa32259..344907e 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy @@ -1,4 +1,6 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.gradle.api.Plugin import org.gradle.api.Project @@ -7,44 +9,44 @@ import org.slf4j.LoggerFactory public class PaterPlugin implements Plugin { - private static final Logger LOGGER = LoggerFactory.getLogger(PaterPlugin.class); - - private GradleBuildFileResolverFactory resolverFactory = new GradleBuildFileResolverFactory(); - - private GradleBuildFileSorterFactory sorterFactory = new GradleBuildFileSorterFactory(); - - void apply(Project project) { - def buildFiles = this.resolveBuildFiles(project); - LOGGER.info("Discovered build files: {}", buildFiles); - - buildFiles = this.sortBuildFiles(project, buildFiles); - - buildFiles.each() { - it.apply(project); - } - } - - private Collection sortBuildFiles(Project project, Collection buildFiles) { - List sortedFiles = new ArrayList<>(buildFiles); - GradleBuildFileSorter sorter = sorterFactory.getBuildFileSorter(); - LOGGER.info("Using build file sorter {}", sorter); - return sorter.sortBuildFiles(project, buildFiles); - } - - private Collection resolveBuildFiles(Project project) { - Set buildFiles = new LinkedHashSet<>(); - def resolvers = getBuildFileResolvers(); - LOGGER.info("Using build file resolvers: {} ", resolvers); - resolvers.each() { - def resolvedBuildFiles = it.findBuildFiles(project); - if(resolvedBuildFiles != null) { - buildFiles.addAll(resolvedBuildFiles); - } - } - return buildFiles; - } - - private Collection getBuildFileResolvers() { - return resolverFactory.getBuildFileResolvers(); - } -} \ No newline at end of file + private static final Logger LOGGER = LoggerFactory.getLogger(PaterPlugin.class) + + private GradleBuildFileResolverFactory resolverFactory = new GradleBuildFileResolverFactory() + + private GradleBuildFileSorterFactory sorterFactory = new GradleBuildFileSorterFactory() + + void apply(Project project) { + def buildFiles = this.resolveBuildFiles(project) + LOGGER.info("Discovered build files: {}", buildFiles) + + buildFiles = this.sortBuildFiles(project, buildFiles) + + buildFiles.each() { + it.apply(project) + } + } + + private Collection sortBuildFiles(Project project, Collection buildFiles) { + List sortedFiles = new ArrayList<>(buildFiles) + GradleBuildFileSorter sorter = sorterFactory.getBuildFileSorter() + LOGGER.info("Using build file sorter {}", sorter) + return sorter.sortBuildFiles(project, buildFiles) + } + + private Collection resolveBuildFiles(Project project) { + Set buildFiles = new LinkedHashSet<>() + def resolvers = getBuildFileResolvers() + LOGGER.info("Using build file resolvers: {} ", resolvers) + resolvers.each() { + def resolvedBuildFiles = it.findBuildFiles(project) + if(resolvedBuildFiles != null) { + buildFiles.addAll(resolvedBuildFiles) + } + } + return buildFiles + } + + private Collection getBuildFileResolvers() { + return resolverFactory.getBuildFileResolvers() + } +} diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy index f615b59..b7c8d04 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy @@ -1,53 +1,54 @@ -package com.fizzpod.gradle.plugins.pater; +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ +package com.fizzpod.gradle.plugins.pater import org.apache.commons.io.FilenameUtils import org.gradle.api.Project public class UriGradleBuildFile implements GradleBuildFile { - - private URI uri; - + + private URI uri + public UriGradleBuildFile(URI uri) { - this.uri = uri; + this.uri = uri } public String getName() { return FilenameUtils.getBaseName(uri.toString()) } - + public void apply(Project project) { - project.apply(["from": uri]); + project.apply(["from": uri]) } @Override public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((uri == null) ? 0 : uri.hashCode()); - return result; + final int prime = 31 + int result = 1 + result = prime * result + ((uri == null) ? 0 : uri.hashCode()) + return result } @Override public boolean equals(Object obj) { if (this == obj) - return true; + return true if (obj == null) - return false; + return false if (getClass() != obj.getClass()) - return false; - UriGradleBuildFile other = (UriGradleBuildFile) obj; + return false + UriGradleBuildFile other = (UriGradleBuildFile) obj if (uri == null) { if (other.uri != null) - return false; + return false } else if (!uri.equals(other.uri)) - return false; - return true; + return false + return true } @Override public String toString() { return "UriGradleBuildFile [uri=" + uri + ", getName()=" + getName() - + "]"; + + "]" } - } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java index 76ee963..9fbedde 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java @@ -1,20 +1,20 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import java.util.Collection; - import org.junit.Assert; import org.junit.Test; public class ClasspathGradleBuildFileResolverTest { - @Test - public void testFindingBuildFile() { - ClasspathGradleBuildFileResolver resolver = new ClasspathGradleBuildFileResolver(); - Collection buildFiles = resolver.findBuildFiles(null); - Assert.assertEquals(1, buildFiles.size()); - GradleBuildFile buildFile = buildFiles.iterator().next(); - Assert.assertNotNull(buildFile); - Assert.assertEquals("my-build", buildFile.getName()); - } - + @Test + public void testFindingBuildFile() { + ClasspathGradleBuildFileResolver resolver = new ClasspathGradleBuildFileResolver(); + Collection buildFiles = resolver.findBuildFiles(null); + Assert.assertEquals(1, buildFiles.size()); + GradleBuildFile buildFile = buildFiles.iterator().next(); + Assert.assertNotNull(buildFile); + Assert.assertEquals("my-build", buildFile.getName()); + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java index b935b8d..c922e2d 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java @@ -1,5 +1,5 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; -public class CustomBuildFileResolver extends ClasspathGradleBuildFileResolver { - -} +public class CustomBuildFileResolver extends ClasspathGradleBuildFileResolver {} diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java index 18d956d..8ca5c57 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java @@ -1,5 +1,5 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; -public class CustomBuildFileSorter extends FileNameGradleBuildFileSorter { - -} +public class CustomBuildFileSorter extends FileNameGradleBuildFileSorter {} diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java index 6d9a5b5..573f4e7 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import java.io.File; @@ -5,7 +7,6 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; - import org.junit.Assert; import org.junit.Rule; import org.junit.Test; @@ -13,78 +14,81 @@ public class FileNameGradleBuildFileSorterTest { - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Test - public void testFirstLevelNameSorting() { - Collection uris = createFiles("def.gradle", "abc.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("abc", sortedBuildFiles.get(0)); - assertBuildFile("def", sortedBuildFiles.get(1)) ; - } - - @Test - public void testSameFirstLevelWithTwoLevels() { - Collection uris = createFiles("abc-xyz.gradle", "abc.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("abc", sortedBuildFiles.get(0)); - assertBuildFile("abc-xyz", sortedBuildFiles.get(1)); - } - - @Test - public void testSameFirstLevelDifferentSecondLevelNameSorting() { - Collection uris = createFiles("abc-xyz.gradle", "abc-def.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("abc-def", sortedBuildFiles.get(0)); - assertBuildFile("abc-xyz", sortedBuildFiles.get(1)); - } - - - @Test - public void testSameFirstLevelSecondLevelSameButLongerNameSorting() { - Collection uris = createFiles("abc-xyz.gradle", "abc-xyzdef.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("abc-xyz", sortedBuildFiles.get(0)); - assertBuildFile("abc-xyzdef", sortedBuildFiles.get(1)); - } - - @Test - public void testMulitpleMixedNameSorting() { - Collection uris = createFiles("abc.gradle", "def-xyz.gradle", "abc-xyz.gradle", "def.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("abc", sortedBuildFiles.get(0)); - assertBuildFile("def", sortedBuildFiles.get(1)); - assertBuildFile("abc-xyz", sortedBuildFiles.get(2)); - assertBuildFile("def-xyz", sortedBuildFiles.get(3)); - } - - @Test - public void testCaseInsensitiveNameSorting() { - Collection uris = createFiles("a.gradle", "B.gradle"); - FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); - List sortedBuildFiles = new LinkedList(sorter.sortBuildFiles(null, uris)); - assertBuildFile("a", sortedBuildFiles.get(0)); - assertBuildFile("B", sortedBuildFiles.get(1)); - } - - private void assertBuildFile(String expected, GradleBuildFile actual) { - Assert.assertEquals(expected, actual.getName()); - - } + @Rule public TemporaryFolder folder = new TemporaryFolder(); + + @Test + public void testFirstLevelNameSorting() { + Collection uris = createFiles("def.gradle", "abc.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("abc", sortedBuildFiles.get(0)); + assertBuildFile("def", sortedBuildFiles.get(1)); + } + + @Test + public void testSameFirstLevelWithTwoLevels() { + Collection uris = createFiles("abc-xyz.gradle", "abc.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("abc", sortedBuildFiles.get(0)); + assertBuildFile("abc-xyz", sortedBuildFiles.get(1)); + } + + @Test + public void testSameFirstLevelDifferentSecondLevelNameSorting() { + Collection uris = createFiles("abc-xyz.gradle", "abc-def.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("abc-def", sortedBuildFiles.get(0)); + assertBuildFile("abc-xyz", sortedBuildFiles.get(1)); + } + + @Test + public void testSameFirstLevelSecondLevelSameButLongerNameSorting() { + Collection uris = createFiles("abc-xyz.gradle", "abc-xyzdef.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("abc-xyz", sortedBuildFiles.get(0)); + assertBuildFile("abc-xyzdef", sortedBuildFiles.get(1)); + } + + @Test + public void testMulitpleMixedNameSorting() { + Collection uris = + createFiles("abc.gradle", "def-xyz.gradle", "abc-xyz.gradle", "def.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("abc", sortedBuildFiles.get(0)); + assertBuildFile("def", sortedBuildFiles.get(1)); + assertBuildFile("abc-xyz", sortedBuildFiles.get(2)); + assertBuildFile("def-xyz", sortedBuildFiles.get(3)); + } + + @Test + public void testCaseInsensitiveNameSorting() { + Collection uris = createFiles("a.gradle", "B.gradle"); + FileNameGradleBuildFileSorter sorter = new FileNameGradleBuildFileSorter(); + List sortedBuildFiles = + new LinkedList(sorter.sortBuildFiles(null, uris)); + assertBuildFile("a", sortedBuildFiles.get(0)); + assertBuildFile("B", sortedBuildFiles.get(1)); + } + + private void assertBuildFile(String expected, GradleBuildFile actual) { + Assert.assertEquals(expected, actual.getName()); + } - private Collection createFiles(String... fileNames) { - List uris = new LinkedList(); - for(String name: fileNames) { - URI uri = new File(folder.getRoot(), name).toPath().toUri(); - uris.add(new UriGradleBuildFile(uri)); - } - return uris; - } - + private Collection createFiles(String... fileNames) { + List uris = new LinkedList(); + for (String name : fileNames) { + URI uri = new File(folder.getRoot(), name).toPath().toUri(); + uris.add(new UriGradleBuildFile(uri)); + } + return uris; + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java index 433ff68..1ddcbca 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java @@ -1,17 +1,18 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import java.util.Collection; - import org.junit.Assert; import org.junit.Test; public class GradleBuildFileResolverFactoryTest { - @Test - public void testLoadingCustomBuildFileResolver() { - Collection resolvers = new GradleBuildFileResolverFactory().getBuildFileResolvers(); - Assert.assertEquals(2, resolvers.size()); - Assert.assertEquals(CustomBuildFileResolver.class, resolvers.iterator().next().getClass()); - } - + @Test + public void testLoadingCustomBuildFileResolver() { + Collection resolvers = + new GradleBuildFileResolverFactory().getBuildFileResolvers(); + Assert.assertEquals(2, resolvers.size()); + Assert.assertEquals(CustomBuildFileResolver.class, resolvers.iterator().next().getClass()); + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java index 6d83e6d..2500bf4 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import org.junit.Assert; @@ -5,10 +7,9 @@ public class GradleBuildFileSorterFactoryTest { - @Test - public void testLoadingCustomBuildFileResolver() { - GradleBuildFileSorter sorter = new GradleBuildFileSorterFactory().getBuildFileSorter(); - Assert.assertEquals(CustomBuildFileSorter.class, sorter.getClass()); - } - + @Test + public void testLoadingCustomBuildFileResolver() { + GradleBuildFileSorter sorter = new GradleBuildFileSorterFactory().getBuildFileSorter(); + Assert.assertEquals(CustomBuildFileSorter.class, sorter.getClass()); + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java index beec4df..05c2bcd 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java @@ -1,3 +1,5 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import org.gradle.api.Project; @@ -6,13 +8,12 @@ public class PaterPluginTest { - @Test - public void applyBuildFileToProjectTest() { - PaterPlugin paterPlugin = new PaterPlugin(); - Project project = Mockito.mock(Project.class); - paterPlugin.apply(project); - Mockito.verify(project, Mockito.times(1)).apply(Mockito.anyMap()); - Mockito.verify(project, Mockito.times(1)).setProperty("prop1", "value"); - } - + @Test + public void applyBuildFileToProjectTest() { + PaterPlugin paterPlugin = new PaterPlugin(); + Project project = Mockito.mock(Project.class); + paterPlugin.apply(project); + Mockito.verify(project, Mockito.times(1)).apply(Mockito.anyMap()); + Mockito.verify(project, Mockito.times(1)).setProperty("prop1", "value"); + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java b/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java index 41e4447..c75e6b2 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java @@ -1,18 +1,19 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import org.gradle.api.Project; public class TestableGradleBuildFile implements GradleBuildFile { - @Override - public String getName() { - return "my-build-2"; - } - - @Override - public void apply(Project project) { -// throw new RuntimeException("Apple"); - project.setProperty("prop1", "value"); - } + @Override + public String getName() { + return "my-build-2"; + } + @Override + public void apply(Project project) { + // throw new RuntimeException("Apple"); + project.setProperty("prop1", "value"); + } } diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java index 369dcb3..cfd4b70 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java @@ -1,10 +1,11 @@ +/* SPDX-License-Identifier: Apache-2.0 */ +/* (C) 2024 */ package com.fizzpod.gradle.plugins.pater; import java.io.File; import java.net.URI; import java.util.LinkedList; import java.util.List; - import org.gradle.api.Project; import org.junit.Assert; import org.junit.Rule; @@ -14,27 +15,24 @@ public class UriGradleBuildFileTest { - @Rule - public TemporaryFolder folder = new TemporaryFolder(); - - @Test - public void applyBuildFileToProjectTest() { - List buildFiles = createFiles("build-file-1.gradle"); - GradleBuildFile buildFile = buildFiles.get(0); - Project project = Mockito.mock(Project.class); - buildFile.apply(project); - Assert.assertEquals("build-file-1", buildFile.getName()); - Mockito.verify(project, Mockito.times(1)).apply(Mockito.anyMap()); - } - - - private List createFiles(String... fileNames) { - List uris = new LinkedList(); - for(String name: fileNames) { - URI uri = new File(folder.getRoot(), name).toPath().toUri(); - uris.add(new UriGradleBuildFile(uri)); - } - return uris; - } - + @Rule public TemporaryFolder folder = new TemporaryFolder(); + + @Test + public void applyBuildFileToProjectTest() { + List buildFiles = createFiles("build-file-1.gradle"); + GradleBuildFile buildFile = buildFiles.get(0); + Project project = Mockito.mock(Project.class); + buildFile.apply(project); + Assert.assertEquals("build-file-1", buildFile.getName()); + Mockito.verify(project, Mockito.times(1)).apply(Mockito.anyMap()); + } + + private List createFiles(String... fileNames) { + List uris = new LinkedList(); + for (String name : fileNames) { + URI uri = new File(folder.getRoot(), name).toPath().toUri(); + uris.add(new UriGradleBuildFile(uri)); + } + return uris; + } } From d93a02e4105552dca3254d516a6302725dfad40f Mon Sep 17 00:00:00 2001 From: Andrew Dunn Date: Wed, 11 Dec 2024 18:10:41 +0000 Subject: [PATCH 2/4] fix: applying spotless formating --- build.gradle | 2 +- .../plugins/pater/ClasspathGradleBuildFileResolver.groovy | 2 +- .../gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy | 2 +- .../com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy | 2 +- .../fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy | 2 +- .../gradle/plugins/pater/GradleBuildFileResolverFactory.groovy | 2 +- .../fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy | 2 +- .../gradle/plugins/pater/GradleBuildFileSorterFactory.groovy | 2 +- .../pater/JavaServiceLoaderGradleBuildFileResolver.groovy | 2 +- .../groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy | 2 +- .../com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy | 2 +- .../plugins/pater/ClasspathGradleBuildFileResolverTest.java | 2 +- .../fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java | 2 +- .../com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java | 2 +- .../gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java | 2 +- .../plugins/pater/GradleBuildFileResolverFactoryTest.java | 2 +- .../gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java | 2 +- .../java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java | 2 +- .../fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java | 2 +- .../fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/build.gradle b/build.gradle index 4155c45..441e852 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } } dependencies { - classpath ('com.fizzpod:gradle-plugin-opinion:20.2.0') + classpath ('com.fizzpod:gradle-plugin-opinion:20.3.0') } } diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy index 811a930..b2ab70e 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolver.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import java.nio.file.Files diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy index 539b0b4..cd256c9 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorter.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import java.net.URI diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy index d206ed3..04485c6 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFile.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy index 26eeca7..1978312 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolver.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy index 5f911be..7d56211 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactory.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import java.util.Collection diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy index 8746931..785681a 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorter.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy index 3e5ff39..b0f425e 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactory.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.slf4j.Logger diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy index 991bc8c..8fb35d2 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/JavaServiceLoaderGradleBuildFileResolver.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.gradle.api.Project diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy index 344907e..5a4ff16 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/PaterPlugin.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.gradle.api.Plugin diff --git a/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy b/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy index b7c8d04..ed15529 100644 --- a/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy +++ b/src/main/groovy/com/fizzpod/gradle/plugins/pater/UriGradleBuildFile.groovy @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater import org.apache.commons.io.FilenameUtils diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java index 9fbedde..3ec5638 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/ClasspathGradleBuildFileResolverTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import java.util.Collection; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java index c922e2d..6e4b8e6 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileResolver.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; public class CustomBuildFileResolver extends ClasspathGradleBuildFileResolver {} diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java index 8ca5c57..de0a86d 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/CustomBuildFileSorter.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; public class CustomBuildFileSorter extends FileNameGradleBuildFileSorter {} diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java index 573f4e7..6c3a514 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/FileNameGradleBuildFileSorterTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import java.io.File; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java index 1ddcbca..66c3e9e 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileResolverFactoryTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import java.util.Collection; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java index 2500bf4..6fb6eda 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/GradleBuildFileSorterFactoryTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import org.junit.Assert; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java index 05c2bcd..3b7896f 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/PaterPluginTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import org.gradle.api.Project; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java b/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java index c75e6b2..71c4a28 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/TestableGradleBuildFile.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import org.gradle.api.Project; diff --git a/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java b/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java index cfd4b70..3939337 100644 --- a/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java +++ b/src/test/java/com/fizzpod/gradle/plugins/pater/UriGradleBuildFileTest.java @@ -1,5 +1,5 @@ -/* SPDX-License-Identifier: Apache-2.0 */ /* (C) 2024 */ +/* SPDX-License-Identifier: Apache-2.0 */ package com.fizzpod.gradle.plugins.pater; import java.io.File; From e3e37aee0c27bc7a6ffb38acba0b2b6d2aab78a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 22:50:05 +0000 Subject: [PATCH 3/4] fix(deps): bump com.gradle.develocity from 3.18.2 to 3.19 Bumps com.gradle.develocity from 3.18.2 to 3.19. --- updated-dependencies: - dependency-name: com.gradle.develocity dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- settings.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.gradle b/settings.gradle index 0135912..1ba510e 100644 --- a/settings.gradle +++ b/settings.gradle @@ -7,7 +7,7 @@ include 'services:webservice' plugins { id 'org.gradle.toolchains.foojay-resolver-convention' version '0.9.0' - id "com.gradle.develocity" version "3.18.2" + id "com.gradle.develocity" version "3.19" } rootProject.name = 'gradle-pater-build-plugin' From 7cbe3be49838d73b392ace1a1bf7ea04fdc6e485 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 22:50:08 +0000 Subject: [PATCH 4/4] fix(deps): bump com.fizzpod:gradle-plugin-opinion from 20.3.0 to 21.0.0 Bumps com.fizzpod:gradle-plugin-opinion from 20.3.0 to 21.0.0. --- updated-dependencies: - dependency-name: com.fizzpod:gradle-plugin-opinion dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 441e852..ee4c090 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ buildscript { } } dependencies { - classpath ('com.fizzpod:gradle-plugin-opinion:20.3.0') + classpath ('com.fizzpod:gradle-plugin-opinion:21.0.0') } }