improve mercurial installer

This commit is contained in:
Sebastian Sdorra
2011-04-27 10:12:04 +02:00
parent 127f7fc09b
commit f572d66316
2 changed files with 55 additions and 13 deletions

View File

@@ -37,6 +37,7 @@ package sonia.scm.installer;
import sonia.scm.repository.HgConfig;
import sonia.scm.util.IOUtil;
import sonia.scm.util.Util;
//~--- JDK imports ------------------------------------------------------------
@@ -74,8 +75,16 @@ public class UnixHgInstaller extends AbstractHgInstaller
public void install(File baseDirectory, HgConfig config) throws IOException
{
super.install(baseDirectory, config);
config.setHgBinary(IOUtil.search(COMMAND_HG));
config.setPythonBinary(IOUtil.search(COMMAND_PYTHON));
if (Util.isEmpty(config.getHgBinary()))
{
config.setHgBinary(IOUtil.search(COMMAND_HG));
}
if (Util.isEmpty(config.getPythonBinary()))
{
config.setPythonBinary(IOUtil.search(COMMAND_PYTHON));
}
}
/**

View File

@@ -118,18 +118,26 @@ public class WindowsHgInstaller extends AbstractHgInstaller
{
super.install(baseDirectory, config);
String pythonBinary = getPythonBinary();
config.setPythonBinary(pythonBinary);
File hgScript = getMercurialScript(pythonBinary);
File hgDirectory = getMercurialDirectory();
if (hgScript != null)
if (Util.isEmpty(config.getPythonBinary()))
{
config.setHgBinary(hgScript.getAbsolutePath());
String pythonBinary = getPythonBinary();
config.setPythonBinary(pythonBinary);
}
else if (hgDirectory != null)
if (Util.isEmpty(config.getHgBinary()))
{
File hgScript = getMercurialScript(config.getPythonBinary());
if (hgScript != null)
{
config.setHgBinary(hgScript.getAbsolutePath());
}
}
File hgDirectory = getMercurialDirectory(config.getHgBinary());
if (hgDirectory != null)
{
installHg(baseDirectory, config, hgDirectory);
}
@@ -304,9 +312,34 @@ public class WindowsHgInstaller extends AbstractHgInstaller
* Method description
*
*
*
* @param hgBinary
* @return
*/
private File getMercurialDirectory()
private File getMercurialDirectory(String hgBinary)
{
File directory = null;
File hg = new File(hgBinary);
if (hg.exists() && hg.isFile())
{
directory = hg.getParentFile();
}
else
{
directory = getMercurialDirectoryFromRegistry();
}
return directory;
}
/**
* Method description
*
*
* @return
*/
private File getMercurialDirectoryFromRegistry()
{
File directory = null;