package org.jboss.windup.ui; import javax.inject.Inject; import org.jboss.forge.addon.dependencies.Coordinate; import org.jboss.forge.addon.dependencies.DependencyResolver; import org.jboss.forge.addon.ui.command.UICommand; import org.jboss.forge.addon.ui.context.UIBuilder; import org.jboss.forge.addon.ui.context.UIContext; import org.jboss.forge.addon.ui.context.UIExecutionContext; import org.jboss.forge.addon.ui.context.UIValidationContext; import org.jboss.forge.addon.ui.metadata.UICommandMetadata; import org.jboss.forge.addon.ui.result.Result; import org.jboss.forge.addon.ui.result.Results; import org.jboss.forge.addon.ui.util.Categories; import org.jboss.forge.addon.ui.util.Metadata; import org.jboss.forge.furnace.addons.Addon; import org.jboss.forge.furnace.versions.SingleVersion; import org.jboss.forge.furnace.versions.Version; import org.jboss.windup.exec.updater.RulesetsUpdater; /** * Provides a basic UI command updating the whole windup distribution. * * @author mbriskar * @author ozizka */ public class WindupUpdateDistributionCommand implements UICommand { @Inject Addon currentAddon; @Inject private DependencyResolver dependencyResolver; @Inject private RulesetsUpdater updater; @Inject private DistributionUpdater distUpdater; @Override public UICommandMetadata getMetadata(UIContext ctx) { return Metadata.forCommand(getClass()).name("Windup Update Distribution") .description("Update the whole windup installation") .category(Categories.create("Platform", "Migration")); } @Override public Result execute(UIExecutionContext context) throws Exception { if (!context.getPrompt().promptBoolean( "Are you sure you want to continue? This command will delete current directories: addons, bin, lib, rules/migration-core")) { return Results.fail("Updating distribution was aborted."); } // Find the latest version. Coordinate latestDist = this.updater.getLatestReleaseOf("org.jboss.windup", "windup-distribution"); Version latestVersion = SingleVersion.valueOf(latestDist.getVersion()); Version installedVersion = currentAddon.getId().getVersion(); if (latestVersion.compareTo(installedVersion) <= 0) { return Results.fail("Windup is already in the most updated version."); } distUpdater.replaceWindupDirectoryWithDistribution(latestDist); return Results.success("Sucessfully updated Windup to version " + latestDist.getVersion() + ". Please restart Windup."); } @Override public boolean isEnabled(UIContext context) { return true; } @Override public void initializeUI(UIBuilder builder) throws Exception { } @Override public void validate(UIValidationContext context) { } }