Skip to content

Commit c8e9366

Browse files
Make GraphQLGenerateClientTask and GraphQLGenerateTestClientTask cacheable (#1986)
### 📝 Description - We can leverage caching in Gradle for `GraphQLGenerateClientTask` and `GraphQLGenerateTestClientTask` by annotating them with `@CacheableTask` - Also annotate `schemaFile`, `queryFileDirectory`, `queryFiles` with `@PathSensitive(PathSensitivity.RELATIVE)` for the purposes of normalization so that outputs can be reused for caching - Gradle docs: https://docs.gradle.org/current/javadoc/org/gradle/api/tasks/CacheableTask.html
1 parent de67695 commit c8e9366

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

plugins/graphql-kotlin-gradle-plugin/src/main/kotlin/com/expediagroup/graphql/plugin/gradle/tasks/AbstractGenerateClientTask.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ import org.gradle.api.tasks.InputFiles
3434
import org.gradle.api.tasks.Optional
3535
import org.gradle.api.tasks.OutputDirectory
3636
import org.gradle.api.tasks.TaskAction
37+
import org.gradle.api.tasks.PathSensitive
38+
import org.gradle.api.tasks.PathSensitivity
3739
import org.gradle.api.tasks.options.Option
3840
import org.gradle.workers.ClassLoaderWorkerSpec
3941
import org.gradle.workers.WorkQueue
@@ -55,6 +57,7 @@ abstract class AbstractGenerateClientTask : DefaultTask() {
5557
* **Required Property**
5658
*/
5759
@InputFile
60+
@PathSensitive(PathSensitivity.RELATIVE)
5861
val schemaFile: RegularFileProperty = project.objects.fileProperty()
5962

6063
/**
@@ -97,6 +100,7 @@ abstract class AbstractGenerateClientTask : DefaultTask() {
97100
*/
98101
@InputDirectory
99102
@Optional
103+
@PathSensitive(PathSensitivity.RELATIVE)
100104
val queryFileDirectory: DirectoryProperty = project.objects.directoryProperty()
101105

102106
/**
@@ -105,6 +109,7 @@ abstract class AbstractGenerateClientTask : DefaultTask() {
105109
*/
106110
@InputFiles
107111
@Optional
112+
@PathSensitive(PathSensitivity.RELATIVE)
108113
val queryFiles: ConfigurableFileCollection = project.objects.fileCollection()
109114

110115
@Input

plugins/graphql-kotlin-gradle-plugin/src/main/kotlin/com/expediagroup/graphql/plugin/gradle/tasks/GraphQLGenerateClientTask.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.expediagroup.graphql.plugin.gradle.tasks
1818

19+
import org.gradle.api.tasks.CacheableTask
20+
1921
internal const val GENERATE_CLIENT_TASK_NAME: String = "graphqlGenerateClient"
2022

2123
/**
2224
* Generate GraphQL Kotlin client and corresponding data classes based on the provided GraphQL queries.
2325
*/
2426
@Suppress("UnstableApiUsage")
27+
@CacheableTask
2528
abstract class GraphQLGenerateClientTask : AbstractGenerateClientTask() {
2629

2730
init {

plugins/graphql-kotlin-gradle-plugin/src/main/kotlin/com/expediagroup/graphql/plugin/gradle/tasks/GraphQLGenerateTestClientTask.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,15 @@
1616

1717
package com.expediagroup.graphql.plugin.gradle.tasks
1818

19+
import org.gradle.api.tasks.CacheableTask
20+
1921
internal const val GENERATE_TEST_CLIENT_TASK_NAME: String = "graphqlGenerateTestClient"
2022

2123
/**
2224
* Generate GraphQL Kotlin test client and corresponding data classes based on the provided GraphQL queries.
2325
*/
2426
@Suppress("UnstableApiUsage")
27+
@CacheableTask
2528
abstract class GraphQLGenerateTestClientTask : AbstractGenerateClientTask() {
2629

2730
init {

0 commit comments

Comments
 (0)