54 lines
No EOL
1.6 KiB
C#
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;
|
|
}
|
|
}
|
|
} |