use of io.vertx.starter.model.Language in project vertx-starter by vert-x3.
the class GeneratorTest method testProject.
private void testProject(VertxProject project, Vertx vertx, VertxTestContext testContext) {
vertx.eventBus().<Buffer>request(Topics.PROJECT_REQUESTED, project, testContext.succeeding(msg -> {
unpack(vertx, testContext, workdir, msg.body(), testContext.succeeding(unpacked -> {
testContext.verify(() -> {
verifyBaseFiles();
BuildTool buildTool = project.getBuildTool();
Language language = project.getLanguage();
if (buildTool == MAVEN) {
verifyMavenFiles();
} else if (buildTool == GRADLE) {
verifyGradleFiles(language);
} else {
testContext.failNow(new NoStackTraceThrowable(unsupported(buildTool)));
return;
}
try {
verifySourceFiles(language);
} catch (IOException e) {
throw new AssertionError(e);
}
if (Utils.isWindows()) {
testContext.completeNow();
} else {
buildProject(vertx, buildTool, testContext.succeeding(projectBuilt -> {
testContext.verify(() -> {
if (buildTool == MAVEN) {
try {
verifyMavenOutputFiles();
} catch (IOException e) {
throw new AssertionError(e);
}
} else if (buildTool == GRADLE) {
try {
verifyGradleOutputFiles();
} catch (IOException e) {
throw new AssertionError(e);
}
} else {
testContext.failNow(new NoStackTraceThrowable(unsupported(buildTool)));
}
runDevMode(vertx, buildTool, testContext.succeeding(devModeRan -> testContext.completeNow()));
});
}));
}
});
}));
}));
}
use of io.vertx.starter.model.Language in project vertx-starter by vert-x3.
the class GeneratorService method createProject.
private void createProject(VertxProject project, TempDir tempDir) throws IOException {
log.trace("Generating project: {}", project);
Map<String, Object> ctx = new HashMap<>();
ctx.put("buildTool", project.getBuildTool().name().toLowerCase());
String groupId = project.getGroupId();
ctx.put("groupId", groupId);
String artifactId = project.getArtifactId();
ctx.put("artifactId", artifactId);
Language language = project.getLanguage();
ctx.put("language", language.name().toLowerCase());
ctx.put("vertxVersion", project.getVertxVersion());
Set<String> vertxDependencies = project.getVertxDependencies();
if (vertxDependencies == null) {
vertxDependencies = new HashSet<>();
}
boolean hasVertxUnit = vertxDependencies.remove("vertx-unit");
ctx.put("hasVertxUnit", hasVertxUnit);
boolean hasVertxJUnit5 = vertxDependencies.remove("vertx-junit5") || !hasVertxUnit;
ctx.put("hasVertxJUnit5", hasVertxJUnit5);
if (hasVertxUnit && hasVertxJUnit5) {
throw new RuntimeException("You cannot generate a project which depends on both vertx-unit and vertx-junit5.");
}
vertxDependencies.addAll(language.getLanguageDependencies());
ctx.put("vertxDependencies", vertxDependencies);
String packageName = packageName(project);
ctx.put("packageName", packageName);
ctx.put("jdkVersion", project.getJdkVersion().getValue());
Path tempDirPath = tempDir.path();
String tempDirPathStr = tempDirPath.toString();
copy(tempDir, "files", "_editorconfig");
copy(tempDir, "files", "_gitignore");
if (project.getBuildTool() == GRADLE) {
copy(tempDir, "files/gradle", "gradlew");
copy(tempDir, "files/gradle", "gradlew.bat");
if (project.getLanguage() == KOTLIN) {
copy(tempDir, "files/gradle", "gradle.properties");
}
copy(tempDir, "files/gradle", "gradle/wrapper/gradle-wrapper.jarr");
copy(tempDir, "files/gradle", "gradle/wrapper/gradle-wrapper.properties");
render(tempDir, ctx, ".", "build.gradle.kts");
render(tempDir, ctx, ".", "settings.gradle.kts");
} else if (project.getBuildTool() == MAVEN) {
copy(tempDir, "files/maven", "mvnw");
copy(tempDir, "files/maven", "mvnw.cmd");
copy(tempDir, "files/maven", "_mvn/wrapper/maven-wrapper.jarr");
copy(tempDir, "files/maven", "_mvn/wrapper/maven-wrapper.properties");
copy(tempDir, "files/maven", "_mvn/wrapper/MavenWrapperDownloader.java");
render(tempDir, ctx, ".", "pom.xml");
} else {
throw new RuntimeException("Unsupported build tool: " + project.getBuildTool());
}
String packageDir = packageName.replace('.', '/');
String srcDir = "src/main/" + language.getName();
render(tempDir, ctx, srcDir, "MainVerticle" + language.getExtension(), srcDir + "/" + packageDir);
String testSrcDir = "src/test/" + language.getName();
render(tempDir, ctx, testSrcDir, "TestMainVerticle" + language.getExtension(), testSrcDir + "/" + packageDir);
render(tempDir, ctx, ".", "README.adoc");
}
use of io.vertx.starter.model.Language in project vertx-starter by vert-x3.
the class GeneratorTest method testProjectsJdk8.
static Stream<VertxProject> testProjectsJdk8() throws IOException {
List<String> versions = Util.loadStarterData().getJsonArray("versions").stream().map(JsonObject.class::cast).map(obj -> obj.getString("number")).filter(version -> !version.endsWith("-SNAPSHOT")).collect(toList());
List<Set<String>> testDeps = Arrays.asList(Collections.singleton("vertx-unit"), Collections.singleton("vertx-junit5"));
Stream.Builder<VertxProject> builder = Stream.builder();
for (BuildTool buildTool : BuildTool.values()) {
for (Language language : Language.values()) {
for (String version : versions) {
for (Set<String> vertxDependencies : testDeps) {
VertxProject vertxProject = defaultProject().setBuildTool(buildTool).setLanguage(language).setVertxVersion(version).setVertxDependencies(new HashSet<>(vertxDependencies)).setPackageName("com.mycompany.project.special");
builder.add(vertxProject);
}
}
}
}
return builder.build();
}
Aggregations