/// <summary> /// Creates a new instance of the <see cref="CommandLine.Text.HelpText"/> class using common defaults. /// </summary> /// <returns> /// An instance of <see cref="CommandLine.Text.HelpText"/> class. /// </returns> /// <param name='options'> /// The instance that collected command line arguments parsed with <see cref="CommandLine.CommandLineParser"/> class. /// </param> /// <param name='errDelegate'> /// A delegate used to customize the text block for reporting parsing errors. /// </param> public static HelpText AutoBuild(object options, HandleParsingErrorsDelegate errDelegate) { var title = ReflectionUtil.GetAttribute<AssemblyTitleAttribute>(); if (title == null) throw new InvalidOperationException("HelpText::AutoBuild() requires that you define AssemblyTitleAttribute."); var version = ReflectionUtil.GetAttribute<AssemblyInformationalVersionAttribute>(); if (version == null) throw new InvalidOperationException("HelpText::AutoBuild() requires that you define AssemblyInformationalVersionAttribute."); var copyright = ReflectionUtil.GetAttribute<AssemblyCopyrightAttribute>(); if (copyright == null) throw new InvalidOperationException("HelpText::AutoBuild() requires that you define AssemblyCopyrightAttribute."); var auto = new HelpText { Heading = new HeadingInfo(Path.GetFileNameWithoutExtension(title.Title), version.InformationalVersion), Copyright = copyright.Copyright, AdditionalNewLineAfterOption = true, AddDashesToOption = true }; if (errDelegate != null) { var typedTarget = options as CommandLineOptionsBase; if (typedTarget != null) { errDelegate(auto); } } var license = ReflectionUtil.GetAttribute<AssemblyLicenseAttribute>(); if (license != null) { //auto.AddPreOptionsLine(license.FullText); license.AddToHelpText(auto, true); } var usage = ReflectionUtil.GetAttribute<AssemblyUsageAttribute>(); if (usage != null) { //auto.AddPreOptionsLine(usage.FullText); usage.AddToHelpText(auto, true); } auto.AddOptions(options); return auto; }
/// <summary> /// Creates a new instance of the <see cref="CommandLine.Text.HelpText"/> class using common defaults. /// </summary> /// <returns> /// An instance of <see cref="CommandLine.Text.HelpText"/> class. /// </returns> /// <param name='options'>The instance that collected command line arguments parsed with <see cref="CommandLine.CommandLineParser"/> class.</param> /// <param name='errDelegate'>A delegate used to customize the text block for reporting parsing errors.</param> /// <param name="verbsIndex">If true the output style is consistent with verb commands (no dashes), otherwise (default) it outputs options.</param> /// <param name="addNewLineAfterOption">If true insert an additional line after the description of each option</param> public static HelpText AutoBuild(object options, HandleParsingErrorsDelegate errDelegate, bool verbsIndex = false, bool addNewLineAfterOption = true) { var auto = new HelpText { Heading = HeadingInfo.Default, Copyright = CopyrightInfo.Default, AdditionalNewLineAfterOption = addNewLineAfterOption, AddDashesToOption = !verbsIndex }; if (errDelegate != null) { var list = ReflectionUtil.RetrievePropertyList<ParserStateAttribute>(options); if (list != null) { errDelegate(auto); } } var license = ReflectionUtil.GetAttribute<AssemblyLicenseAttribute>(); if (license != null) { license.AddToHelpText(auto, true); } var usage = ReflectionUtil.GetAttribute<AssemblyUsageAttribute>(); if (usage != null) { usage.AddToHelpText(auto, true); } auto.AddOptions(options); return auto; }