public static Build Read(Stream stream, byte[] projectImportsArchive = null) { using (var binaryLogReader = new BuildLogReader(stream)) { if (!binaryLogReader.formatIsValid) { throw new Exception("Invalid log file format"); } var build = (Build)binaryLogReader.ReadNode(); var buildStringCache = build.StringTable; foreach (var stringInstance in binaryLogReader.reader.StringTable) { buildStringCache.Intern(stringInstance); } if (build.SourceFilesArchive == null && projectImportsArchive != null) { build.SourceFilesArchive = projectImportsArchive; } return(build); } }
public static Build Read(string filePath) { if (filePath.EndsWith(".xml", StringComparison.OrdinalIgnoreCase)) { return(XmlLogReader.ReadFromXml(filePath)); } else if (filePath.EndsWith(".binlog", StringComparison.OrdinalIgnoreCase)) { try { return(BinaryLog.ReadBuild(filePath)); } catch (Exception) { if (DetectLogFormat(filePath) == ".buildlog") { return(BuildLogReader.Read(filePath)); } else { throw; } } } else if (filePath.EndsWith(".buildlog", StringComparison.OrdinalIgnoreCase)) { try { return(BuildLogReader.Read(filePath)); } catch (Exception) { if (DetectLogFormat(filePath) == ".binlog") { return(BinaryLog.ReadBuild(filePath)); } else { throw; } } } return(null); }
public static Build ReadBuildLog(Stream stream, byte[] projectImportsArchive = null) => BuildLogReader.Read(stream, projectImportsArchive);