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