
This commit attempts to make the command line help user experience for `dotnet` more consistent for all of the built-in SDK commands. The following has been changed: * Organized the top-level help into a section detailing how to run .NET applications and a section on running SDK commands. * Sorted the SDK commands by name (previous ordering was undefined). * Removed `--verbosity` from the "common options section" since it is not a top-level option, nor is it common to all commands. * Added missing parameter names for parameterized options (especially for the `dotnet tool` subcommands). * Fixed the localization of parameter names for parameterized options. * Added missing `PROJECT` parameter to a few commands. * Fixed the localization of the build command's `PROJECT` parameter description. * Fixed the confusing descriptions for the `--framework`, `--configuration`, and `--runtime` options that were being shared between different commands. * Fixed the "unknown command" error for `dotnet help <command>` to show in red. * Deleted .resx for `dotnet msbuild` that is no longer used. * Change the option descriptions to be more consistent in their grammatical structure. * Removed extra blank line from end of help output. Fixes #7431. Fixes #9230. Fixes #9165.
41 lines
No EOL
1.5 KiB
C#
41 lines
No EOL
1.5 KiB
C#
// 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;
|
|
using System.Linq;
|
|
using Microsoft.DotNet.Cli.CommandLine;
|
|
|
|
namespace Microsoft.DotNet.Cli
|
|
{
|
|
public static class ParseResultExtensions
|
|
{
|
|
public static void ShowHelp(this ParseResult parseResult) =>
|
|
Console.WriteLine(parseResult.Command().HelpView().TrimEnd());
|
|
|
|
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)
|
|
{
|
|
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());
|
|
}
|
|
}
|
|
}
|
|
} |