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

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