public async Task RunAsync(string[] args) { var tokens = _tokenizer.Tokenize(Metadata, args).ToArray(); var commandMetadata = _commandParser.Parse(Metadata, tokens); var helpTokenExists = tokens.Any(token => token is HelpOptionToken); if (commandMetadata == null) { if (helpTokenExists) { _helpDocs.Print(Metadata); } else { Console.WriteLine("Unknown command."); } return; } if (helpTokenExists) { _helpDocs.Print(commandMetadata); return; } try { await commandMetadata.Run(tokens); } catch (ParsingException exception) { Console.WriteLine( $"Incorrect value \"{exception.Value}\" of {exception.Target.Map()} \"{exception.Name}\"."); } if (_disposeAfterRun == true) { Dispose(); } }