示例#1
0
        /// <summary>
        /// Build a string showing what arguments are expected.
        /// This is done by inspecting the argattributes on all the
        /// properties of the supplied object.
        /// </summary>
        /// <param name="argsReciever"></param>
        /// <param name="prefix"></param>
        /// <param name="separator"></param>
        /// <returns></returns>
        public static string BuildUsingReciever(object argsReciever, string prefix, string separator)
        {
            // Get all the properties that have arg attributes.
            List <ArgAttribute> argsList = ArgsHelper.GetArgsFromReciever(argsReciever);

            return(Build("app", argsList, prefix, separator));
        }
        /// <summary>
        /// Build a string showing what arguments are expected.
        /// This is done by inspecting the argattributes on all the
        /// properties of the supplied object.
        /// </summary>
        /// <param name="argsReciever"></param>
        /// <returns></returns>
        public static string Build(object argsReciever)
        {
            // Get all the properties that have arg attributes.
            List <ArgAttribute> argsList = ArgsHelper.GetArgsFromReciever(argsReciever);

            return(Build(argsList));
        }
示例#3
0
        /// <summary>
        /// Parses the arguments and checks for named arguments and non-named arguments.
        /// </summary>
        /// <param name="args">e.g. "-env:prod", "-config:prod.xml", "-date:T-1", "20"</param>
        /// <param name="prefix">Prefix used for named arguments. E.g. "-" as in "-env:prod"</param>
        /// <param name="separator">Separator used between name and value of named arguments. E.g. ":" as in "-env:prod"</param>
        /// <param name="argReciever">The object to apply the argument values to. This must have ArgAttributes on it's properties.</param>
        /// <returns></returns>
        public static BoolMessageItem <Args> Parse(string[] args, string prefix, string separator, object argReciever)
        {
            // Parse the args first.
            BoolMessageItem <Args> parseResult = Parse(args, prefix, separator);

            if (!parseResult.Success)
            {
                return(parseResult);
            }

            Args resultArgs = parseResult.Item;

            // 1. Set the schema.
            List <ArgAttribute> schemaItems = ArgsHelper.GetArgsFromReciever(argReciever);

            resultArgs.Schema.Items = schemaItems;

            // 2. Parse interpreted values like ${today}.
            ArgsHelper.InterpretValues(resultArgs);

            // 3. Apply the values to the reciever and store any errors.
            var errors = new List <string>();

            // Set the named argument values on the object's properties.
            if (argReciever != null)
            {
                ArgsHelper.CheckAndApplyArgs(resultArgs, argReciever, errors);
            }
            string singleMessage = string.Empty;

            foreach (string error in errors)
            {
                singleMessage += error + Environment.NewLine;
            }

            return(new BoolMessageItem <Args>(resultArgs, errors.Count == 0, singleMessage));
        }