Exemple #1
0
        public CachedPrefixInfo(
            string id,
            string about,
            PrefixVersionsIndex remoteIndex,
            VersionIndex[] localVersions)
        {
            Id    = id;
            About = about;

            remoteIndex.Latest.TryGetValue(IndexTool.VersionTypeRelease, out var latest);

            var versions = new List <CachedVersionInfo>(remoteIndex.Versions.Length + localVersions.Length + 1)
            {
                new CachedVersionInfo(IndexTool.VersionAliasLatest)
            };

            var knownIds = new HashSet <string> {
                IndexTool.VersionAliasLatest
            };

            if (remoteIndex.Versions != null)
            {
                foreach (var versionEntry in remoteIndex.Versions)
                {
                    if (versionEntry.Id == IndexTool.VersionAliasLatest)
                    {
                        continue;
                    }

                    knownIds.Add(versionEntry.Id);
                    versions.Add(new CachedVersionInfo(versionEntry));
                }
            }

            foreach (var versionIndex in localVersions)
            {
                if (!knownIds.Contains(versionIndex.Id))
                {
                    versions.Add(new CachedVersionInfo(versionIndex));
                }
            }

            versions.Sort();

            Versions = versions.Select(v => v.Id).ToArray();

            LatestVersion = latest ?? (versions.Count > 0 ? versions[0].Id : null);
        }
Exemple #2
0
        private void UpdatePrefixes(IReadOnlyDictionary <string, PrefixVersionsIndex> remoteVersions)
        {
            Prefixes = new CachedPrefixInfo[_index.Prefixes.Count];

            var i = 0;

            foreach (var(prefixId, prefix) in _index.Prefixes)
            {
                _log.Info($"Looking for cached versions in the '{prefixId}' prefix...");

                if (!remoteVersions.TryGetValue(prefixId, out var versionsIndex))
                {
                    versionsIndex = new PrefixVersionsIndex();
                }

                var localVersions = GetLocalVersions(prefixId);
                Prefixes[i++] = new CachedPrefixInfo(prefixId, prefix.About, versionsIndex, localVersions);
            }

            Array.Sort(Prefixes);
        }