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)); }
private Version GetDependencyTargetVersion(SnComponentDescriptor target, bool onBefore) { if (onBefore) { if (target.State == ExecutionResult.SuccessfulBefore) { return(target.TempVersionBefore); } return(target.Version); } return(target.Version); }
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); }