package tw.com.commandline.actions; import com.amazonaws.services.cloudformation.model.Parameter; import org.apache.commons.cli.MissingArgumentException; import tw.com.AwsFacade; import tw.com.FacadeFactory; import tw.com.commandline.CommandLineException; import tw.com.entity.ProjectAndEnv; import tw.com.exceptions.CfnAssistException; import java.io.File; import java.io.IOException; import java.util.Collection; public class TidyOldStacksAction extends SharedAction { @SuppressWarnings("static-access") public TidyOldStacksAction() { createOptionWithArgs("tidyOldStacks","Delete stacks matching given template no longer associated to the LB via an instance."+ "Pass template filename and type tag",2); } @Override public void invoke(FacadeFactory factory, ProjectAndEnv projectAndEnv, Collection<Parameter> cfnParams, Collection<Parameter> artifacts, String... args) throws IOException, InterruptedException, CfnAssistException, MissingArgumentException { AwsFacade facade = factory.createFacade(); File file = new File(args[0]); facade.tidyNonLBAssocStacks(file, projectAndEnv, args[1]); } @Override public void validate(ProjectAndEnv projectAndEnv, Collection<Parameter> cfnParams, Collection<Parameter> artifacts, String... args) throws CommandLineException { if (args.length!=2) { throw new CommandLineException("Missing arguments for command"); } if ((args[0]==null) || (args[1]==null)) { throw new CommandLineException("Missing arguments for command"); } super.guardForNoBuildNumber(projectAndEnv); } @Override public boolean usesProject() { return true; } @Override public boolean usesComment() { return false; } @Override public boolean usesSNS() { return true; } }