package jetbrains.mps.vcs.platform.mergedriver;
/*Generated by MPS */
import org.apache.log4j.Logger;
import org.apache.log4j.LogManager;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import jetbrains.mps.vcs.platform.util.PluginUtil;
import git4idea.config.GitConfigUtil;
import com.intellij.openapi.vcs.VcsException;
import org.apache.log4j.Level;
import com.intellij.openapi.ui.Messages;
import git4idea.commands.GitSimpleHandler;
import git4idea.commands.GitCommand;
import com.intellij.openapi.util.SystemInfo;
/*package*/ class GitGlobalConfigFixesInstaller extends AbstractInstaller {
private static final Logger LOG = LogManager.getLogger(GitGlobalConfigFixesInstaller.class);
private static final String CORE_AUTOCRLF = "core.autocrlf";
public GitGlobalConfigFixesInstaller(Project project) {
super(project);
}
@NotNull
@Override
protected AbstractInstaller.State install(boolean dryRun) {
if (!(PluginUtil.isGitPluginEnabled())) {
return AbstractInstaller.State.NOT_ENABLED;
}
try {
String currentValue = GitConfigUtil.getValue(myProject, myProject.getBaseDir(), GitGlobalConfigFixesInstaller.CORE_AUTOCRLF);
if (getCoreAutocrlfValue().equals(currentValue)) {
return AbstractInstaller.State.INSTALLED;
}
} catch (VcsException e) {
if (!(dryRun)) {
if (LOG.isEnabledFor(Level.WARN)) {
LOG.warn("Can't get value", e);
}
}
return AbstractInstaller.State.NOT_INSTALLED;
}
if (dryRun) {
return AbstractInstaller.State.NOT_INSTALLED;
}
try {
setGlobalProperty(myProject, CORE_AUTOCRLF, getCoreAutocrlfValue());
return AbstractInstaller.State.INSTALLED;
} catch (VcsException e) {
if (LOG.isEnabledFor(Level.WARN)) {
LOG.warn("Can't set value", e);
}
Messages.showErrorDialog(myProject, "Can't set Git global property: " + e.getMessage(), "Git Global property");
return AbstractInstaller.State.NOT_INSTALLED;
}
}
@Override
public String getActionTitle() {
return "Git global autocrlf setting (~/.gitconfig)";
}
@Override
public String getActionTooltip() {
return "Set core.autocrlf to input";
}
@Override
public String getAffectedVcsName() {
return "Git";
}
private static void setGlobalProperty(Project project, String key, String value) throws VcsException {
GitSimpleHandler h = new GitSimpleHandler(project, project.getBaseDir(), GitCommand.CONFIG);
h.setSilent(true);
h.ignoreErrorCode(1);
h.addParameters("--global", key, value);
h.run();
}
private static String getCoreAutocrlfValue() {
return (SystemInfo.isWindows ? "true" : "input");
}
}