public string GetDescription(params OptionDescriptor[] descriptors) { var optionDescriptions = new List <string[]>(); int maxShortNameColumnWidth = 0; int maxLongNameColumnWidth = 0; foreach (var descr in descriptors) { var cols = GetDescriptionColumns(descr); maxShortNameColumnWidth = Math.Max(maxShortNameColumnWidth, cols[0].Length); maxLongNameColumnWidth = Math.Max(maxLongNameColumnWidth, cols[1].Length); optionDescriptions.Add(cols); } var descriptionLayout = new TextLayout { LeftPrefixFirstLine = new string(' ', 2), LeftPrefixParagraph = new string(' ', 2 + maxShortNameColumnWidth + 2 + maxLongNameColumnWidth + 2), MaxColumns = MaxColumns, }; var description = new StringBuilder(); foreach (var descr in optionDescriptions) { var optionDescription = string.Format("{0,-" + maxShortNameColumnWidth + "} {1,-" + maxLongNameColumnWidth + "} {2}", descr); descriptionLayout.Layout(optionDescription, description); } return(description.ToString()); }
public string GetDescription(List <TemplateVariable> variables) { var varDescriptionLayout1 = new TextLayout { LeftPrefixFirstLine = new string(' ', 2), LeftPrefixParagraph = new string(' ', 2), MaxColumns = MaxColumns, }; var varDescriptionLayout2 = new TextLayout { LeftPrefixFirstLine = new string(' ', 6), LeftPrefixParagraph = new string(' ', 6), MaxColumns = MaxColumns, }; if (variables.Count == 0) { return(varDescriptionLayout1.Layout("<NO TEMPLATE VARIABLES AVAILABLE>").ToString()); } var description = new StringBuilder(); for (var i = 0; i < variables.Count; i++) { var varDescription = string.Format("{0} --> {1}", variables[i].ToString(), variables[i].Description); varDescriptionLayout1.Layout(varDescription, description); if (null != variables[i].ArgumentDescription) { varDescriptionLayout2.Layout(variables[i].ArgumentDescription, description); } if (i < variables.Count - 1) { description.AppendLine(); } } return(description.ToString()); }
void PrintUsage() { var cmdFileName = GetCommandFileName(); var cmdFullName = cmdFileName[0]; var cmdName = cmdFileName[1]; var usage = new StringBuilder(); #region Print Header { var header = new StringBuilder(); header.Append(cmdName).Append(" ").Append(MainClass.Version).Append(" -- ").Append(MainClass.Copyright).AppendLine(); header.AppendLine(); header.Append("Project Site: ").Append(MainClass.ProjectUrl).AppendLine(); header.AppendLine(); header.Append("This program is licensed under the GNU General Public License, Version 3.").AppendLine(); var headerLayout = new TextLayout() { LinesBeforeParagraph = 1, LeftPrefixFirstLine = new string(' ', 4), LeftPrefixParagraph = new string(' ', 4), MaxColumns = MaxColumns, LinesAfterParagraph = 1, }; headerLayout.Layout(header.ToString(), usage); } #endregion #region Command line with options { var cmdLine = new StringBuilder(); cmdLine.Append("USAGE: ").Append(cmdFullName).Append(' '); foreach (var descr in OptionDescriptorDefinitions.OptionDescriptors) { string usageForm = GetUsageForm(descr); cmdLine.Append(usageForm).Append(' '); } cmdLine.Append("<directory>").AppendLine(); var cmdLineLayout = new TextLayout() { LeftPrefixParagraph = new string(' ', 8 + cmdFullName.Length + 1), MaxColumns = MaxColumns, LinesAfterParagraph = 1, }; cmdLineLayout.Layout(cmdLine.ToString(), usage); } #endregion #region Option descriptions { usage.Append("Option descriptions:\n"); usage.Append(GetDescription(OptionDescriptorDefinitions.OptionDescriptors)); usage.AppendLine(); } #endregion #region Settings environment variable { var envValue = MainClass.GetSettingsInEnvironmentVariable(); if (null != envValue) { if (string.Empty == envValue) { envValue = "<VARIABLE EMPTY>"; } } else { envValue = "<VARIABLE UNDEFINED>"; } var settingsEnvVarLayout = new TextLayout() { MaxColumns = MaxColumns, }; var caption = string.Format("Defaults set in environment variable '{0}':", MainClass.SettingsEnvironmentVariable); settingsEnvVarLayout.Layout(caption, usage); settingsEnvVarLayout.LeftPrefixFirstLine = settingsEnvVarLayout.LeftPrefixParagraph = new string(' ', 2); settingsEnvVarLayout.LinesAfterParagraph = 1; settingsEnvVarLayout.Layout(envValue, usage); } #endregion #region Template variables { var templateVarLayout = new TextLayout() { MaxColumns = MaxColumns, }; templateVarLayout.Layout("Available template variables for placeholder files and corresponding creation/deletion hooks:", usage); usage.Append(GetDescription(MainClass.CreateTemplateEngine(string.Empty).ListTemplateVariables())); } #endregion Writer.WriteLine(usage.ToString()); }