Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
import io.github.besi97.graphql.codegen.supplier.SchemaFinder;
import org.gradle.api.Action;
import org.gradle.api.DefaultTask;
import org.gradle.work.DisableCachingByDefault;
import org.gradle.api.file.DirectoryProperty;
import org.gradle.api.file.ProjectLayout;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputDirectory;
import org.gradle.api.tasks.InputFile;
Expand Down Expand Up @@ -53,7 +53,7 @@
*
* @author Besi97
*/
@DisableCachingByDefault(because = "Code generation output may include timestamps")
@CacheableTask
public class GraphQLCodegenGradleTask extends DefaultTask implements GraphQLCodegenConfiguration {

private List<String> graphqlSchemaPaths;
Expand Down Expand Up @@ -141,7 +141,7 @@
private final ProjectLayout projectLayout;

@Inject
public GraphQLCodegenGradleTask(ProjectLayout projectLayout) {

Check warning on line 144 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 144 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 144 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
setGroup("codegen");
setDescription("Generates Java POJOs and interfaces based on GraphQL schemas");
this.projectLayout = projectLayout;
Expand Down Expand Up @@ -323,7 +323,7 @@
@InputFiles
@Optional
@PathSensitive(PathSensitivity.RELATIVE)
public List<String> getGraphqlSchemaPaths() {

Check warning on line 326 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 326 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 326 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return graphqlSchemaPaths;
}

Expand All @@ -334,7 +334,7 @@
@InputFile
@Optional
@PathSensitive(PathSensitivity.NONE)
public String getGraphqlQueryIntrospectionResultPath() {

Check warning on line 337 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 337 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 337 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return graphqlQueryIntrospectionResultPath;
}

Expand All @@ -344,16 +344,16 @@

@Nested
@Optional
public SchemaFinderConfig getGraphqlSchemas() {

Check warning on line 347 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 347 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 347 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return graphqlSchemas;
}

public void graphqlSchemas(Action<? super SchemaFinderConfig> action) {

Check warning on line 351 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 351 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 351 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
action.execute(graphqlSchemas);
}

@OutputDirectory
public File getOutputDir() {

Check warning on line 356 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 356 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 356 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return outputDir;
}

Expand Down Expand Up @@ -995,7 +995,7 @@

@Nested
@Optional
public ParentInterfacesConfig getParentInterfaces() {

Check warning on line 998 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 998 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 998 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return parentInterfaces;
}

Expand Down Expand Up @@ -1030,7 +1030,7 @@
@InputFiles
@Optional
@PathSensitive(PathSensitivity.RELATIVE)
public List<String> getConfigurationFiles() {

Check warning on line 1033 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 1033 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 1033 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return configurationFiles;
}

Expand Down Expand Up @@ -1134,13 +1134,13 @@

@Input
@Optional
public Boolean getSkip() {

Check warning on line 1137 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (25)

no comment

Check warning on line 1137 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment

Check warning on line 1137 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (21)

no comment
return skip;
}

@Deprecated
@Internal
public Boolean isSkip() {

Check warning on line 1143 in plugins/gradle/graphql-java-codegen-gradle-plugin/src/main/java/io/github/besi97/graphql/codegen/gradle/GraphQLCodegenGradleTask.java

View workflow job for this annotation

GitHub Actions / build (17)

no comment
return skip;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,46 @@

import io.github.besi97.graphql.codegen.GraphQLCodegenValidate;
import org.gradle.api.DefaultTask;
import org.gradle.work.DisableCachingByDefault;
import org.gradle.api.file.ProjectLayout;
import org.gradle.api.file.RegularFile;
import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.CacheableTask;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputFile;
import org.gradle.api.tasks.PathSensitive;
import org.gradle.api.tasks.PathSensitivity;
import org.gradle.api.tasks.TaskAction;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import javax.inject.Inject;

/**
* Gradle task for GraphQL code generation
*
* @author Besi97
*/
@DisableCachingByDefault(because = "Validation task does not produce output files")
@CacheableTask
public class GraphQLCodegenValidateGradleTask extends DefaultTask {

private List<String> graphqlSchemaPaths;
private final Provider<RegularFile> validationResultFile;

@Inject
public GraphQLCodegenValidateGradleTask(ProjectLayout projectLayout) {
this.validationResultFile = projectLayout.getBuildDirectory()
.file("graphql-codegen-validate/validation.success");
}

@TaskAction
public void validate() throws IOException {
new GraphQLCodegenValidate(graphqlSchemaPaths).validate();
Path resultFilePath = validationResultFile.get().getAsFile().toPath();
Files.createDirectories(resultFilePath.getParent());
Files.write(resultFilePath, "OK".getBytes(StandardCharsets.UTF_8));
}

@InputFiles
Expand All @@ -35,4 +53,18 @@ public List<String> getGraphqlSchemaPaths() {
public void setGraphqlSchemaPaths(List<String> graphqlSchemaPaths) {
this.graphqlSchemaPaths = graphqlSchemaPaths;
}

/**
* Marker file that records a successful validation run.
*
* <p>A cacheable task must declare at least one output, otherwise Gradle silently
* disables caching for it. This file contains no meaningful data; it only makes
* the validation result incremental and cacheable.
*
* @return the validation result marker file property
*/
@OutputFile
public Provider<RegularFile> getValidationResultFile() {
return validationResultFile;
}
}
Loading