// 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.Reflection; using Microsoft.DotNet.Cli.Utils; namespace Microsoft.DotNet.Tools.Help { public class HelpCommand { private const string ProductLongName = ".NET Command Line Tools"; private const string UsageText = @"Usage: dotnet [common-options] [command] [arguments] Arguments: [command] The command to execute [arguments] Arguments to pass to the command Common Options (passed before the command): -v|--verbose Enable verbose output --version Display .NET CLI Version Info Common Commands: new Initialize a basic .NET project restore Restore dependencies specified in the .NET project build Builds a .NET project publish Publishes a .NET project for deployment (including the runtime) run Compiles and immediately executes a .NET project repl Launch an interactive session (read, eval, print, loop) pack Creates a NuGet package"; public static readonly string ProductVersion = GetProductVersion(); private static string GetProductVersion() { var attr = typeof(HelpCommand).GetTypeInfo().Assembly.GetCustomAttribute(); return attr?.InformationalVersion; } public static int Run(string[] args) { if (args.Length == 0) { PrintHelp(); return 0; } else { return Cli.Program.Main(new[] { args[0], "--help" }); } } public static void PrintHelp() { PrintVersionHeader(); Reporter.Output.WriteLine(UsageText); } public static void PrintVersionHeader() { var versionString = string.IsNullOrEmpty(ProductVersion) ? string.Empty : $" ({ProductVersion})"; Reporter.Output.WriteLine(ProductLongName + versionString); } } }