Exemple #1
0
        private bool IsInInterval(SnPatch snPatch, SnComponentDescriptor target, bool onBefore)
        {
            Version version;

            if (onBefore)
            {
                if (target.State == ExecutionResult.Unfinished ||
                    target.State == ExecutionResult.FaultyBefore ||
                    target.State == ExecutionResult.Faulty)
                {
                    version = target.Version;
                }
                else
                {
                    version = target.TempVersionBefore ?? target.Version;
                }
            }
            else
            {
                if (target.State == ExecutionResult.Faulty || target.State == ExecutionResult.SuccessfulBefore)
                {
                    version = target.Version;
                }
                else
                {
                    version = target.TempVersionAfter ?? target.Version;
                }
            }
            return(snPatch.Boundary.ContainsVersion(version));
        }
Exemple #2
0
 private Version GetDependencyTargetVersion(SnComponentDescriptor target, bool onBefore)
 {
     if (onBefore)
     {
         if (target.State == ExecutionResult.SuccessfulBefore)
         {
             return(target.TempVersionBefore);
         }
         return(target.Version);
     }
     return(target.Version);
 }
Exemple #3
0
        private List <SnComponentDescriptor> LoadComponents()
        {
            if (PackageManager.Storage == null)
            {
                return(new List <SnComponentDescriptor>());
            }

            var installed = PackageManager.Storage?
                            .LoadInstalledComponentsAsync(CancellationToken.None)
                            .ConfigureAwait(false).GetAwaiter().GetResult();
            var faulty = PackageManager.Storage?
                         .LoadIncompleteComponentsAsync(CancellationToken.None)
                         .ConfigureAwait(false).GetAwaiter().GetResult();

            return(SnComponentDescriptor.CreateComponents(installed, faulty));
        }
        internal static List <SnComponentDescriptor> CreateComponents(IEnumerable <ComponentInfo> installed, IEnumerable <ComponentInfo> faultyList)
        {
            var result = installed.Select(x => new SnComponentDescriptor(x)).ToList();

            foreach (var faulty in faultyList)
            {
                var existing = result.FirstOrDefault(x => x.ComponentId == faulty.ComponentId);
                if (existing == null)
                {
                    existing = new SnComponentDescriptor(faulty);
                    result.Add(existing);
                    existing.Version = null;
                }
                else
                {
                    // 1 - If a component is "existing" the actual version is: existing.Version.
                    // 2 - The "faulty" is a ComponentInfo so its version is: faulty.Version.
                    // 3 - Only newer faulty is relevant.
                    if (existing.Version >= faulty.Version)
                    {
                        continue;
                    }
                }

                switch (faulty.ExecutionResult)
                {
                case ExecutionResult.Successful:
                case ExecutionResult.Faulty:
                    existing.TempVersionAfter = faulty.Version;
                    break;

                case ExecutionResult.Unfinished:
                case ExecutionResult.FaultyBefore:
                case ExecutionResult.SuccessfulBefore:
                    existing.TempVersionBefore = faulty.Version;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                existing.State = faulty.ExecutionResult;
            }

            return(result);
        }
        internal static List <SnComponentDescriptor> CreateComponents(IEnumerable <ComponentInfo> installed, IEnumerable <ComponentInfo> faultyList)
        {
            var result = installed.Select(x => new SnComponentDescriptor(x)).ToList();

            foreach (var faulty in faultyList)
            {
                var existing = result.FirstOrDefault(x => x.ComponentId == faulty.ComponentId);
                if (existing == null)
                {
                    existing = new SnComponentDescriptor(faulty);
                    result.Add(existing);
                    existing.Version = null;
                }

                switch (faulty.ExecutionResult)
                {
                case ExecutionResult.Successful:
                case ExecutionResult.Faulty:
                    existing.TempVersionAfter = faulty.Version;
                    break;

                case ExecutionResult.Unfinished:
                case ExecutionResult.FaultyBefore:
                case ExecutionResult.SuccessfulBefore:
                    existing.TempVersionBefore = faulty.Version;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                existing.State = faulty.ExecutionResult;
            }

            return(result);
        }