/// <summary>
///
/// </summary>
/// <param name="options"></param>
public static void Build(BuildOptions options)
{
Log.Message("");
Log.Message("-------- Build started : {0} --------", options.InputDirectory);
options.CheckOptionsAndMakeDirs();
Log.Message("Reading '.content'...");
//
// Parse INI file :
//
var ip = new StreamIniDataParser();
ip.Parser.Configuration.AllowDuplicateSections = true;
ip.Parser.Configuration.AllowDuplicateKeys = true;
ip.Parser.Configuration.CommentString = "#";
ip.Parser.Configuration.OverrideDuplicateKeys = true;
ip.Parser.Configuration.KeyValueAssigmentChar = '=';
ip.Parser.Configuration.AllowKeysWithoutValues = true;
var iniData = ip.ReadData(new StreamReader(options.ContentIniFile));
//
// Setup builder :
//
var bindings = AssetProcessorBinding.GatherAssetProcessors();
Log.Message("Asset processors:");
foreach (var bind in bindings)
{
Log.Message(" {0,-20} - {1}", bind.Name, bind.Type.Name);
}
Log.Message("");
var builder = new Builder(bindings);
var result = builder.Build(options, iniData);
Log.Message("-------- {5} total, {0} succeeded, {1} failed, {2} up-to-date, {3} ignored, {4} skipped --------",
result.Succeded,
result.Failed,
result.UpToDate,
result.Ignored,
result.Skipped,
result.Total);
Log.Message("");
if (result.Failed > 0)
{
throw new BuildException("Build errors");
}
}