public void WriteParams(IndentedTextWriter writer, OperationAnalyzer analyzer, SimplePropertyInfo spi, Param paramCustomization)
 {
     // replace the enum type with a string param instead and convert to enum member on execution
     writer.WriteLine("/// <summary>");
     writer.WriteLine("/// Specifies the HTTP verb to be used. The allowable verbs are GET, PUT, HEAD and DELETE.");
     writer.WriteLine("/// Not all verbs may be accepted by the service operation; check service documentation for details.");
     writer.WriteLine("/// If not specified, the default verb is GET.");
     writer.WriteLine("/// </summary>");
     if (spi.IsRecursivelyRequired && spi.DefaultValue == null)
     {
         writer.WriteLine("#if !MODULAR");
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
         writer.WriteLine("#else");
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)]");
         if (spi.PropertyType == typeof(string))
         {
             writer.WriteLine("[System.Management.Automation.AllowEmptyString]");
         }
         writer.WriteLine("#endif");
         writer.WriteLine("[Amazon.PowerShell.Common.AWSRequiredParameter]");
     }
     else
     {
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
     }
     writer.WriteLine("public String {0} {{ get; set; }}", spi.CmdletParameterName);
 }
Exemple #2
0
 public void WriteParams(IndentedTextWriter writer, OperationAnalyzer analyzer, SimplePropertyInfo spi, Param param)
 {
     writer.WriteLine(DocumentationUtils.CommentDocumentation(spi.MemberDocumentation /*FlattenedDocumentation*/));
     CmdletSourceWriter.WriteParamAttribute(writer, analyzer, spi, param);
     CmdletSourceWriter.WriteParamAliases(writer, analyzer, spi);
     writer.WriteLine("public object[] {0} {{ get; set; }}", spi.CmdletParameterName);
 }
 public void WriteParams(IndentedTextWriter writer, OperationAnalyzer analyzer, SimplePropertyInfo spi, Param paramCustomization)
 {
     // replace the enum type with a string param instead and convert to enum member on execution
     writer.WriteLine("/// <summary>");
     writer.WriteLine("/// Specifies the protocol that will be used. Allowable values are 'HTTP' and 'HTTPS'.");
     writer.WriteLine("/// </summary>");
     if (spi.IsRecursivelyRequired && spi.DefaultValue == null)
     {
         writer.WriteLine("#if !MODULAR");
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
         writer.WriteLine("#else");
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true, Mandatory = true)]");
         if (spi.PropertyType == typeof(string))
         {
             writer.WriteLine("[System.Management.Automation.AllowEmptyString]");
         }
         writer.WriteLine("#endif");
         writer.WriteLine("[Amazon.PowerShell.Common.AWSRequiredParameter]");
     }
     else
     {
         writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
     }
     writer.WriteLine("public String {0} {{ get; set; }}", spi.CmdletParameterName);
 }
 private void RegisterAnalyzer(OperationBlockStartAnalysisContext context, CompilationSecurityTypes types, Version frameworkVersion)
 {
     var analyzer = new OperationAnalyzer(types, frameworkVersion);
     context.RegisterOperationAction(
         analyzer.AnalyzeOperation,
         OperationKind.InvocationExpression,
         OperationKind.AssignmentExpression,
         OperationKind.VariableDeclaration,
         OperationKind.ObjectCreationExpression,
         OperationKind.FieldInitializerAtDeclaration
     );
     context.RegisterOperationBlockEndAction(
         analyzer.AnalyzeOperationBlock
     );
 }
Exemple #5
0
        private void RegisterAnalyzer(OperationBlockStartAnalysisContext context, CompilationSecurityTypes types, Version frameworkVersion)
        {
            var analyzer = new OperationAnalyzer(types, frameworkVersion);

            context.RegisterOperationAction(
                analyzer.AnalyzeOperation,
                OperationKind.Invocation,
                OperationKind.SimpleAssignment,
                OperationKind.VariableDeclaration,
                OperationKind.ObjectCreation,
                OperationKind.FieldInitializer
                );
            context.RegisterOperationBlockEndAction(
                analyzer.AnalyzeOperationBlock
                );
        }
        private static string GetReturnTypeComment(OperationAnalyzer operationAnalyzer)
        {
            var returnType = operationAnalyzer.ReturnType;

            if (returnType != null)
            {
                var allOutputProperties = returnType
                                          .GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)
                                          .ToArray();

                var returnTypeFields = "";
                if (returnType.Namespace.StartsWith("Amazon.") && allOutputProperties.Any())
                {
                    returnTypeFields = $" {{{Environment.NewLine}            {string.Join($";{Environment.NewLine}            ", allOutputProperties.Select(property => $"{OperationAnalyzer.FormatTypeName(property.PropertyType)} {property.Name}"))} }}";
                }

                return($"Operation result type: {OperationAnalyzer.FormatTypeName(returnType)}{returnTypeFields}.");
            }

            return(null);
        }
        public void WriteParams(IndentedTextWriter writer, OperationAnalyzer analyzer, SimplePropertyInfo spi, ServiceConfig.Param param)
        {
            // for S3StorageClass, we replace the enum type with two string switches instead
            writer.WriteLine("/// <summary>");
            writer.WriteLine("/// Specifies the STANDARD storage class, which is the default storage class for S3 objects.");
            writer.WriteLine("/// Provides a 99.999999999% durability guarantee.");
            writer.WriteLine("/// </summary>");
            writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
            writer.WriteLine("public SwitchParameter StandardStorage { get; set; }");
            writer.WriteLine();

            writer.WriteLine("/// <summary>");
            writer.WriteLine("/// Specifies S3 should use REDUCED_REDUNDANCY storage class for the object. This");
            writer.WriteLine("/// provides a reduced (99.99%) durability guarantee at a lower");
            writer.WriteLine("/// cost as compared to the STANDARD storage class. Use this");
            writer.WriteLine("/// storage class for non-mission critical data or for data");
            writer.WriteLine("/// that doesn’t require the higher level of durability that S3");
            writer.WriteLine("/// provides with the STANDARD storage class.");
            writer.WriteLine("/// </summary>");
            writer.WriteLine("[System.Management.Automation.Parameter(ValueFromPipelineByPropertyName = true)]");
            writer.WriteLine("public SwitchParameter ReducedRedundancyStorage { get; set; }");
        }
        private static string GetParameterCommentForReport(Generators.SimplePropertyInfo property, OperationAnalyzer operationAnalyzer)
        {
            var comment = new StringBuilder();

            comment.Append($" {property.PropertyTypeName} {property.AnalyzedName}");
            if (property.AnalyzedName != property.CmdletParameterName)
            {
                comment.Append($" as {property.CmdletParameterName}");
                var aliases = operationAnalyzer.GetAllParameterAliases(property);
                if (aliases.Any())
                {
                    comment.Append($" (aliases: {string.Join(", ", aliases)})");
                }
            }
            if (property.IsRecursivelyRequired)
            {
                comment.Append(" [required]");
            }
            return(comment.ToString());
        }