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"); } }