using System;
using System.Collections.Generic;
using System.IO;
using JD.Kernel.Classes;
using JD.LogService;
using JD.TeaBoxAddinSystem.Bootstrap;
namespace JD.TeaBoxAddinSystem.Addins.Management
{
///
/// Generates an addin xml schema
///
internal class GenerateAddinXmlSchemaCommand : AbstractCommandLineHandler
{
#region Constants
private const string GenerateAddinXmlSchemaSwitchName = "generate_addin_xml_schema";
#endregion
#region Methods
public override IEnumerable ArgumentNames
{
get
{
yield return GenerateAddinXmlSchemaSwitchName;
}
}
public override string ShortHelpDescription
{
get { return "Generates an addin xml schema."; }
}
protected override void ExecuteImpl()
{
if (Runtime.Arguments.Parameters.Count == 0)
{
Console.Out.WriteLine("Must specify a schema file.");
return;
}
string filename = Runtime.Arguments.Parameters[0];
filename = Path.GetFullPath(filename);
LoggingContext loggingContext = new LoggingContext();
loggingContext.ErrorAdded += delegate(object sender, ItemEventArgs e)
{
Console.Out.WriteLine(e.Item.ToCanonicalString());
};
loggingContext.WarningAdded += delegate(object sender, ItemEventArgs e)
{
Console.Out.WriteLine(e.Item.ToCanonicalString());
};
loggingContext.MessageAdded += delegate(object sender, ItemEventArgs e)
{
Console.Out.WriteLine(e.Item.Message);
};
foreach (LogEvent @event in ApplicationStartup.Instance.BootstrapLoggingContext.FullLog)
{
loggingContext.Log(@event);
}
try
{
AddinXmlSchemaGenerator generator = new AddinXmlSchemaGenerator(Runtime.AddinRepository, loggingContext);
generator.GenerateAndSaveTo(filename);
}
catch (Exception e)
{
Console.Out.WriteLine("Unexpected error while generating schema: {0}", e.Message);
return;
}
Console.Out.WriteLine("Generated addin schema in {0}.", filename);
}
#endregion
}
}