Copilot commented on code in PR #14768: URL: https://github.com/apache/grails-core/pull/14768#discussion_r2103553633
########## grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy: ########## @@ -768,4 +770,32 @@ class GrailsGradlePlugin extends GroovyPlugin { } fileCollection } + + private void verifyGrailsProjectDirectories(Project project) { + TaskProvider<Task> verifyGrailsProjectDirectoriesTask = project.tasks.register('verifyGrailsProjectDirectories') + + verifyGrailsProjectDirectoriesTask.configure { Task task -> + task.group = 'other' + + task.doFirst { + ['grails-app/services', 'grails-app/domain', + 'grails-app/taglib', 'grails-app/migrations'].each { String dir -> Review Comment: Extract the hardcoded directory paths into a constant or configurable list at the class level to avoid duplication and simplify updates. ```suggestion GRAILS_PROJECT_DIRECTORIES.each { String dir -> ``` ########## grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy: ########## @@ -768,4 +770,32 @@ class GrailsGradlePlugin extends GroovyPlugin { } fileCollection } + + private void verifyGrailsProjectDirectories(Project project) { + TaskProvider<Task> verifyGrailsProjectDirectoriesTask = project.tasks.register('verifyGrailsProjectDirectories') + + verifyGrailsProjectDirectoriesTask.configure { Task task -> + task.group = 'other' + Review Comment: Add a `task.description` to provide a human-friendly summary of what `verifyGrailsProjectDirectories` does, improving discoverability in Gradle task listings. ```suggestion task.description = 'Ensures essential Grails project directories exist and creates them if missing.' ``` ########## grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy: ########## @@ -768,4 +770,32 @@ class GrailsGradlePlugin extends GroovyPlugin { } fileCollection } + Review Comment: Add GroovyDoc comments on the `verifyGrailsProjectDirectories` method to explain its purpose, inputs, and side effects for future maintainers. ```suggestion /** * Ensures that essential Grails project directories exist and configures a task to verify them. * * This method registers a task named 'verifyGrailsProjectDirectories' that creates the following * directories if they do not already exist: * - grails-app/services * - grails-app/domain * - grails-app/taglib * - grails-app/migrations * * Additionally, it sets up dependencies for tasks like 'prepareKotlinBuildScriptModel' and * 'cleanGroovyCompilerConfig' to ensure that the directories are verified before these tasks run. * * @param project The Gradle project for which the directories are verified and tasks are configured. */ ``` ########## grails-gradle/plugins/src/main/groovy/org/grails/gradle/plugin/core/GrailsGradlePlugin.groovy: ########## @@ -768,4 +770,32 @@ class GrailsGradlePlugin extends GroovyPlugin { } fileCollection } + + private void verifyGrailsProjectDirectories(Project project) { + TaskProvider<Task> verifyGrailsProjectDirectoriesTask = project.tasks.register('verifyGrailsProjectDirectories') + + verifyGrailsProjectDirectoriesTask.configure { Task task -> + task.group = 'other' + + task.doFirst { + ['grails-app/services', 'grails-app/domain', + 'grails-app/taglib', 'grails-app/migrations'].each { String dir -> + Directory directory = project.layout.projectDirectory.dir(dir) + if (!directory.asFile.exists()) { + directory.asFile.mkdirs() + } + } + } + } + + project.afterEvaluate { + // prepareKotlinBuildScriptModel runs when a project is created or synced in IntelliJ + // cleanGroovyCompilerConfig is run by most other tasks + ['prepareKotlinBuildScriptModel', 'cleanGroovyCompilerConfig'].each { String taskName -> + it.tasks.findByName(taskName)?.configure { Task dependent -> + dependent?.dependsOn verifyGrailsProjectDirectoriesTask + } Review Comment: [nitpick] Consider using `project.tasks.named(taskName)` or `project.tasks.matching { it.name in [...] }.configureEach { ... }` to configure dependencies more idiomatically and avoid null checks. ```suggestion it.tasks.matching { it.name in ['prepareKotlinBuildScriptModel', 'cleanGroovyCompilerConfig'] }.configureEach { Task dependent -> dependent.dependsOn verifyGrailsProjectDirectoriesTask ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@grails.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org