Skip to content

Commit

Permalink
add metadata to generated code in CLI processor
Browse files Browse the repository at this point in the history
  • Loading branch information
sigpwned committed Jan 14, 2025
1 parent f3cba9d commit 2efdf4e
Show file tree
Hide file tree
Showing 11 changed files with 98 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Comparator;
Expand Down Expand Up @@ -95,6 +96,7 @@
import rapier.compiler.core.model.DaggerInjectionSite;
import rapier.compiler.core.util.ConversionExprFactories;
import rapier.compiler.core.util.Java;
import rapier.compiler.core.util.RapierInfo;

@SupportedAnnotationTypes("dagger.Component")
@SupportedSourceVersion(SourceVersion.RELEASE_11)
Expand All @@ -104,6 +106,30 @@ public class CliProcessor extends RapierProcessorBase {
private ConversionExprFactory booleanConverter;
private ConversionExprFactory listOfBooleanConverter;

private String version = RapierInfo.VERSION;

/* default */ void setVersion(String version) {
if (version == null)
throw new NullPointerException();
this.version = version;
}

private OffsetDateTime date = OffsetDateTime.now();

/* default */ void setDate(OffsetDateTime date) {
if (date == null)
throw new NullPointerException();
this.date = date;
}

private String url = RapierInfo.URL;

/* default */ void setUrl(String url) {
if (url == null)
throw new NullPointerException();
this.url = url;
}

@Override
public synchronized void init(ProcessingEnvironment processingEnv) {
super.init(processingEnv);
Expand Down Expand Up @@ -966,13 +992,20 @@ private String generateModuleSource(String packageName, String moduleClassName,
out.println("import java.util.Map;");
out.println("import java.util.Optional;");
out.println("import javax.annotation.Nullable;");
out.println("import javax.annotation.processing.Generated;");
out.println("import rapier.internal.RapierGenerated;");
out.println("import rapier.cli.CliSyntaxException;");
out.println("import rapier.cli.CliFlagParameter;");
out.println("import rapier.cli.CliOptionParameter;");
out.println("import rapier.cli.CliPositionalParameter;");
out.println("import " + JustArgs.class.getName() + ";");
out.println();
out.println("@Module");
out.println("@RapierGenerated");
out.println("@Generated(");
out.println(" value = \"" + CliProcessor.class.getName() + "@" + version + "\",");
out.println(" comments = \"" + Java.escapeString(url) + "\",");
out.println(" date = \"" + date.toInstant().toString() + "\")");
out.println("public class " + moduleClassName + " {");
out.println();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -254,6 +254,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.processing.Processor;
import javax.tools.JavaFileObject;
import org.junit.jupiter.api.Test;
import com.google.testing.compile.Compilation;
Expand Down Expand Up @@ -93,13 +96,20 @@ public interface ExampleComponent {
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
import javax.annotation.processing.Generated;
import rapier.internal.RapierGenerated;
import rapier.cli.CliSyntaxException;
import rapier.cli.CliFlagParameter;
import rapier.cli.CliOptionParameter;
import rapier.cli.CliPositionalParameter;
import rapier.cli.compiler.thirdparty.com.sigpwned.just.args.JustArgs;
@Module
@RapierGenerated
@Generated(
value = "[email protected]",
comments = "https://www.example.com",
date = "2024-01-01T12:34:56Z")
public class RapierExampleComponentCliModule {
// Positional parameters
Expand Down Expand Up @@ -372,13 +382,20 @@ public interface ExampleComponent {
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
import javax.annotation.processing.Generated;
import rapier.internal.RapierGenerated;
import rapier.cli.CliSyntaxException;
import rapier.cli.CliFlagParameter;
import rapier.cli.CliOptionParameter;
import rapier.cli.CliPositionalParameter;
import rapier.cli.compiler.thirdparty.com.sigpwned.just.args.JustArgs;
@Module
@RapierGenerated
@Generated(
value = "[email protected]",
comments = "https://www.example.com",
date = "2024-01-01T12:34:56Z")
public class RapierExampleComponentCliModule {
// Positional parameters
Expand Down Expand Up @@ -635,13 +652,20 @@ public interface ExampleComponent {
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
import javax.annotation.processing.Generated;
import rapier.internal.RapierGenerated;
import rapier.cli.CliSyntaxException;
import rapier.cli.CliFlagParameter;
import rapier.cli.CliOptionParameter;
import rapier.cli.CliPositionalParameter;
import rapier.cli.compiler.thirdparty.com.sigpwned.just.args.JustArgs;
@Module
@RapierGenerated
@Generated(
value = "[email protected]",
comments = "https://www.example.com",
date = "2024-01-01T12:34:56Z")
public class RapierExampleComponentCliModule {
// Positional parameters
Expand Down Expand Up @@ -876,13 +900,20 @@ public interface ExampleComponent {
import java.util.Map;
import java.util.Optional;
import javax.annotation.Nullable;
import javax.annotation.processing.Generated;
import rapier.internal.RapierGenerated;
import rapier.cli.CliSyntaxException;
import rapier.cli.CliFlagParameter;
import rapier.cli.CliOptionParameter;
import rapier.cli.CliPositionalParameter;
import rapier.cli.compiler.thirdparty.com.sigpwned.just.args.JustArgs;
@Module
@RapierGenerated
@Generated(
value = "[email protected]",
comments = "https://www.example.com",
date = "2024-01-01T12:34:56Z")
public class RapierExampleComponentCliModule {
// Positional parameters
Expand Down Expand Up @@ -1038,6 +1069,30 @@ public List<Boolean> provideFlag59dcb7aAsListOfBoolean() {
.hasSourceEquivalentTo(expectedOutput);
}

public static final OffsetDateTime TEST_DATE =
OffsetDateTime.of(2024, 1, 1, 12, 34, 56, 0, ZoneOffset.UTC);

public static final String TEST_VERSION = "1.2.3";

public static final String TEST_URL = "https://www.example.com";

/**
* We need to set the date and version so our generated source code is deterministic.
*/
@Override
protected List<Processor> getAnnotationProcessors() {
List<Processor> result = super.getAnnotationProcessors();
for (Processor processor : result) {
if (processor instanceof CliProcessor) {
CliProcessor cp = (CliProcessor) processor;
cp.setDate(TEST_DATE);
cp.setVersion(TEST_VERSION);
cp.setUrl(TEST_URL);
}
}
return unmodifiableList(result);
}

/**
* We need to include the generated classes from the rapier-cli module in the classpath for our
* tests.
Expand All @@ -1047,6 +1102,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,7 @@ protected List<File> getCompileClasspath() throws FileNotFoundException {
List<File> result = new ArrayList<>();
result.addAll(super.getCompileClasspath());
result.add(resolveProjectFile("../rapier-cli/target/classes"));
result.add(resolveProjectFile("../rapier-core/target/classes"));
return unmodifiableList(result);
}
}

0 comments on commit 2efdf4e

Please sign in to comment.