Exemplo n.º 1
0
        public static bool Parse(string[] args, out string[] prunedArgs)
        {
            prunedArgs = null;
            var pArgs = new List <string>();

            int len = args.Length;

            for (int a = 0; a < len; a++)
            {
                string curr = args[a];
                if (curr == "-h" || curr == "--help")
                {
                    if (Aspect == PickAspect.None)
                    {
                        ShowFullHelp = true;
                    }
                    else
                    {
                        ShowHelpAspects = true;
                    }
                }
                else if (curr == "--aspects")
                {
                    ShowHelpAspects = true;
                }
                else if (Aspect == PickAspect.None)
                {
                    PickAspect which;
                    if (!Aids.TryParse <PickAspect>(curr, out which))
                    {
                        Log.Error("unkown action \"" + curr + "\"");
                        return(false);
                    }
                    Aspect = which;
                }
                else
                {
                    pArgs.Add(curr);
                }
            }

            if (ShowFullHelp || ShowHelpAspects)
            {
                Usage(Aspect);
                return(false);
            }

            if (Aspect == PickAspect.None)
            {
                Log.Error("aspect was not specified");
                return(false);
            }

            prunedArgs = pArgs.ToArray();
            return(true);
        }
Exemplo n.º 2
0
        public static void Usage(PickAspect aspect = PickAspect.None)
        {
            StringBuilder sb   = new StringBuilder();
            string        name = nameof(MathVenture);

            sb
            .WL(0, $"Usage {name} (aspect) [options]")
            .WL(0, "Options:")
            .WL(1, "-h / --help", "Show full help")
            .WL(1, "(aspect) -h", "Aspect specific help")
            .WL(1, "--aspects", "List possible aspects")
            ;

            if (ShowFullHelp)
            {
                foreach (PickAspect a in Aids.EnumAll <PickAspect>())
                {
                    IMain func = Registry.Map(a);
                    func.Usage(sb);
                }
            }
            else if (aspect != PickAspect.None)
            {
                IMain func = Registry.Map(aspect);
                func.Usage(sb);
            }
            else
            {
                if (ShowHelpAspects)
                {
                    sb
                    .WL()
                    .WL(0, "Aspects:")
                    .PrintEnum <PickAspect>(1)
                    ;
                }
            }

            Log.Message(sb.ToString());
        }