| File: RestoreCommand\RequestFactory\NoOpRestoreResult.cs | Web Access |
| Project: src\nuget-client\src\NuGet.Core\NuGet.Commands\NuGet.Commands.csproj (NuGet.Commands) |
// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. #nullable disable using System; using System.Collections.Generic; using System.Globalization; using System.Threading; using System.Threading.Tasks; using NuGet.Common; using NuGet.LibraryModel; using NuGet.ProjectModel; namespace NuGet.Commands { public class NoOpRestoreResult : RestoreResult { private readonly Lazy<LockFile> _lockFileLazy; public NoOpRestoreResult(bool success, string lockFilePath, Lazy<LockFile> lockFileLazy, CacheFile cacheFile, string cacheFilePath, ProjectStyle projectStyle, TimeSpan elapsedTime) : base(success: success, restoreGraphs: null, compatibilityCheckResults: new List<CompatibilityCheckResult>(), msbuildFiles: null, lockFile: null, previousLockFile: null, lockFilePath: lockFilePath, cacheFile: cacheFile, cacheFilePath: cacheFilePath, packagesLockFilePath: null, packagesLockFile: null, dependencyGraphSpecFilePath: null, dependencyGraphSpec: null, projectStyle: projectStyle, elapsedTime: elapsedTime) { _lockFileLazy = lockFileLazy ?? throw new ArgumentNullException(nameof(lockFileLazy)); LogMessages = cacheFile?.LogMessages ?? new List<IAssetsLogMessage>(); } public override LockFile LockFile => _lockFileLazy.Value; public override LockFile PreviousLockFile => LockFile; //We override this method because in the case of a no op we don't need to update anything public override Task CommitAsync(ILogger log, CancellationToken token) { if (log == null) { throw new ArgumentNullException(nameof(log)); } var isTool = ProjectStyle == ProjectStyle.DotnetCliTool; if (isTool) { log.LogInformation(string.Format(CultureInfo.CurrentCulture, Strings.Log_ToolSkippingAssetsFile, LockFilePath)); log.LogVerbose(string.Format(CultureInfo.CurrentCulture, Strings.Log_SkippingCacheFile, CacheFilePath)); } else { log.LogInformation(string.Format(CultureInfo.CurrentCulture, Strings.Log_SkippingAssetsFile, LockFilePath)); log.LogVerbose(string.Format(CultureInfo.CurrentCulture, Strings.Log_SkippingCacheFile, CacheFilePath)); } return Task.CompletedTask; } //We override this method because in the case of a no op we don't have any new libraries installed public override ISet<LibraryIdentity> GetAllInstalled() { return new HashSet<LibraryIdentity>(); } //We override this method because in the case of a no op we don't have any dirty files. internal override IReadOnlyList<string> GetDirtyFiles() { return null; } } }