private IEnumerable <RepoOutput> GetSourceBuildRepoOutputs() { if (PackageVersionPropsSnapshots == null) { return(Enumerable.Empty <RepoOutput>()); } var pvpSnapshotFiles = PackageVersionPropsSnapshots .Select(item => item.ItemSpec) .OrderBy(File.GetLastWriteTimeUtc) .Select(file => { string filename = Path.GetFileName(file); return(new { Repo = filename.Substring( SnapshotPrefix.Length, filename.Length - SnapshotPrefix.Length - SnapshotSuffix.Length), PackageVersionProp = PackageVersionPropsElement.ParseFileElements(file) }); }) .ToArray(); return(pvpSnapshotFiles.Skip(1) .Zip(pvpSnapshotFiles, (pvp, prev) => new RepoOutput { Repo = prev.Repo, Built = pvp.PackageVersionProp.Except(prev.PackageVersionProp).ToArray() }) .ToArray()); }
private RepoOutput[] GetSourceBuildRepoOutputs() { var pvpSnapshotFiles = PackageVersionPropsSnapshots.NullAsEmpty() .Select(item => { var content = File.ReadAllText(item.ItemSpec); return(new { Path = item.ItemSpec, Content = content, Xml = XElement.Parse(content) }); }) .OrderBy(snapshot => { // Get the embedded creation time if possible: the file's original metadata may // have been destroyed by copying, zipping, etc. string creationTime = snapshot.Xml // Get the second PropertyGroup. .Elements().Skip(1).FirstOrDefault() // Get the creation time element. ?.Element(snapshot.Xml .GetDefaultNamespace() .GetName(WriteBuildOutputProps.CreationTimePropertyName)) ?.Value; if (string.IsNullOrEmpty(creationTime)) { Log.LogError($"No creation time property found in snapshot {snapshot.Path}"); return(default(DateTime)); } return(new DateTime(long.Parse(creationTime))); }) .Select(snapshot => { string filename = Path.GetFileName(snapshot.Path); return(new { Repo = filename.Substring( SnapshotPrefix.Length, filename.Length - SnapshotPrefix.Length - SnapshotSuffix.Length), PackageVersionProp = PackageVersionPropsElement.Parse(snapshot.Xml) }); }) .ToArray(); return(pvpSnapshotFiles.Skip(1) .Zip(pvpSnapshotFiles, (pvp, prev) => new RepoOutput { Repo = prev.Repo, Built = pvp.PackageVersionProp.Except(prev.PackageVersionProp).ToArray() }) .ToArray()); }