using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using Sep.Git.Tfs.Core; using Sep.Git.Tfs.Core.Changes.Git; using Sep.Git.Tfs.Core.TfsInterop; using Sep.Git.Tfs.Util; using StructureMap; using StructureMap.Graph; namespace Sep.Git.Tfs { public class Program { public static void Main(string [] args) { try { //Trace.Listeners.Add(new ConsoleTraceListener()); Initialize(); ObjectFactory.GetInstance().Run(new List(args)); } catch (Exception e) { Trace.WriteLine(e); Console.WriteLine(e); Environment.ExitCode = -1; } } private static void Initialize() { ObjectFactory.Initialize(Initialize); } private static void Initialize(IInitializationExpression initializer) { var tfsPlugin = TfsPlugin.Find(); initializer.Scan(x => { Initialize(x); tfsPlugin.Initialize(x); }); initializer.ForRequestedType().TheDefault.Is.ConstructedBy(() => Console.Out); initializer.InstanceOf().Is.OfConcreteType(); AddGitChangeTypes(initializer); DoCustomConfiguration(initializer); tfsPlugin.Initialize(initializer); } private static void AddGitChangeTypes(IInitializationExpression initializer) { initializer.InstanceOf().Is.OfConcreteType().WithName("A"); initializer.InstanceOf().Is.OfConcreteType().WithName("M"); initializer.InstanceOf().Is.OfConcreteType().WithName("D"); initializer.InstanceOf().Is.OfConcreteType().WithName("R"); } private static void Initialize(IAssemblyScanner scan) { scan.WithDefaultConventions(); scan.TheCallingAssembly(); } private static void DoCustomConfiguration(IInitializationExpression initializer) { foreach(var type in typeof(Program).Assembly.GetTypes()) { foreach(ConfiguresStructureMap attribute in type.GetCustomAttributes(typeof(ConfiguresStructureMap), false)) { attribute.Initialize(initializer, type); } } } } }