2005-08-24 06:53:38 +04:00
|
|
|
using System;
|
|
|
|
using System.Diagnostics;
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
namespace AMXXRelease
|
|
|
|
{
|
|
|
|
//Entry point for application.
|
|
|
|
//1. Reads config file
|
|
|
|
//2. Instantiates correct build process (ABuilder)
|
|
|
|
//3. Instantiates the build (Build)
|
|
|
|
//4. Passes configuration and build to the Builder
|
|
|
|
public class Releaser
|
|
|
|
{
|
|
|
|
private Config m_Cfg;
|
2005-08-24 09:19:23 +04:00
|
|
|
public static bool IsWindows;
|
2005-08-24 06:53:38 +04:00
|
|
|
|
|
|
|
[STAThread]
|
|
|
|
static void Main(string[] args)
|
|
|
|
{
|
|
|
|
string file;
|
|
|
|
if (args.GetLength(0) < 1)
|
|
|
|
file = "release.info";
|
|
|
|
else
|
|
|
|
file = args[0];
|
|
|
|
|
|
|
|
Releaser r = new Releaser();
|
|
|
|
|
|
|
|
r.Release(file);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void Release(string file)
|
|
|
|
{
|
|
|
|
m_Cfg = new Config();
|
|
|
|
|
|
|
|
file = ABuilder.PropSlashes(file);
|
|
|
|
if (!m_Cfg.ReadFromFile(file))
|
|
|
|
{
|
2007-08-03 21:26:57 +04:00
|
|
|
Console.WriteLine("Failed to read config, aborting.");
|
|
|
|
Console.WriteLine("Build failed!");
|
2005-08-24 06:53:38 +04:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
2006-08-28 07:27:16 +04:00
|
|
|
if (!ValidateConfigPaths())
|
2007-08-03 21:26:57 +04:00
|
|
|
{
|
|
|
|
Console.WriteLine("Build failed!");
|
2006-08-28 07:27:16 +04:00
|
|
|
return;
|
2007-08-03 21:26:57 +04:00
|
|
|
}
|
2006-08-28 07:27:16 +04:00
|
|
|
|
2005-08-24 06:53:38 +04:00
|
|
|
ABuilder builder = null;
|
2008-08-17 02:45:59 +04:00
|
|
|
if (System.Environment.OSVersion.Platform == System.PlatformID.Unix)
|
2005-08-24 06:53:38 +04:00
|
|
|
{
|
|
|
|
builder = new LinuxBuilder();
|
2005-08-24 09:19:23 +04:00
|
|
|
Releaser.IsWindows = false;
|
2005-08-24 06:53:38 +04:00
|
|
|
} else {
|
|
|
|
builder = new Win32Builder();
|
2005-08-24 09:19:23 +04:00
|
|
|
Releaser.IsWindows = true;
|
2005-08-24 06:53:38 +04:00
|
|
|
}
|
|
|
|
|
2006-09-03 07:48:54 +04:00
|
|
|
Build build = new Build(m_Cfg);
|
2005-08-24 06:53:38 +04:00
|
|
|
|
2007-08-03 21:26:57 +04:00
|
|
|
if (!builder.Build(m_Cfg, build))
|
|
|
|
{
|
|
|
|
Console.WriteLine("Build failed!");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Console.WriteLine("Build succeeded!");
|
|
|
|
}
|
2005-08-24 06:53:38 +04:00
|
|
|
}
|
2006-08-28 07:27:16 +04:00
|
|
|
|
|
|
|
private bool ValidateConfigPaths()
|
|
|
|
{
|
|
|
|
string source = ABuilder.PropSlashes(m_Cfg.GetSourceTree());
|
|
|
|
|
|
|
|
if (!Directory.Exists(source))
|
|
|
|
{
|
|
|
|
Console.WriteLine("Failed to find source tree! Check 'source' option in config.");
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
// Check subdirectories of source tree to make sure they contain necessary directories
|
|
|
|
if (!Directory.Exists(ABuilder.PropSlashes(source + "\\amxmodx")) ||
|
|
|
|
!Directory.Exists(ABuilder.PropSlashes(source + "\\configs")) ||
|
|
|
|
!Directory.Exists(ABuilder.PropSlashes(source + "\\dlls")) ||
|
|
|
|
!Directory.Exists(ABuilder.PropSlashes(source + "\\plugins")))
|
|
|
|
{
|
|
|
|
Console.WriteLine("Source tree appears invalid! Check 'source' option in config.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( !File.Exists( ABuilder.PropSlashes(m_Cfg.DevenvPath()) ) )
|
|
|
|
{
|
|
|
|
Console.WriteLine("Failed to find compilation program! Check 'devenv' option in config.");
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
2005-08-24 06:53:38 +04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|