package tw.com.ant;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import org.apache.commons.cli.MissingArgumentException;
import org.apache.tools.ant.BuildException;
import com.amazonaws.services.cloudformation.model.Parameter;
import tw.com.FacadeFactory;
import tw.com.commandline.CommandLineAction;
import tw.com.commandline.CommandLineException;
import tw.com.commandline.actions.DirAction;
import tw.com.commandline.actions.FileAction;
import tw.com.entity.ProjectAndEnv;
import tw.com.exceptions.CfnAssistException;
import tw.com.exceptions.InvalidStackParameterException;
public class TemplatesElement implements ActionElement {
private File target;
public TemplatesElement() {
}
public void setTarget(File target) {
this.target = target;
}
@Override
public void execute(FacadeFactory factory, ProjectAndEnv projectAndEnv, Collection<Parameter> cfnParams, Collection<Parameter> artifacts)
throws IOException, InterruptedException, CfnAssistException,
CommandLineException, MissingArgumentException {
String absolutePath = target.getAbsolutePath();
CommandLineAction actionToInvoke = null;
if (target.isDirectory()) {
actionToInvoke = new DirAction();
} else if (target.isFile()) {
actionToInvoke = new FileAction();
}
if (actionToInvoke==null) {
throw new BuildException("Unable to action on path, expect file or folder, path was: " + absolutePath);
}
actionToInvoke.validate(projectAndEnv, cfnParams, artifacts, absolutePath);
actionToInvoke.invoke(factory, projectAndEnv, cfnParams, artifacts, absolutePath);
}
}