/// <summary> /// Creates an instance of HelpGenerator. /// </summary> /// <param name="results"></param> public HelpGenerator(CmdLineParseResults results) { ParseResults = results; }
/// <summary> /// Displays the help for the command-line object. /// </summary> /// <param name="results"></param> public static void WriteHelp(CmdLineParseResults results) { var generator = ClassFactory.CreateObject <HelpGenerator>(results); generator.WriteHelp(results); }
/// <summary> /// Writes the console application help to the console. /// </summary> /// <param name="results"></param> public virtual void WriteHelp(CmdLineParseResults results) { if (results.Errors.Length > 0) { if (BaCon.ErrorMessageTitle.HasValue()) { using (var clr = new BaConColor(BaCon.Theme.ErrorTitleText, BaCon.Theme.ErrorTitleBackground)) BaCon.WriteLine(BaCon.ErrorMessageTitle); } foreach (var err in results.Errors) { BaCon.WriteLine(err, BaCon.Theme.ErrorColor, " > ", "\t"); } BaCon.WriteLine(); } var usage = GetUsage(); if (usage.HasValue()) { BaCon.WriteLine(); BaCon.WriteLine("[USAGE]"); BaCon.WriteLine(); BaCon.WriteLine(usage, BaCon.Theme.UsageColor, "", "\t"); BaCon.WriteLine(); } var showSectionTitle = true; foreach (var prop in results.Properties.Where(p => p.ShowInHelp)) { var propHelp = GetPropertyHelp(prop); if (propHelp.IsEmpty()) { continue; } if (showSectionTitle) { // We only want to display the section title if we // are displaying help text for properties. BaCon.WriteLine(); BaCon.WriteLine("[LIST OF VALID ARGUMENTS]"); showSectionTitle = false; } BaCon.WriteLine(); // Place a line break between properties. var clr = prop.Required ? BaCon.Theme.RequiredArgColor : BaCon.Theme.StandardArgColor; BaCon.WriteLine(propHelp, clr, "", "\t"); BaCon.WriteLine(); } var exitCodes = GetExitCodesDisplay(); if (exitCodes.HasValue()) { BaCon.WriteLine(); BaCon.WriteLine("[EXIT CODES]"); BaCon.WriteLine(); BaCon.WriteLine(exitCodes); BaCon.WriteLine(); } }