|
// 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.Commands.Tool.Search;
using Microsoft.DotNet.Cli.Utils;
namespace Microsoft.DotNet.Cli.NugetSearch;
internal class NugetSearchApiParameter
{
public NugetSearchApiParameter(
string searchTerm = null,
int? skip = null,
int? take = null,
bool prerelease = false)
{
SearchTerm = searchTerm;
Skip = skip;
Take = take;
Prerelease = prerelease;
}
public string SearchTerm { get; }
public int? Skip { get; }
public int? Take { get; }
public bool Prerelease { get; }
public NugetSearchApiParameter(ParseResult parseResult)
{
var searchTerm = parseResult.GetValue(ToolSearchCommandParser.SearchTermArgument);
var skip = GetParsedResultAsInt(parseResult, ToolSearchCommandParser.SkipOption);
var take = GetParsedResultAsInt(parseResult, ToolSearchCommandParser.TakeOption);
var prerelease = parseResult.GetValue(ToolSearchCommandParser.PrereleaseOption);
SearchTerm = searchTerm;
Skip = skip;
Take = take;
Prerelease = prerelease;
}
private static int? GetParsedResultAsInt(ParseResult parseResult, Option<string> alias)
{
var valueFromParser = parseResult.GetValue(alias);
if (string.IsNullOrWhiteSpace(valueFromParser))
{
return null;
}
if (int.TryParse(valueFromParser, out int i))
{
return i;
}
else
{
throw new GracefulException(
string.Format(
CliStrings.InvalidInputTypeInteger,
alias));
}
}
}
|