static void RunOptions(Options o) { ValidateOptions(o); if (HaveError) { return; } var fileReaderStrategy = new FileReaderStrategy(); var alphaFileReader = new AlphaFileReader(fileReaderStrategy); var alphaFileWriter = new AlphaFileWriter(); if (o.GoodFiles.Any()) { Console.WriteLine(); Console.WriteLine("Reading good trace files"); var data = alphaFileReader.ParseFolders(o.GoodFiles); var result = TraceProcessor.ProcessAlphaTrace(data, o.PercentageToKeep, o.Rise); alphaFileWriter.WriteGoodFile(result); } if (o.BadFiles.Any()) { Console.WriteLine(); Console.WriteLine("Reading bad trace files"); var data = alphaFileReader.ParseFolders(o.BadFiles); var bad = TraceProcessor.ProcessAlphaTrace(data, o.PercentageToKeep, o.Rise); Console.WriteLine(); Console.WriteLine("Read in good trace file to calculate delta"); var good = alphaFileReader.ReadGoodFile(); if (good != null) { var adjustedBad = TraceProcessor.AdjustBadSteadyStateToGoodStateState(good[0], bad); alphaFileWriter.WriteBadFile(adjustedBad); var delta = TraceProcessor.CalculateDelta(good.ToList(), adjustedBad); if (delta != null) { alphaFileWriter.WriteDeltaFile(delta); } } } if (o.TraceFiles.Any() && !string.IsNullOrEmpty(o.OutputFolder)) { Console.WriteLine(); Console.WriteLine("Reading trace files"); var delta = alphaFileReader.ReadDeltaFile(); var processTraceFile = new ProcessTraceFile(fileReaderStrategy, delta); processTraceFile.Process(o.OutputFolder, o.TraceFiles); } }
private static void CreateCoreTTInclude(string generatorRoot, string ttRoot) { string header1 = @"<# // Copyright (C) Simon Hughes 2012 " + "// v" + _version + @" // If you want to submit a pull request, please modify the Generator C# project as this file // is automatically constructed from the C# Generator project during the build process. #> <#@ template debug=""true"" hostspecific=""true"" language=""C#"" #> <#@ include file=""EF6.Utility.CS.ttinclude""#><#@ assembly name=""System.Configuration"" #> <#@ assembly name=""System.Windows.Forms"" #> <#@ import namespace=""System.Data.Entity.Infrastructure.Pluralization"" #>"; const string header2 = @"<#@ import namespace=""EnvDTE"" #> <#@ import namespace=""Microsoft.VisualStudio.TextTemplating"" #> <#@ output extension="".cs"" encoding=""utf-8"" #> <# var DefaultNamespace = new CodeGenerationTools(this).VsNamespaceSuggestion() ?? ""DebugMode""; Settings.Root = Host.ResolvePath(string.Empty); Settings.TemplateFile = Path.GetFileNameWithoutExtension(DynamicTextTransformation.Create(this).Host.TemplateFile); #><#+"; const string footer = @" public static void ArgumentNotNull<T>(T arg, string name) where T : class { if (arg == null) { throw new ArgumentNullException(name); } } #>"; var fileReaderStrategy = new FileReaderStrategy(); string[] ignoreFolders = { "\\bin", "\\obj" }; string[] ignoreFiles = { "AssemblyInfo.cs", "EntityFrameworkTemplateFileManager.cs", "GeneratedTextTransformation.cs", "GlobalSuppressions.cs", // Resharper }; var filesToListFirst = new List <KeyValuePair <int, string> > { new KeyValuePair <int, string>(1, "Settings.cs"), new KeyValuePair <int, string>(2, "FilterSettings.cs"), new KeyValuePair <int, string>(3, "SingleContextFilter.cs") }; var files = Directory .GetFiles(generatorRoot, "*.cs", SearchOption.AllDirectories) .OrderBy(x => x) .ToList(); var filesToListFirstReaders = new List <KeyValuePair <int, IFileReader> >(); var remainingFileReaders = new List <IFileReader>(); foreach (var file in files) { var skip = false; var listFirst = false; var path = Path.GetDirectoryName(file); var filename = Path.GetFileName(file); foreach (var ignore in ignoreFolders) { if (path.Contains(ignore)) { skip = true; } } if (skip) { continue; } foreach (var ignore in ignoreFiles) { if (filename == ignore) { skip = true; } } if (skip) { continue; } var order = 0; foreach (var fileToListFirst in filesToListFirst) { if (filename == fileToListFirst.Value) { listFirst = true; order = fileToListFirst.Key; } } var fileReader = new FileReader(fileReaderStrategy); if (fileReader.ReadFile(file)) { if (listFirst) { filesToListFirstReaders.Add(new KeyValuePair <int, IFileReader>(order, fileReader)); } else { remainingFileReaders.Add(fileReader); } } } var fileReaders = new List <IFileReader>(); fileReaders.AddRange(filesToListFirstReaders.OrderBy(x => x.Key).Select(x => x.Value)); fileReaders.AddRange(remainingFileReaders); using (var tt = File.CreateText(Path.Combine(ttRoot, "EF.Reverse.POCO.v3.ttinclude"))) { var writerStrategy = new TTWriterStrategy(); var writer = new FileWriter(tt, writerStrategy, fileReaders); tt.WriteLine(header1); writer.WriteUsings(); tt.WriteLine(header2); writer.WriteCode(); tt.WriteLine(footer); } }