예제 #1
0
        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());
        }
예제 #2
0
        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());
        }