Example #1
0
        public async Task UpdatePackageAsync(LibraryReference reference, Package package, string appName, CancellationToken token)
        {
            reference.AssertNotNull(nameof(reference));
            package.AssertNotNull(nameof(package));
            appName.AssertNotNull(nameof(appName));

            var index = await Storage.ReadLibraryIndexJsonAsync <LibraryIndexJson>(reference.Id, token);

            // licenses are updated by PackageResolver
            // only ApprovalStatus is managed by UpdateCommand
            index.License.Status = package.ApprovalStatus.ToString();

            var app = index.UsedBy.FirstOrDefault(i => appName.EqualsIgnoreCase(i.Name));

            if (app == null)
            {
                app = new Application {
                    Name = appName
                };
                index.UsedBy.Add(app);
            }

            app.InternalOnly     = reference.IsInternal;
            app.TargetFrameworks = reference.TargetFrameworks;
            app.Dependencies.Clear();
            foreach (var dependency in reference.Dependencies)
            {
                app.Dependencies.Add(new LibraryDependency {
                    Name = dependency.Name, Version = dependency.Version
                });
            }

            await Storage.WriteLibraryIndexJsonAsync(reference.Id, index, token);
        }