package tw.com.commandline.actions;
import com.amazonaws.services.cloudformation.model.Parameter;
import org.apache.commons.cli.MissingArgumentException;
import tw.com.FacadeFactory;
import tw.com.commandline.CommandLineException;
import tw.com.entity.ProjectAndEnv;
import tw.com.exceptions.CfnAssistException;
import tw.com.pictures.DiagramCreator;
import tw.com.pictures.dot.FileRecorder;
import tw.com.pictures.dot.Recorder;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
public class CreateDiagramAction extends SharedAction {
@SuppressWarnings("static-access")
public CreateDiagramAction() {
createOptionWithArg("diagrams", "Create diagrams for VPCs in given folder");
}
@Override
public void invoke(FacadeFactory factory, ProjectAndEnv projectAndEnv,
Collection<Parameter> cfnParams, Collection<Parameter> artifacts,
String... argument) throws
IOException,
InterruptedException, CfnAssistException, MissingArgumentException {
DiagramCreator diagramCreator = factory.createDiagramCreator();
Path folder = Paths.get(argument[0]);
Recorder recorder = new FileRecorder(folder);
diagramCreator.createDiagrams(recorder);
}
@Override
public void validate(ProjectAndEnv projectAndEnv,
Collection<Parameter> cfnParams, Collection<Parameter> artifacts,
String... argumentForAction) throws CommandLineException {
guardForNoArtifacts(artifacts);
guardForNoBuildNumber(projectAndEnv);
guardForSNSNotSet(projectAndEnv);
}
@Override
public boolean usesProject() {
return false;
}
@Override
public boolean usesComment() {
return false;
}
@Override
public boolean usesSNS() {
return false;
}
}