Esempio n. 1
0
        public int Compare(object x, object y)
        {
            CommandParameterInfo info  = x as CommandParameterInfo;
            CommandParameterInfo info2 = y as CommandParameterInfo;

            return(info.Position - info2.Position);
        }
Esempio n. 2
0
        void getType(CommandParameterInfo param)
        {
            String underlyingType = param.ParameterType.ToString();
            String genericType    = String.Empty;

            String[] tokens;
            if (underlyingType.Contains("["))
            {
                AcceptsArray = true;
            }
            if (underlyingType.Contains("[") && !underlyingType.Contains("[]"))
            {
                tokens         = underlyingType.Split('[');
                underlyingType = tokens[0];
                genericType    = tokens[1].Replace("]", null);
                tokens         = genericType.Split('.');
                genericType    = tokens[tokens.Length - 1];
            }
            tokens = underlyingType.Split('.');
            Type   = tokens[tokens.Length - 1];
            if (!String.IsNullOrEmpty(genericType))
            {
                Type += "[" + genericType + "]";
            }
        }
Esempio n. 3
0
        public void CanParseLists(string parameterName, Type underLyingType, List <string> stringValues, object typedValue)
        {
            ListParser listParser = new ListParser(underLyingType, new SingleValueParser(underLyingType));

            ParameterInfo parameterInfo = typeof(ParameterClass).GetMethod("List").GetParameters()
                                          .Single(x => x.Name == parameterName);

            AppSettings appSettings = new AppSettings();

            CommandParameterInfo commandParamterInfo = new CommandParameterInfo(parameterInfo, appSettings);

            commandParamterInfo.SetValue(new CommandArgument()
            {
                Name           = parameterName,
                Description    = "description",
                MultipleValues = true,
                Values         = stringValues
            });

            IList parsedValues = listParser.Parse(commandParamterInfo);

            parsedValues.Should().HaveCount(stringValues.Count);

            parsedValues.Should().AllBeOfType(underLyingType);

            for (int i = 0; i < stringValues.Count; i++)
            {
                parsedValues[i].Should().Be(((IList)typedValue)[i]);
            }
        }
 /// <summary>
 /// Constructs an instance of a ParameterInfo object
 /// </summary>
 /// <param name="parameterInfo">Parameter info of the parameter</param>
 public ParameterInfo(CommandParameterInfo parameterInfo)
 {
     this.Name          = "-" + parameterInfo.Name;
     this.ParameterType = parameterInfo.ParameterType.FullName;
     this.Position      = parameterInfo.Position;
     this.IsMandatory   = parameterInfo.IsMandatory;
     this.HelpMessage   = parameterInfo.HelpMessage;
 }
Esempio n. 5
0
 public static CommandParameter Create(CommandParameterInfo parameter)
 {
     return(new CommandParameter
     {
         Name = parameter.Name,
         IsMandatory = parameter.IsMandatory,
         Type = parameter.ParameterType.Name
     });
 }
        /// <summary>
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public int Compare(object x, object y)
        {
            CommandParameterInfo a = x as CommandParameterInfo;
            CommandParameterInfo b = y as CommandParameterInfo;

            Debug.Assert(a != null && b != null);

            return(a.Position - b.Position);
        }
        private void AddParameter(MemberInfo info, Type parameterType, ParameterAttribute paramAttribute)
        {
            var paramInfo = new CommandParameterInfo(info, parameterType, paramAttribute);

            if (!NamedParameters.ContainsKey(paramInfo.Name))
            {
                NamedParameters[paramInfo.Name] = paramInfo;
            }
            AllParameters.Add(paramInfo);
        }
Esempio n. 8
0
        public void VerboseCommonParameterAvailableFromGetCommandCmdlet()
        {
            CmdletInfo info = ReferenceHost.RawExecute("Get-Command")
                              .Select(psObject => psObject.BaseObject as CmdletInfo)
                              .FirstOrDefault(cmdletInfo => (cmdletInfo != null) && (cmdletInfo.Name == "Get-Command"));
            CommandParameterSetInfo parameterSetInfo = info.ParameterSets[0];
            CommandParameterInfo    verboseParameter = parameterSetInfo.Parameters.FirstOrDefault(parameter => parameter.Name == "Verbose");

            Assert.IsNotNull(verboseParameter);
            Assert.IsTrue(verboseParameter.Aliases.Contains("vb"));
        }
        private ICommandParameterInfo GetParameter(ParameterInfo param)
        {
            var  name        = param.Name;
            var  description = GetDescription(param);
            bool isOptional  = false;
            var  convertFunc = GetConvertFunc(param.ParameterType);

            var info = new CommandParameterInfo(name, description, isOptional, convertFunc);

            return(info);
        }
