dotnet-installer/src/dotnet/commands/dotnet-complete/ParseCommand.cs
2017-04-14 10:35:36 -07:00

54 lines
No EOL
1.6 KiB
C#

using System;
using System.Linq;
using Microsoft.DotNet.Cli.CommandLine;
using Microsoft.DotNet.Cli.Utils;
namespace Microsoft.DotNet.Cli
{
public class ParseCommand
{
public static int Run(string[] args)
{
DebugHelper.HandleDebugSwitch(ref args);
ParseResult result;
try
{
result = Parser.Instance.Parse(
args.Single());
}
catch (Exception e)
{
throw new InvalidOperationException("The parser threw an exception.", e);
}
Console.WriteLine(result.Diagram());
if (result.UnparsedTokens.Any())
{
Console.WriteLine("Unparsed Tokens: ");
Console.WriteLine(string.Join(" ", result.UnparsedTokens));
}
var optionValuesToBeForwarded = result.AppliedCommand()
.OptionValuesToBeForwarded();
if (optionValuesToBeForwarded.Any())
{
Console.WriteLine("Option values to be forwarded: ");
Console.WriteLine(string.Join(" ", optionValuesToBeForwarded));
}
if (result.Errors.Any())
{
Console.WriteLine();
Console.WriteLine("ERRORS");
Console.WriteLine();
foreach (var error in result.Errors)
{
Console.WriteLine($"[{error?.Option?.Name ?? "???"}] {error?.Message}");
}
}
return 0;
}
}
}