amxmodx/installer/AMXXRelease/Main.cs
Scott Ehlert cb01ff1dc3 Fixed two minor annoyances
1) Paths in config file are now checked before building is attempted (prevents some potential crashes)
2) The compression routines can now handle spaces in the 'output' path
2006-08-28 03:27:16 +00:00

97 lines
2.3 KiB
C#
Executable File

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;
public static bool IsWindows;
[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))
{
Console.WriteLine("Failed to read config, aborting!");
return;
}
if (!ValidateConfigPaths())
return;
ABuilder builder = null;
if ((int)System.Environment.OSVersion.Platform == 128)
{
builder = new LinuxBuilder();
Releaser.IsWindows = false;
} else {
builder = new Win32Builder();
Releaser.IsWindows = true;
}
Build build = new Build();
builder.Build(m_Cfg, build);
}
private bool ValidateConfigPaths()
{
if ( !File.Exists( ABuilder.PropSlashes(m_Cfg.CompressPath()) ) )
{
Console.WriteLine("Failed to find compression program! Check 'compress' option in config.");
return false;
}
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;
}
}
}