File: Commands\Tool\Search\ToolSearchCommand.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 System.CommandLine;
using Microsoft.DotNet.Cli.NugetSearch;
using Microsoft.DotNet.Cli.Utils;
 
namespace Microsoft.DotNet.Cli.Commands.Tool.Search;
 
internal class ToolSearchCommand(
    ParseResult result,
    INugetToolSearchApiRequest nugetToolSearchApiRequest = null
    ) : CommandBase(result)
{
    private readonly INugetToolSearchApiRequest _nugetToolSearchApiRequest = nugetToolSearchApiRequest ?? new NugetToolSearchApiRequest();
    private readonly SearchResultPrinter _searchResultPrinter = new SearchResultPrinter(Reporter.Output);
 
    public override int Execute()
    {
        var isDetailed = _parseResult.GetValue(ToolSearchCommandParser.DetailOption);
        if (!PathUtility.CheckForNuGetInNuGetConfig())
        {
            Reporter.Output.WriteLine(CliCommandStrings.NeedNuGetInConfig);
            return 0;
        }
 
        NugetSearchApiParameter nugetSearchApiParameter = new(_parseResult);
        IReadOnlyCollection<SearchResultPackage> searchResultPackages =
            NugetSearchApiResultDeserializer.Deserialize(
                _nugetToolSearchApiRequest.GetResult(nugetSearchApiParameter).GetAwaiter().GetResult());
 
        _searchResultPrinter.Print(isDetailed, searchResultPackages);
 
        return 0;
    }
}