dotnet-installer/src/dotnet/ParseResultExtensions.cs

41 lines
1.5 KiB
C#
Raw Normal View History

// Copyright (c) .NET Foundation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
2017-03-08 16:02:24 -08:00
using System.Linq;
using Microsoft.DotNet.Cli.CommandLine;
namespace Microsoft.DotNet.Cli
{
public static class ParseResultExtensions
{
2017-03-08 16:02:24 -08:00
public static void ShowHelp(this ParseResult parseResult) =>
Console.WriteLine(parseResult.Command().HelpView().TrimEnd());
2017-03-13 13:29:03 -07:00
public static void ShowHelpOrErrorIfAppropriate(this ParseResult parseResult)
{
parseResult.ShowHelpIfRequested();
if (parseResult.Errors.Any())
{
throw new CommandParsingException(
message: string.Join(Environment.NewLine,
parseResult.Errors.Select(e => e.Message)),
helpText: parseResult?.Command()?.HelpView().TrimEnd());
}
}
public static void ShowHelpIfRequested(this ParseResult parseResult)
{
2017-03-14 11:30:35 -07:00
var appliedCommand = parseResult.AppliedCommand();
if (appliedCommand.HasOption("help") ||
appliedCommand.Arguments.Contains("-?") ||
appliedCommand.Arguments.Contains("/?"))
{
// NOTE: this is a temporary stage in refactoring toward the ClicCommandLineParser being used at the CLI entry point.
throw new HelpException(parseResult.Command().HelpView().TrimEnd());
}
}
}
}