package org.jmeld.vc.git;
import org.jmeld.vc.BaseFile;
import org.jmeld.vc.StatusResult;
import org.jmeld.vc.VersionControlIF;
import java.io.File;
import java.util.Vector;
public class GitVersionControl implements VersionControlIF {
private Boolean installed;
private String reference;
public GitVersionControl() {
setReference("HEAD");
}
public String getReference() {
return reference;
}
public void setReference(String reference) {
this.reference = reference;
}
public String getName() {
return "git";
}
public boolean isInstalled() {
InstalledCmd cmd;
if (installed == null) {
cmd = new InstalledCmd();
cmd.execute();
installed = cmd.getResult().isTrue();
}
return installed;
}
public boolean isEnabled(File file) {
ActiveCmd cmd;
cmd = new ActiveCmd(file);
cmd.execute();
return cmd.getResult().isTrue();
}
public StatusResult executeStatus(File file) {
StatusCmd cmd = new StatusCmd(file, reference);
cmd.execute();
return cmd.getResultData();
}
public BaseFile getBaseFile(File file) {
CatCmd cmd;
cmd = new CatCmd(file, getReference());
cmd.execute();
return cmd.getResultData();
}
public static final String SEPARATOR = "SEPARATOR";
@Override
public Vector<String> getRevisions(File file) {
Vector<String> revisions = new Vector<>();
revisions.add("worktree");
revisions.add("HEAD");
revisions.add("index");
revisions.add(SEPARATOR);
BranchCmd branchCmd = new BranchCmd(file);
branchCmd.execute();
revisions.addAll(branchCmd.getResultData().getBranchs());
revisions.add(SEPARATOR);
TagCmd tagCmd = new TagCmd(file);
tagCmd.execute();
revisions.addAll(tagCmd.getResultData().getTags());
revisions.add(SEPARATOR);
LogCmd logCmd = new LogCmd(file);
logCmd.execute();
revisions.addAll(logCmd.getResultData().getRevisions());
return revisions;
}
@Override
public String toString() {
return getName();
}
}