internal static void ConvertToFormat(IConsole console, MSBuildLogFileFormat format, string fileToConvertFilePath, string outputFilePath, bool includeAllTasks) { if (string.IsNullOrWhiteSpace(outputFilePath)) { outputFilePath = fileToConvertFilePath; } outputFilePath = Path.ChangeExtension(outputFilePath, TraceFileFormatExtensions[format]); console.Out.WriteLine($"Writing:\t{outputFilePath}"); switch (format) { case MSBuildLogFileFormat.MSBuildBinaryLog: break; case MSBuildLogFileFormat.Chromium: case MSBuildLogFileFormat.Speedscope: Convert(format, fileToConvertFilePath, outputFilePath, includeAllTasks); break; default: // Validation happened way before this, so we shoud never reach this... throw new ArgumentException($"Invalid TraceFileFormat \"{format}\""); } console.Out.WriteLine("Conversion complete"); }
private static void Convert(MSBuildLogFileFormat format, string fileToConvertFilePath, string outputFilePath, bool includeAllTasks) { switch (format) { case MSBuildLogFileFormat.Chromium: var buildEnumerator = new BinlogEnumerable(fileToConvertFilePath); ChromiumMSBuildLogWriter.WriteTo(buildEnumerator, outputFilePath, includeAllTasks); break; case MSBuildLogFileFormat.Speedscope: var build = Serialization.Read(fileToConvertFilePath); SpeedscopeMSBuildLogWriter.WriteTo(build, outputFilePath, includeAllTasks); break; default: // we should never get here throw new ArgumentException($"Invalid MSBuildLogFileFormat: {format}"); } }