Merge pull request #2035 from eerhardt/Version

Changing --version in the CLI
This commit is contained in:
Eric Erhardt 2016-03-24 21:15:09 -05:00
commit 30346443fb
4 changed files with 41 additions and 7 deletions

View file

@ -78,8 +78,7 @@ namespace Microsoft.DotNet.Cli.Build
var configuration = c.BuildContext.Get<string>("Configuration");
// Run the build
string version = DotNetCli.Stage0.Exec("", "--version").CaptureStdOut().Execute().StdOut;
string rid = Array.Find<string>(version.Split(Environment.NewLine.ToCharArray()), (e) => e.Contains("Runtime Id:")).Replace("Runtime Id:", "").Trim();
string rid = GetRuntimeId();
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
// Why does Windows directly call cmake but Linux/Mac calls "build.sh" in the corehost dir?
@ -134,6 +133,26 @@ namespace Microsoft.DotNet.Cli.Build
return c.Success();
}
private static string GetRuntimeId()
{
string info = DotNetCli.Stage0.Exec("", "--info").CaptureStdOut().Execute().StdOut;
string rid = Array.Find<string>(info.Split(Environment.NewLine.ToCharArray()), (e) => e.Contains("RID:"))?.Replace("RID:", "").Trim();
// TODO: when Stage0 is updated with the new --info, remove this legacy check for --version
if (string.IsNullOrEmpty(rid))
{
string version = DotNetCli.Stage0.Exec("", "--version").CaptureStdOut().Execute().StdOut;
rid = Array.Find<string>(version.Split(Environment.NewLine.ToCharArray()), (e) => e.Contains("Runtime Id:")).Replace("Runtime Id:", "").Trim();
}
if (string.IsNullOrEmpty(rid))
{
throw new BuildFailureException("Could not find the Runtime ID from Stage0 --info or --version");
}
return rid;
}
[Target]
public static BuildTargetResult CompileStage1(BuildTargetContext c)
{

View file

@ -61,7 +61,12 @@ namespace Microsoft.DotNet.Cli
}
else if (IsArg(args[lastArg], "version"))
{
PrintVersionInfo();
PrintVersion();
return 0;
}
else if (IsArg(args[lastArg], "info"))
{
PrintInfo();
return 0;
}
else if (IsArg(args[lastArg], "h", "help"))
@ -129,7 +134,12 @@ namespace Microsoft.DotNet.Cli
.ExitCode;
}
private static void PrintVersionInfo()
private static void PrintVersion()
{
Reporter.Output.WriteLine(HelpCommand.ProductVersion);
}
private static void PrintInfo()
{
HelpCommand.PrintVersionHeader();
@ -144,7 +154,7 @@ namespace Microsoft.DotNet.Cli
Reporter.Output.WriteLine($" OS Name: {runtimeEnvironment.OperatingSystem}");
Reporter.Output.WriteLine($" OS Version: {runtimeEnvironment.OperatingSystemVersion}");
Reporter.Output.WriteLine($" OS Platform: {runtimeEnvironment.OperatingSystemPlatform}");
Reporter.Output.WriteLine($" Runtime Id: {runtimeEnvironment.GetRuntimeIdentifier()}");
Reporter.Output.WriteLine($" RID: {runtimeEnvironment.GetRuntimeIdentifier()}");
}
private static bool IsArg(string candidate, string longName)

View file

@ -8,7 +8,7 @@ dotnet -- general driver for running the command-line commands
# SYNOPSIS
dotnet [--version] [--help] [--verbose] < command > [< args >]
dotnet [--version] [--info] [--help] [--verbose] < command > [< args >]
# DESCRIPTION
dotnet is a generic driver for the CLI toolchain. Invoked on its own, it will give out brief usage instructions.
@ -25,6 +25,10 @@ Each specific feature is implemented as a command. In order to use the feature,
Print out the version of the CLI tooling
`--info`
Print out information about the CLI tooling
`-h, --help`
Print out a short help and a list of current commands.

View file

@ -17,7 +17,8 @@ Arguments:
Common Options (passed before the command):
-v|--verbose Enable verbose output
--version Display .NET CLI Version Info
--version Display .NET CLI Version Number
--info Display .NET CLI Info
Common Commands:
new Initialize a basic .NET project