Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better tooling experience for Quarkus project info and update #29558

Merged
merged 4 commits into from
Feb 17, 2023
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
4 changes: 2 additions & 2 deletions devtools/cli/src/main/java/io/quarkus/cli/CreateApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import io.quarkus.cli.common.DataOptions;
import io.quarkus.cli.common.PropertiesOptions;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import io.quarkus.cli.common.TargetQuarkusPlatformGroup;
import io.quarkus.cli.create.BaseCreateCommand;
import io.quarkus.cli.create.CodeGenerationGroup;
import io.quarkus.cli.create.TargetBuildToolGroup;
Expand Down Expand Up @@ -40,7 +40,7 @@ public class CreateApp extends BaseCreateCommand {
String description;

@CommandLine.ArgGroup(order = 4, heading = "%nQuarkus version:%n")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();
TargetQuarkusPlatformGroup targetQuarkusVersion = new TargetQuarkusPlatformGroup();

@CommandLine.ArgGroup(order = 5, heading = "%nBuild tool (Maven):%n")
TargetBuildToolGroup targetBuildTool = new TargetBuildToolGroup();
Expand Down
4 changes: 2 additions & 2 deletions devtools/cli/src/main/java/io/quarkus/cli/CreateCli.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import io.quarkus.cli.common.DataOptions;
import io.quarkus.cli.common.PropertiesOptions;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import io.quarkus.cli.common.TargetQuarkusPlatformGroup;
import io.quarkus.cli.create.BaseCreateCommand;
import io.quarkus.cli.create.CodeGenerationGroup;
import io.quarkus.cli.create.TargetBuildToolGroup;
Expand Down Expand Up @@ -40,7 +40,7 @@ public class CreateCli extends BaseCreateCommand {
String description;

@CommandLine.ArgGroup(order = 4, heading = "%nQuarkus version:%n")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();
TargetQuarkusPlatformGroup targetQuarkusVersion = new TargetQuarkusPlatformGroup();

@CommandLine.ArgGroup(order = 5, heading = "%nBuild tool (Maven):%n")
TargetBuildToolGroup targetBuildTool = new TargetBuildToolGroup();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

import io.quarkus.cli.common.OutputOptionMixin;
import io.quarkus.cli.common.PropertiesOptions;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import io.quarkus.cli.common.TargetQuarkusPlatformGroup;
import io.quarkus.cli.create.BaseCreateCommand;
import io.quarkus.cli.create.ExtensionCodeGenerationGroup;
import io.quarkus.cli.create.ExtensionGAVMixin;
Expand Down Expand Up @@ -75,7 +75,7 @@ public class CreateExtension extends BaseCreateCommand {
ExtensionGAVMixin gav = new ExtensionGAVMixin();

@CommandLine.ArgGroup(order = 1, heading = "%nQuarkus version:%n")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();
TargetQuarkusPlatformGroup targetQuarkusVersion = new TargetQuarkusPlatformGroup();

@CommandLine.ArgGroup(order = 2, exclusive = false, heading = "%nGenerated artifacts%n")
ExtensionNameGenerationGroup nameGeneration = new ExtensionNameGenerationGroup();
Expand Down
4 changes: 2 additions & 2 deletions devtools/cli/src/main/java/io/quarkus/cli/Info.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import io.quarkus.cli.build.BuildSystemRunner;
import picocli.CommandLine;

@CommandLine.Command(name = "info", sortOptions = false, showDefaultValues = true, mixinStandardHelpOptions = false, header = "Quarkus project information.", headerHeading = "%n", commandListHeading = "%nCommands:%n", synopsisHeading = "%nUsage: ", parameterListHeading = "%n", optionListHeading = "%nOptions:%n")
@CommandLine.Command(name = "info", sortOptions = false, showDefaultValues = true, mixinStandardHelpOptions = false, header = "Display project information and verify versions health (platform and extensions).", headerHeading = "%n", commandListHeading = "%nCommands:%n", synopsisHeading = "%nUsage: ", parameterListHeading = "%n", optionListHeading = "%nOptions:%n")
public class Info extends BaseBuildCommand implements Callable<Integer> {

@CommandLine.Option(names = { "--per-module" }, description = "Display information per project module.")
Expand All @@ -16,7 +16,7 @@ public class Info extends BaseBuildCommand implements Callable<Integer> {
public Integer call() throws Exception {
try {
final BuildSystemRunner runner = getRunner();
return runner.info(perModule);
return runner.projectInfo(perModule);
} catch (Exception e) {
return output.handleCommandException(e, "Unable to collect Quarkus project information: " + e.getMessage());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import io.quarkus.cli.build.BuildSystemRunner;
import io.quarkus.cli.common.CategoryListFormatOptions;
import io.quarkus.cli.common.RunModeOption;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import io.quarkus.cli.common.TargetQuarkusPlatformGroup;
import io.quarkus.devtools.commands.ListCategories;
import io.quarkus.devtools.commands.data.QuarkusCommandException;
import io.quarkus.devtools.commands.data.QuarkusCommandOutcome;
Expand All @@ -28,7 +28,7 @@ public class ProjectExtensionsCategories extends BaseBuildCommand implements Cal
CategoryListFormatOptions format = new CategoryListFormatOptions();

@CommandLine.ArgGroup(order = 2, heading = "%nQuarkus version:%n")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();
TargetQuarkusPlatformGroup targetQuarkusVersion = new TargetQuarkusPlatformGroup();

@Override
public Integer call() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import io.quarkus.cli.build.BuildSystemRunner;
import io.quarkus.cli.common.ListFormatOptions;
import io.quarkus.cli.common.RunModeOption;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import io.quarkus.cli.common.TargetQuarkusPlatformGroup;
import io.quarkus.devtools.commands.ListExtensions;
import io.quarkus.devtools.commands.data.QuarkusCommandException;
import io.quarkus.devtools.commands.data.QuarkusCommandOutcome;
Expand All @@ -32,7 +32,7 @@ public class ProjectExtensionsList extends BaseBuildCommand implements Callable<
RunModeOption runMode;

@CommandLine.ArgGroup(order = 2, heading = "%nQuarkus version (absolute):%n")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();
TargetQuarkusPlatformGroup targetQuarkusVersion = new TargetQuarkusPlatformGroup();

@CommandLine.Option(names = { "-i",
"--installable" }, defaultValue = "false", order = 2, description = "List extensions that can be installed (relative)")
Expand Down
4 changes: 2 additions & 2 deletions devtools/cli/src/main/java/io/quarkus/cli/QuarkusCli.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
@CommandLine.Command(name = "quarkus", subcommands = {
Create.class, Build.class, Dev.class, Test.class, ProjectExtensions.class, Image.class, Registry.class, Info.class,
Update.class,
Version.class,
Completion.class }, scope = ScopeType.INHERIT, sortOptions = false, showDefaultValues = true, versionProvider = Version.class, subcommandsRepeatable = false, mixinStandardHelpOptions = false, commandListHeading = "%nCommands:%n", synopsisHeading = "%nUsage: ", optionListHeading = "Options:%n", headerHeading = "%n", parameterListHeading = "%n")
public class QuarkusCli implements QuarkusApplication, Callable<Integer> {
static {
Expand All @@ -38,7 +37,8 @@ public class QuarkusCli implements QuarkusApplication, Callable<Integer> {
@CommandLine.Mixin
protected HelpOption helpOption;

@CommandLine.Option(names = { "-v", "--version" }, versionHelp = true, description = "Print version information and exit.")
@CommandLine.Option(names = { "-v",
"--version" }, versionHelp = true, description = "Print Cli version information and exit.")
public boolean showVersion;

@CommandLine.Mixin(name = "output")
Expand Down
16 changes: 6 additions & 10 deletions devtools/cli/src/main/java/io/quarkus/cli/Update.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,23 @@

import io.quarkus.cli.build.BaseBuildCommand;
import io.quarkus.cli.build.BuildSystemRunner;
import io.quarkus.cli.common.TargetQuarkusVersionGroup;
import picocli.CommandLine;

@CommandLine.Command(name = "update", sortOptions = false, showDefaultValues = true, mixinStandardHelpOptions = false, header = "Display recommended Quarkus updates.", headerHeading = "%n", commandListHeading = "%nCommands:%n", synopsisHeading = "%nUsage: ", parameterListHeading = "%n", optionListHeading = "%nOptions:%n")
@CommandLine.Command(name = "update", sortOptions = false, showDefaultValues = true, mixinStandardHelpOptions = false, header = "Suggest recommended project updates with the possibility to apply them.", headerHeading = "%n", commandListHeading = "%nCommands:%n", synopsisHeading = "%nUsage: ", parameterListHeading = "%n", optionListHeading = "%nOptions:%n")
public class Update extends BaseBuildCommand implements Callable<Integer> {

@CommandLine.Option(names = {
"--rectify" }, description = "Display platform and/or extension version alignment recommendations.")
public boolean rectify = false;
@CommandLine.ArgGroup(order = 0, heading = "%nTarget Quarkus version:%n", multiplicity = "0..1")
TargetQuarkusVersionGroup targetQuarkusVersion = new TargetQuarkusVersionGroup();

@CommandLine.Option(names = {
"--recommended-state" }, description = "Display the state of the project as if the recommended updates were applied.")
public boolean recommendedState = false;

@CommandLine.Option(names = { "--per-module" }, description = "Display information per project module.")
@CommandLine.Option(order = 1, names = { "--per-module" }, description = "Display information per project module.")
public boolean perModule = false;

@Override
public Integer call() throws Exception {
try {
final BuildSystemRunner runner = getRunner();
return runner.update(rectify, recommendedState, perModule);
return runner.updateProject(targetQuarkusVersion.platformVersion, targetQuarkusVersion.streamId, perModule);
} catch (Exception e) {
return output.handleCommandException(e, "Unable to collect Quarkus project information: " + e.getMessage());
}
Expand Down
6 changes: 1 addition & 5 deletions devtools/cli/src/main/java/io/quarkus/cli/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import picocli.CommandLine;
import picocli.CommandLine.Model.CommandSpec;

@CommandLine.Command(name = "version", header = "Display version information.")
@CommandLine.Command(name = "version", header = "Display Cli version information.", hidden = true)
public class Version implements CommandLine.IVersionProvider, Callable<Integer> {

private static String version;
Expand All @@ -31,10 +31,6 @@ public class Version implements CommandLine.IVersionProvider, Callable<Integer>
@CommandLine.Spec
CommandSpec spec;

@CommandLine.Option(order = 3, names = {
"--dependencies" }, description = "Show project dependency versions")
boolean dependencies = false;

@Override
public Integer call() throws Exception {
// Gather/interpolate the usual version information via IVersionProvider handling
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,9 @@ Integer listExtensions(RunModeOption runMode, ListFormatOptions format, boolean

Integer removeExtension(RunModeOption runMode, Set<String> extensions) throws Exception;

Integer info(boolean perModule) throws Exception;
Integer projectInfo(boolean perModule) throws Exception;

Integer update(boolean rectify, boolean recommendedState, boolean perModule) throws Exception;
Integer updateProject(String targetPlatformVersion, String targetPlatformStreamId, boolean perModule) throws Exception;

BuildCommandArgs prepareAction(String action, BuildOptions buildOptions, RunModeOption runMode, List<String> params);

Expand Down
16 changes: 10 additions & 6 deletions devtools/cli/src/main/java/io/quarkus/cli/build/GradleRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import io.quarkus.cli.registry.RegistryClientMixin;
import io.quarkus.devtools.project.BuildTool;
import io.quarkus.registry.config.RegistriesConfigLocator;
import io.quarkus.runtime.util.StringUtil;

public class GradleRunner implements BuildSystemRunner {
public static final String[] windowsWrapper = { "gradlew.cmd", "gradlew.bat" };
Expand Down Expand Up @@ -125,7 +126,7 @@ public Integer removeExtension(RunModeOption runMode, Set<String> extensions) {
}

@Override
public Integer info(boolean perModule) {
public Integer projectInfo(boolean perModule) {
ArrayDeque<String> args = new ArrayDeque<>();
args.add("quarkusInfo");
if (perModule) {
Expand All @@ -135,14 +136,17 @@ public Integer info(boolean perModule) {
}

@Override
public Integer update(boolean rectify, boolean recommendedState, boolean perModule) throws Exception {
public Integer updateProject(String targetPlatformVersion, String targetPlatformStreamId, boolean perModule)
throws Exception {
ArrayDeque<String> args = new ArrayDeque<>();
args.add("quarkusUpdate");
if (rectify) {
args.add("--rectify");
if (!StringUtil.isNullOrEmpty(targetPlatformVersion)) {
args.add("--platform-version");
args.add(targetPlatformVersion);
}
if (recommendedState) {
args.add("--recommended-state");
if (!StringUtil.isNullOrEmpty(targetPlatformStreamId)) {
args.add("--stream-id");
args.add(targetPlatformStreamId);
}
if (perModule) {
args.add("--per-module");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,13 @@ public Integer removeExtension(RunModeOption runMode, Set<String> extensions) {
}

@Override
public Integer info(boolean perModule) {
public Integer projectInfo(boolean perModule) {
throw new UnsupportedOperationException("Not there yet. ;)");
}

@Override
public Integer update(boolean rectify, boolean recommendedState, boolean perModule) {
public Integer updateProject(String targetPlatformVersion, String targetPlatformStreamId, boolean perModule)
throws Exception {
throw new UnsupportedOperationException("Not there yet. ;)");
}

Expand Down
13 changes: 7 additions & 6 deletions devtools/cli/src/main/java/io/quarkus/cli/build/MavenRunner.java
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ public Integer removeExtension(RunModeOption runMode, Set<String> extensions) th
}

@Override
public Integer info(boolean perModule) throws Exception {
public Integer projectInfo(boolean perModule) throws Exception {
ArrayDeque<String> args = new ArrayDeque<>();
setMavenProperties(args, true);
args.add("quarkus:info");
Expand All @@ -142,15 +142,16 @@ public Integer info(boolean perModule) throws Exception {
}

@Override
public Integer update(boolean rectify, boolean recommendedState, boolean perModule) {
public Integer updateProject(String targetPlatformVersion, String targetPlatformStreamId, boolean perModule)
throws Exception {
ArrayDeque<String> args = new ArrayDeque<>();
setMavenProperties(args, true);
args.add("quarkus:update");
if (rectify) {
args.add("-Drectify");
if (targetPlatformVersion != null) {
args.add("-DplatformVersion=" + targetPlatformVersion);
}
if (recommendedState) {
args.add("-DrecommendedState");
if (targetPlatformStreamId != null) {
args.add("-DstreamId=" + targetPlatformStreamId);
}
if (perModule) {
args.add("-DperModule");
Expand Down
Loading