Skip to content

Commit

Permalink
Refactoring of the MavenProjectBuildFile that is moved to the devtools
Browse files Browse the repository at this point in the history
common so that it can be used by the CLI. The implementation is backed
by the artifact descriptor.
  • Loading branch information
aloubyansky committed Apr 19, 2021
1 parent ab00a99 commit ca0ff4c
Show file tree
Hide file tree
Showing 25 changed files with 552 additions and 325 deletions.
4 changes: 1 addition & 3 deletions devtools/cli/src/main/java/io/quarkus/cli/Add.java
Expand Up @@ -7,12 +7,10 @@

import io.quarkus.cli.core.BaseSubCommand;
import io.quarkus.cli.core.BuildsystemCommand;
import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.commands.AddExtensions;
import io.quarkus.devtools.commands.data.QuarkusCommandOutcome;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import picocli.CommandLine;

@CommandLine.Command(name = "add", mixinStandardHelpOptions = false, description = "Add extension(s) to current project.")
Expand Down Expand Up @@ -48,7 +46,7 @@ public List<String> getArguments(Path projectDir, BuildTool buildtool) {

private Integer addMaven(Path projectDirectory) {
try {
QuarkusProject quarkusProject = QuarkusProjectHelper.getProject(projectDirectory, QuarkusCliVersion.version());
final QuarkusProject quarkusProject = QuarkusCliUtils.getQuarkusProject(projectDirectory);

AddExtensions project = new AddExtensions(quarkusProject);
project.extensions(extensions);
Expand Down
12 changes: 4 additions & 8 deletions devtools/cli/src/main/java/io/quarkus/cli/Create.java
Expand Up @@ -6,11 +6,8 @@
import java.util.concurrent.Callable;

import io.quarkus.cli.core.BaseSubCommand;
import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.commands.CreateProject;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import io.quarkus.devtools.project.codegen.SourceType;
import picocli.CommandLine;

Expand Down Expand Up @@ -108,14 +105,13 @@ public Integer call() throws Exception {
}

BuildTool buildTool = BuildTool.MAVEN;
if (targetBuildTool.gradle)
if (targetBuildTool.gradle) {
buildTool = BuildTool.GRADLE;
else if (targetBuildTool.gradleKotlinDsl)
} else if (targetBuildTool.gradleKotlinDsl) {
buildTool = BuildTool.GRADLE_KOTLIN_DSL;
}

final QuarkusProject project = QuarkusProjectHelper.getProject(projectRoot.getAbsoluteFile().toPath(), buildTool,
QuarkusCliVersion.version());
boolean status = new CreateProject(project)
boolean status = new CreateProject(QuarkusCliUtils.getQuarkusProject(buildTool, projectRoot.toPath()))
.groupId(groupId)
.artifactId(artifactId)
.version(version)
Expand Down
4 changes: 1 addition & 3 deletions devtools/cli/src/main/java/io/quarkus/cli/List.java
Expand Up @@ -5,11 +5,9 @@

import io.quarkus.cli.core.BaseSubCommand;
import io.quarkus.cli.core.BuildsystemCommand;
import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.commands.ListExtensions;
import io.quarkus.devtools.commands.data.QuarkusCommandException;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import picocli.CommandLine;

@CommandLine.Command(name = "list", sortOptions = false, mixinStandardHelpOptions = false, description = "List installed (default) or installable extensions.")
Expand Down Expand Up @@ -88,7 +86,7 @@ private Integer listExtensionsMaven(Path projectDirectory) {
// we do not have to spawn process for maven
try {

new ListExtensions(QuarkusProjectHelper.getProject(projectDirectory, QuarkusCliVersion.version()))
new ListExtensions(QuarkusCliUtils.getQuarkusProject(projectDirectory))
.fromCli(true)
.all(false)
.installed(!installable)
Expand Down
7 changes: 2 additions & 5 deletions devtools/cli/src/main/java/io/quarkus/cli/Platforms.java
Expand Up @@ -4,10 +4,8 @@

import io.quarkus.cli.core.BaseSubCommand;
import io.quarkus.cli.core.BuildsystemCommand;
import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.commands.ListPlatforms;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import picocli.CommandLine;

@CommandLine.Command(name = "platforms", sortOptions = false, mixinStandardHelpOptions = false, description = "List imported (default) or all available Quarkus platforms.")
Expand All @@ -17,9 +15,8 @@ public class Platforms extends BaseSubCommand implements BuildsystemCommand {
public int execute(Path projectDirectory, BuildTool buildTool) {
try {
new ListPlatforms(
QuarkusProjectHelper.getProject(projectDirectory, buildTool == null ? BuildTool.MAVEN : buildTool,
QuarkusCliVersion.version()))
.execute();
QuarkusCliUtils.getQuarkusProject(buildTool == null ? BuildTool.MAVEN : buildTool, projectDirectory))
.execute();
} catch (Exception e) {
if (parent.showErrors) {
e.printStackTrace(err());
Expand Down
36 changes: 36 additions & 0 deletions devtools/cli/src/main/java/io/quarkus/cli/QuarkusCliUtils.java
@@ -0,0 +1,36 @@
package io.quarkus.cli;

import java.nio.file.Path;

import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.messagewriter.MessageWriter;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProject;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import io.quarkus.devtools.project.buildfile.MavenProjectBuildFile;

public class QuarkusCliUtils {

static QuarkusProject getQuarkusProject(Path projectRoot) {
return getQuarkusProject(QuarkusProject.resolveExistingProjectBuildTool(projectRoot), projectRoot);
}

static QuarkusProject getQuarkusProject(BuildTool buildTool, Path projectRoot) {
if (BuildTool.MAVEN.equals(buildTool)) {
return MavenProjectBuildFile.getProject(projectRoot.toAbsolutePath(), MessageWriter.info(),
() -> QuarkusCliVersion.version());
}
if (BuildTool.GRADLE.equals(buildTool)) {
return getNonMavenProject(projectRoot, BuildTool.GRADLE);
}
if (BuildTool.GRADLE_KOTLIN_DSL.equals(buildTool)) {
return getNonMavenProject(projectRoot, BuildTool.GRADLE_KOTLIN_DSL);
}
throw new IllegalArgumentException("Unexpected build tool " + buildTool);
}

private static QuarkusProject getNonMavenProject(Path projectRoot, BuildTool buildTool) {
return QuarkusProjectHelper.getProject(projectRoot, buildTool,
QuarkusCliVersion.version());
}
}
4 changes: 1 addition & 3 deletions devtools/cli/src/main/java/io/quarkus/cli/Remove.java
Expand Up @@ -7,11 +7,9 @@

import io.quarkus.cli.core.BaseSubCommand;
import io.quarkus.cli.core.BuildsystemCommand;
import io.quarkus.cli.core.QuarkusCliVersion;
import io.quarkus.devtools.commands.RemoveExtensions;
import io.quarkus.devtools.commands.data.QuarkusCommandOutcome;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.devtools.project.QuarkusProjectHelper;
import picocli.CommandLine;

@CommandLine.Command(name = "remove", aliases = "rm", mixinStandardHelpOptions = false, description = "Remove an extension from this project.")
Expand Down Expand Up @@ -49,7 +47,7 @@ public int execute(Path projectDir, BuildTool buildtool) throws Exception {
private Integer removeMaven(Path projectDirectory) {
try {
RemoveExtensions project = new RemoveExtensions(
QuarkusProjectHelper.getProject(projectDirectory, QuarkusCliVersion.version()))
QuarkusCliUtils.getQuarkusProject(projectDirectory))
.extensions(extensions);
QuarkusCommandOutcome result = project.execute();
return result.isSuccess() ? CommandLine.ExitCode.OK : CommandLine.ExitCode.SOFTWARE;
Expand Down

This file was deleted.

0 comments on commit ca0ff4c

Please sign in to comment.