示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }