public static void ShowHelp(IEnumerable <Arg> args, string forWhat, bool verbose) { //System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); //FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); //string version = fvi.FileVersion; Version version = Assembly.GetExecutingAssembly().GetName().Version; string title = String.Format("{0} (version: {1})", forWhat, version); List <string> helpText = new List <string>(); helpText.Add(title); helpText.Add(String.Empty); helpText.AddRange(HelpCreator.GetHelp(args, verbose)); if (Common.HasConsole()) { helpText.ForEach(Console.Error.WriteLine); } else { string text = string.Empty; helpText.ForEach(e => text += e + Environment.NewLine); MessageBox.Show(text, title); } }
internal static List <string> GetHelp(IEnumerable <Arg> args, bool verbose) { if (args.Count() == 0) { return(new List <string>()); } List <string> helpText = new List <string>(); string indent = String.Format("Usage: {0}", Path.GetFileNameWithoutExtension(AppDomain.CurrentDomain.FriendlyName)); string line = indent; args.ForEach(arg => { string argShortHelp = " " + HelpCreator.GetShortHelp(arg); if ((line + argShortHelp).Length > 80) { helpText.Add(line); line = new string(' ', indent.Length); } line += argShortHelp; }); if (line != new string(' ', indent.Length)) { helpText.Add(line); } helpText.Add(String.Empty); helpText.Add("Options:"); int landslide0 = args.Max(arg => arg.ShortDesignation.Length); int landslide1 = args.Max(arg => arg.ToolTip.Length); int landslide2 = args.Max(arg => arg.Help.Length); string format = GetFormat(" -{0, @landslide0}{1, @landslide1}{2, @landslide2}: {3}", landslide0 + 1, landslide1 + 4, landslide2); args.ForEach(arg => { string argLongHelp = HelpCreator.GetLongHelp(arg, format); helpText.Add(argLongHelp); }); if (verbose) { args.ForEach(arg => { string argVerboseHelp = HelpCreator.GetVerboseText(arg); if (argVerboseHelp != null) { helpText.Add(argVerboseHelp); } }); } return(helpText); }