package org.jboss.windup.bootstrap.commands.windup;

import org.jboss.forge.furnace.Furnace;
import org.jboss.windup.bootstrap.commands.Command;
import org.jboss.windup.bootstrap.commands.CommandPhase;
import org.jboss.windup.bootstrap.commands.CommandResult;
import org.jboss.windup.bootstrap.commands.FurnaceDependent;
import org.jboss.windup.exec.updater.RulesetsUpdater;

/**
 * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
 */
public class UpdateRulesetsCommand implements Command, FurnaceDependent {
    private Furnace furnace;

    @Override
    public void setFurnace(Furnace furnace) {
        this.furnace = furnace;
    }

    @Override
    public CommandResult execute() {
        System.out.println("Checking for rulesets updates...");
        try {
            RulesetsUpdater updater = furnace.getAddonRegistry().getServices(RulesetsUpdater.class).get();
            String newVersion = updater.replaceRulesetsDirectoryWithLatestReleaseIfAny();
            if (newVersion != null)
                System.out.println("Updated the rulesets to version " + newVersion + ".");
        } catch (Exception e) {
            System.err.println("Could not update the rulesets: " + e.getMessage());
            e.printStackTrace(System.err);
            return CommandResult.EXIT;
        }
        return CommandResult.CONTINUE;
    }

    @Override
    public CommandPhase getPhase() {
        return CommandPhase.PRE_EXECUTION;
    }
}
