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

Reply via email to