Esempio n. 10
0
 private static void SetValueForParameter(CommandParameterInfo parameter, CommandLineApplication command)
 {
     parameter.SetValue(command.Argument(
                            parameter.Name,
                            parameter.AnnotatedDescription,
                            _ => {},
                            parameter.TypeDisplayName,
                            parameter.DefaultValue,
                            parameter.IsMultipleType,
                            parameter.AllowedValues));
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="ShowCommandParameterInfo"/> class
        /// with the specified <see cref="CommandParameterInfo"/>.
        /// </summary>
        /// <param name="other">
        /// The object to wrap.
        /// </param>
        public ShowCommandParameterInfo(CommandParameterInfo other)
        {
            if (other == null)
            {
                throw new ArgumentNullException(nameof(other));
            }

            this.Name              = other.Name;
            this.IsMandatory       = other.IsMandatory;
            this.ValueFromPipeline = other.ValueFromPipeline;
            this.ParameterType     = new ShowCommandParameterType(other.ParameterType);
            this.Position          = other.Position;

            var validateSetAttribute = other.Attributes.Where(static x => typeof(ValidateSetAttribute).IsAssignableFrom(x.GetType())).Cast <ValidateSetAttribute>().LastOrDefault();
Esempio n. 12
0
    static Option <CommandArgument> TryGetArgument(CommandParameterInfo p, object o)
    {
        var v = p.Accessor.GetValue(o);

        if (v != null)
        {
            var option      = v as IOption;
            var actualValue = option != null ? (option.IsSome ? option.Value : null) : v;
            if (actualValue != null)
            {
                return(new CommandArgument(p.ParameterName, actualValue));
            }
        }

        return(null);
    }
Esempio n. 13
0
        public void ReflectionParameters()
        {
            var numCommon = CommonCmdletParameters.ParameterDiscovery.AllParameters.Count;
            CommandParameterSetInfo allSet      = info.GetParameterSetByName(ParameterAttribute.AllParameterSets);
            CommandParameterSetInfo fileSet     = info.GetParameterSetByName("File");
            CommandParameterSetInfo variableSet = info.GetParameterSetByName("Variable");


            Assert.AreEqual(3 + numCommon, allSet.Parameters.Count);
            Assert.AreEqual(4 + numCommon, fileSet.Parameters.Count);
            Assert.AreEqual(5 + numCommon, variableSet.Parameters.Count);

            Assert.IsNotNull(allSet);
            Assert.IsNotNull(fileSet);
            Assert.IsNotNull(variableSet);
            Assert.IsNull(info.GetParameterSetByName("TheseShouldBeSkipped"));

            CheckForAllSetsParameters(allSet);
            CheckForAllSetsParameters(fileSet);
            CheckForAllSetsParameters(variableSet);

            CommandParameterInfo filePathParam = fileSet.GetParameterByName("FilePath");

            Assert.IsNotNull(filePathParam);
            Assert.AreEqual("FilePath", filePathParam.Name);
            Assert.AreEqual(3, filePathParam.Position);
            Assert.AreEqual(true, filePathParam.IsMandatory);

            CommandParameterInfo variableParam = variableSet.GetParameterByName("Variable");

            Assert.IsNotNull(variableParam);
            Assert.AreEqual("Variable", variableParam.Name);
            Assert.AreEqual(0, variableParam.Position);
            Assert.AreEqual(true, variableParam.IsMandatory);

            CommandParameterInfo constVarParam = variableSet.GetParameterByName("ConstVar");

            Assert.IsNotNull(constVarParam);
            Assert.AreEqual("ConstVar", constVarParam.Name);
            Assert.AreEqual(-1, constVarParam.Position);
            Assert.AreEqual(false, constVarParam.IsMandatory);

            CommandParameterInfo ageParam = fileSet.GetParameterByName("Age");

            Assert.IsNull(ageParam);
        }
Esempio n. 14
0
 void m_initialize(CommandParameterInfo param)
 {
     status = ItemStatus.New;
     Name   = param.Name;
     // get type
     getType(param);
     // get parameter parameters
     Mandatory            = param.IsMandatory;
     Dynamic              = param.IsDynamic;
     RemainingArgs        = param.ValueFromRemainingArguments;
     Pipeline             = param.ValueFromPipeline;
     PipelinePropertyName = param.ValueFromPipelineByPropertyName;
     // process position
     if (param.Position >= 0)
     {
         Position   = Convert.ToString(param.Position);
         Positional = true;
     }
     else
     {
         Position   = "named";
         Positional = false;
     }
     // process attributes
     Attributes = new List <String>();
     if (param.Attributes.Count > 0)
     {
         foreach (Attribute item in param.Attributes)
         {
             Attributes.Add(item.ToString());
         }
     }
     // process parameter aliases
     Aliases = new List <String>();
     if (param.Aliases.Count > 0)
     {
         foreach (String alias in param.Aliases)
         {
             Aliases.Add(alias);
         }
     }
 }
        public void CanParseNullableInt()
        {
            NullableValueParser  parser        = new NullableValueParser(typeof(int), new SingleValueParser(typeof(int)));
            CommandParameterInfo parameterInfo = new CommandParameterInfo(typeof(IntPropertyModel).GetProperty("Id"), new AppSettings());

            parameterInfo.SetValue(new CommandArgument()
            {
                Values = new List <string>()
                {
                    "3"
                },
                MultipleValues = false,
                Name           = "Id",
                Description    = "Id of employee",
                ShowInHelpText = true
            });
            object value = parser.Parse(parameterInfo);

            value.Should().BeOfType <int>().And.Be(3);
        }
Esempio n. 16
0
        /// <summary>
        /// Creates an instance of the ShowCommandParameterInfo class based on a CommandParameterInfo object
        /// </summary>
        ///
        /// <param name="other">
        /// The object to wrap.
        /// </param>
        public ShowCommandParameterInfo(CommandParameterInfo other)
        {
            if (null == other)
            {
                throw new ArgumentNullException("other");
            }

            this.Name              = other.Name;
            this.IsMandatory       = other.IsMandatory;
            this.ValueFromPipeline = other.ValueFromPipeline;
            this.ParameterType     = new ShowCommandParameterType(other.ParameterType);
            this.Position          = other.Position;

            var validateSetAttribute = other.Attributes.Where(x => typeof(ValidateSetAttribute).IsAssignableFrom(x.GetType())).Cast <ValidateSetAttribute>().LastOrDefault();

            if (validateSetAttribute != null)
            {
                this.HasParameterSet     = true;
                this.ValidParamSetValues = validateSetAttribute.ValidValues;
            }
        }
Esempio n. 17
0
        private static void DisplayHelpPanel(CommandConsoleWindow window)
        {
            ParametricCommandExecution exec = window.CurrentExecution;

            GUILayout.BeginVertical(GUILayout.MinWidth(70),
                                    GUILayout.MaxWidth(200), GUILayout.ExpandHeight(true));

            GUILayout.BeginVertical(MonkeyStyle.Instance.VariableHelpGroupStyle);

            GUILayout.Label(exec.CurrentParameterInfo.
                            Name.NicifyVariableName().Bold()
                            , MonkeyStyle.Instance.VariableTypeTextStyle);

            GUILayout.Label("", MonkeyStyle.Instance.ParametricTabUnderline1Style);
            GUILayout.Label("", MonkeyStyle.Instance.ParametricTabUnderline2Style);

            CommandParameterInfo info = exec.CurrentParameterInfo;
            string parameterTypeName  = info.HasTypeNameOverride ?
                                        info.ParameterTypeNameOverride :
                                        MonkeyStyle.PrettifyTypeName(exec.CurrentParameterInfo.ParameterType);

            GUILayout.Label(MonKeyLocManager.CurrentLoc.Type + parameterTypeName
                            , MonkeyStyle.Instance.VariableTypeTextStyle);

            GUILayout.Label("", MonkeyStyle.Instance.ParametricTabUnderline1Style);
            GUILayout.Label("", MonkeyStyle.Instance.ParametricTabUnderline2Style);

            if (!info.Help.IsNullOrEmpty())
            {
                GUILayout.Label(info.Help, MonkeyStyle.Instance.VariableHelpTextStyle);
            }

            GUILayout.EndVertical();

            DisplayArrayIds(window, exec);

            GUILayout.FlexibleSpace();

            GUILayout.EndVertical();
        }
Esempio n. 18
0
        private void CheckForAllSetsParameters(CommandParameterSetInfo set)
        {
            CommandParameterInfo inputObjectParam = set.GetParameterByName("InputObject");

            Assert.IsNotNull(inputObjectParam);
            Assert.AreEqual("InputObject", inputObjectParam.Name);
            Assert.AreEqual(-1, inputObjectParam.Position);
            Assert.AreEqual(false, inputObjectParam.IsMandatory);

            CommandParameterInfo nameParam = set.GetParameterByName("Name");

            Assert.IsNotNull(nameParam);
            Assert.AreEqual("Name", nameParam.Name);
            Assert.AreEqual(1, nameParam.Position);
            Assert.AreEqual(false, nameParam.IsMandatory);

            CommandParameterInfo recurseParam = set.GetParameterByName("Recurse");

            Assert.IsNotNull(recurseParam);
            Assert.AreEqual("Recurse", recurseParam.Name);
            Assert.AreEqual(-1, recurseParam.Position);
            Assert.AreEqual(false, recurseParam.IsMandatory);
        }
Esempio n. 19
0
        public void ReflectionParameters()
        {
            CommandParameterSetInfo allSet      = info.GetParameterSetByName(ParameterAttribute.AllParameterSets);
            CommandParameterSetInfo fileSet     = info.GetParameterSetByName("File");
            CommandParameterSetInfo variableSet = info.GetParameterSetByName("Variable");

            Assert.AreEqual(3, allSet.Parameters.Count);
            Assert.AreEqual(4, fileSet.Parameters.Count);
            Assert.AreEqual(4, variableSet.Parameters.Count);

            Assert.IsNotNull(allSet);
            Assert.IsNotNull(fileSet);
            Assert.IsNotNull(variableSet);
            Assert.IsNull(info.GetParameterSetByName("TheseShouldBeSkipped"));

            CheckForAllSetsParameters(allSet);
            CheckForAllSetsParameters(fileSet);
            CheckForAllSetsParameters(variableSet);

            CommandParameterInfo filePathParam = fileSet.GetParameterByName("FilePath");

            Assert.IsNotNull(filePathParam);
            Assert.AreEqual("FilePath", filePathParam.Name);
            Assert.AreEqual(0, filePathParam.Position);
            Assert.AreEqual(true, filePathParam.IsMandatory);

            CommandParameterInfo variableParam = variableSet.GetParameterByName("Variable");

            Assert.IsNotNull(variableParam);
            Assert.AreEqual("Variable", variableParam.Name);
            Assert.AreEqual(-1, variableParam.Position);
            Assert.AreEqual(true, variableParam.IsMandatory);

            CommandParameterInfo ageParam = fileSet.GetParameterByName("Age");

            Assert.IsNull(ageParam);
        }
Esempio n. 20
0
 public ParameterDescription(CommandParameterInfo param)
 {
     m_initialize(param);
 }
 public ClassifiedArgument(ArgumentType argumentType, CommandParameterInfo parameterInfo, string value)
 {
     this.ArgumentType = argumentType;
     this.ParameterInfo = parameterInfo;
     this.Value = value;
 }
 void getSyntax(PSObject cmdlet)
 {
     Syntax = new List <String>();
     foreach (CommandParameterSetInfo paraset in ParameterSets)
     {
         String syntaxItem = Convert.ToString(cmdlet.Members["name"].Value);
         foreach (CommandParameterInfo item in paraset.Parameters)
         {
             if (_excludedParams.Contains(item.Name.ToLower()))
             {
                 continue;
             }
             Boolean named = item.Position < 0;
             // fetch param type
             String paramType           = String.Empty;
             CommandParameterInfo item1 = item;
             foreach (ParameterDescription param in Parameters.Where(param => item1.Name == param.Name))
             {
                 paramType = param.Type;
             }
             // fetch VelidateSet attribute
             String validateSet = String.Empty;
             foreach (Attribute attribute in item.Attributes)
             {
                 Boolean found = false;
                 validateSet = String.Empty;
                 switch (attribute.TypeId.ToString())
                 {
                 case "System.Management.Automation.ValidateSetAttribute":
                     validateSet += " {";
                     validateSet += String.Join(" | ", ((ValidateSetAttribute)attribute).ValidValues);
                     validateSet += "} ";
                     found        = true;
                     break;
                 }
                 if (found)
                 {
                     break;
                 }
             }
             if (item.IsMandatory && named)
             {
                 syntaxItem += " -" + item.Name + " <" + paramType + ">" + validateSet;
             }
             else if (item.IsMandatory)
             {
                 syntaxItem += " [-" + item.Name + "] <" + paramType + ">" + validateSet;
             }
             else if (!named)
             {
                 syntaxItem += " [[-" + item.Name + "] <" + paramType + ">" + validateSet + "]";
             }
             else if (!String.IsNullOrEmpty(paramType) && paramType != "SwitchParameter")
             {
                 syntaxItem += " [-" + item.Name + " <" + paramType + ">" + validateSet + "]";
             }
             else
             {
                 syntaxItem += " [-" + item.Name + validateSet + "]";
             }
         }
         Syntax.Add(syntaxItem);
     }
 }