public void Run([NotNull] string[] args) { ShowTitle(); IEnumerable <PreferenceGroupInfo> preferenceGroups = _generationService.GetPreferences(); if (args.Contains("--help", StringComparer.OrdinalIgnoreCase) || args.Contains("-help", StringComparer.OrdinalIgnoreCase) || args.Contains("-?", StringComparer.OrdinalIgnoreCase) || args.Contains("--?", StringComparer.OrdinalIgnoreCase)) { _helpWriter.WriteHelp(preferenceGroups); Environment.ExitCode = (int)ExitCodes.HelpShown; return; } var consoleInputToPreferenceConverter = new ConsoleInputToPreferenceConverter(); ParsedConsoleInput preferences = consoleInputToPreferenceConverter.ParseConsoleInput(args, preferenceGroups); if (preferences.ParseErrors.Any()) { foreach (var parseError in preferences.ParseErrors) { _consoleWriter.Info(parseError); } Environment.ExitCode = (int)ExitCodes.ConsoleInputParseError; return; } GenerateResult results = _generationService.Generate(preferences.ParsedPreferences.ToDictionary(kvp => kvp.Key.Name, kvp => kvp.Value)); //TODO: cleanup _resultWriter.Report(results); Environment.ExitCode = results.AllErrors.Any() ? (int)ExitCodes.GenerationFailed : (int)ExitCodes.Success; }
public HelpWriter([NotNull] IConsoleWriter consoleWriter) { if (consoleWriter == null) { throw new ArgumentNullException(nameof(consoleWriter)); } _consoleWriter = consoleWriter; _consoleInputToPreferenceConverter = new ConsoleInputToPreferenceConverter(); try { int width = Console.WindowWidth; _width = width - 20; if (_width < 20) { _width = 20; } } catch (Exception) { // probably not actually running in a console window _width = 50; } }