File: Commands\Tool\Install\LocalToolsResolverCacheExtensions.cs
Web Access
Project: ..\..\..\src\Cli\dotnet\dotnet.csproj (dotnet)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
#nullable disable
 
using Microsoft.DotNet.Cli.ToolPackage;
using Microsoft.DotNet.Cli.Utils;
using NuGet.Frameworks;
 
namespace Microsoft.DotNet.Cli.Commands.Tool.Install;
 
internal static class LocalToolsResolverCacheExtensions
{
    public static void SaveToolPackage(
        this ILocalToolsResolverCache localToolsResolverCache,
        IToolPackage toolDownloadedPackage,
        string targetFrameworkToInstall)
    {
        if (localToolsResolverCache == null)
        {
            throw new ArgumentNullException(nameof(localToolsResolverCache));
        }
 
        if (toolDownloadedPackage == null)
        {
            throw new ArgumentNullException(nameof(toolDownloadedPackage));
        }
 
        if (string.IsNullOrWhiteSpace(targetFrameworkToInstall))
        {
            throw new ArgumentException("targetFrameworkToInstall cannot be null or whitespace",
                nameof(targetFrameworkToInstall));
        }
 
        localToolsResolverCache.Save(
            new Dictionary<RestoredCommandIdentifier, ToolCommand>
            {
                [new RestoredCommandIdentifier(
                        toolDownloadedPackage.Id,
                        toolDownloadedPackage.Version,
                        NuGetFramework.Parse(targetFrameworkToInstall),
                        Constants.AnyRid,
                        toolDownloadedPackage.Command.Name)] =
                    toolDownloadedPackage.Command
            });
    }
}