public void ShouldNotSetOtputIfThePropertyDoesNotExist()
        {
            var commandWithoutOutput = new DoSomethingNTimesCommand();
            var output = new MemoryOutput();

            Assert.IsFalse(CommandMetaDataHelper.SetOutputProperty(commandWithoutOutput, output));
        }
        public void ShouldSetOtputIfThePropertyExists()
        {
            var commandWithOutput = new DoSomethingCommand();
            var output            = new MemoryOutput();

            var result = CommandMetaDataHelper.SetOutputProperty(commandWithOutput, output);

            Assert.IsTrue(result);
        }
示例#3
0
        public int Execute()
        {
            var helpStringBuilder = new StringBuilder();

            var commandInfo = CommandMetaDataHelper.GetCommandInfo(CommandType);

            helpStringBuilder.Append(commandInfo.Name);
            if (!string.IsNullOrWhiteSpace(commandInfo.Description))
            {
                helpStringBuilder.AppendFormat(" - {0}", commandInfo.Description);
            }

            if (!string.IsNullOrWhiteSpace(commandInfo.LongDescription))
            {
                helpStringBuilder.AppendLine();

                var longDescriptionLines = commandInfo.LongDescription.Split(
                    new[] { Environment.NewLine },
                    StringSplitOptions.None);

                foreach (var longDescriptionLine in longDescriptionLines)
                {
                    helpStringBuilder.AppendLine($"{LikeTabSeparator}{longDescriptionLine}");
                }
            }

            Output.WriteInfo(helpStringBuilder.ToString().TrimEnd(Environment.NewLine.ToCharArray()));

            var commandArgumentPropertyInfos = CommandMetaDataHelper.GetCommandArgumentInfos(CommandType);

            if (commandArgumentPropertyInfos.Count > 0)
            {
                Output.WriteInfo("Options:");
            }

            foreach (var argumentInfo in commandArgumentPropertyInfos)
            {
                var propertyHelpStringBuilder = new StringBuilder();
                propertyHelpStringBuilder.AppendFormat("{0}-{1}", LikeTabSeparator, argumentInfo.ShortName);

                if (!string.IsNullOrWhiteSpace(argumentInfo.LongName))
                {
                    propertyHelpStringBuilder.AppendFormat("{0}--{1}", LikeTabSeparator, argumentInfo.LongName);
                }

                propertyHelpStringBuilder.AppendFormat("{0}[{1}]", LikeTabSeparator, argumentInfo.ArgumentType.Name.ToLower());

                if (!string.IsNullOrWhiteSpace(argumentInfo.Description))
                {
                    propertyHelpStringBuilder.AppendFormat("{0}{1}", LikeTabSeparator, argumentInfo.Description);
                }

                if (argumentInfo.ArgumentType.IsEnum)
                {
                    var values = Enum.GetNames(argumentInfo.ArgumentType);
                    propertyHelpStringBuilder.AppendFormat(
                        " [values: {0}]",
                        string.Join(",", values));
                }

                if (argumentInfo.DefaultValue != null)
                {
                    propertyHelpStringBuilder.AppendFormat(" [default: {0}]", argumentInfo.DefaultValue);
                }

                Output.WriteInfo(propertyHelpStringBuilder.ToString());
            }

            return(ReturnCode.Success);
        }