Skip to content

Instantly share code, notes, and snippets.

@snicoll
Created August 8, 2019 13:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save snicoll/1872f5d4784fa486c685d4289782ec3e to your computer and use it in GitHub Desktop.
Save snicoll/1872f5d4784fa486c685d4289782ec3e to your computer and use it in GitHub Desktop.
package com.example.custominitializr.generator.contributor;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Collections;
import io.spring.initializr.generator.io.template.MustacheTemplateRenderer;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.project.contributor.ProjectContributor;
public class SingleTypeProjectContributor implements ProjectContributor {
private final MustacheTemplateRenderer templateRenderer;
private final ResolvedProjectDescription projectDescription;
private final String templateName;
public SingleTypeProjectContributor(MustacheTemplateRenderer templateRenderer,
ResolvedProjectDescription projectDescription, String templateName) {
this.templateRenderer = templateRenderer;
this.projectDescription = projectDescription;
this.templateName = templateName;
}
@Override
public void contribute(Path projectRoot) throws IOException {
Path srcDir = this.projectDescription.getBuildSystem().getMainDirectory(projectRoot,
this.projectDescription.getLanguage());
Path typeDir = srcDir.resolve(this.projectDescription.getPackageName().replace('.', '/'));
if (!Files.exists(typeDir)) {
Files.createDirectories(typeDir);
}
Path file = Files.createFile(typeDir.resolve(this.templateName));
try (PrintWriter writer = new PrintWriter(Files.newBufferedWriter(file))) {
writer.println(this.templateRenderer.render(this.templateName,
Collections.singletonMap("packageName", this.projectDescription.getPackageName())));
}
}
}
package {{packageName}};
public class Test {
public void doIt() throws Exception {
//
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment