package jetbrains.mps.vcs.platform.mergedriver;
/*Generated by MPS */
import org.jetbrains.annotations.NotNull;
import com.intellij.openapi.project.Project;
import java.io.File;
import com.intellij.openapi.application.ApplicationInfo;
import jetbrains.mps.vcs.core.mergedriver.MergeDriverMain;
import com.intellij.openapi.util.SystemInfo;
import java.util.List;
import jetbrains.mps.util.StringsIO;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import jetbrains.mps.internal.collections.runtime.Sequence;
import java.io.IOException;
import com.intellij.openapi.ui.Messages;
/*package*/ class ScriptGenerator {
public static final int GIT = 1;
public static final int SVN = 2;
private ScriptGenerator() {
}
@NotNull
public static AbstractInstaller.State generateScript(Project project, String filetype, int vcs, File scriptFile, boolean dryRun) {
final String buildstring = "build=" + ApplicationInfo.getInstance().getBuild().asString();
String[] lines;
if (GIT == vcs) {
lines = new String[]{"#/bin/sh", "# " + buildstring, String.format("%s " + filetype + " " + MergeDriverMain.GIT_OPTION + " $1 $2 $3 $4", CommandLineGenerator.getCommandLine(GIT))};
} else if (SVN == vcs) {
if (SystemInfo.isWindows) {
lines = new String[]{"@ECHO OFF", "REM " + buildstring, "SHIFT", "SHIFT", String.format("%s " + filetype + " " + MergeDriverMain.SVN_OPTION + " %%8 %%7 %%9 %%4 %%2 %%6", CommandLineGenerator.getCommandLine(SVN))};
} else {
lines = new String[]{"#/bin/sh", "# " + buildstring, String.format("%s " + filetype + " " + MergeDriverMain.SVN_OPTION + " ${10} $9 ${11} $6 $4 $8", CommandLineGenerator.getCommandLine(SVN))};
}
} else {
throw new IllegalArgumentException();
}
try {
if (dryRun) {
if (scriptFile.exists()) {
List<String> linesInFile = StringsIO.readLines(scriptFile);
if (ListSequence.fromList(linesInFile).count() == lines.length) {
for (int i = 0; i < lines.length; i++) {
if (neq_7mp2j8_a0a0a0b0a0a0d0d(ListSequence.fromList(linesInFile).getElement(i), lines[i])) {
return AbstractInstaller.State.OUTDATED;
}
}
return AbstractInstaller.State.INSTALLED;
} else {
return AbstractInstaller.State.OUTDATED;
}
} else {
return AbstractInstaller.State.NOT_INSTALLED;
}
}
StringsIO.writeLines(scriptFile, Sequence.fromArray(lines));
if (SystemInfo.isUnix && !(scriptFile.setExecutable(true))) {
throw new IOException("Can't make script executable");
}
return AbstractInstaller.State.INSTALLED;
} catch (IOException e) {
Messages.showErrorDialog(project, "Can't create merger script: " + e.getMessage(), "Can't Create Merger Script");
return AbstractInstaller.State.NOT_INSTALLED;
}
}
private static boolean neq_7mp2j8_a0a0a0b0a0a0d0d(Object a, Object b) {
return !(((a != null ? a.equals(b) : a == b)));
}
}