aws-sdk-code-generator 0.1.0.pre → 0.2.0.pre

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. checksums.yaml +5 -5
  2. data/lib/aws-sdk-code-generator.rb +68 -75
  3. data/lib/aws-sdk-code-generator/api.rb +130 -0
  4. data/lib/aws-sdk-code-generator/apply_docs.rb +15 -2
  5. data/lib/aws-sdk-code-generator/client_constructor.rb +39 -0
  6. data/lib/aws-sdk-code-generator/client_operation_documentation.rb +268 -0
  7. data/lib/aws-sdk-code-generator/client_operation_list.rb +148 -0
  8. data/lib/aws-sdk-code-generator/client_response_structure_example.rb +108 -0
  9. data/lib/aws-sdk-code-generator/code_builder.rb +146 -133
  10. data/lib/aws-sdk-code-generator/crosslink.rb +42 -0
  11. data/lib/aws-sdk-code-generator/docstring.rb +199 -0
  12. data/lib/aws-sdk-code-generator/error_list.rb +77 -0
  13. data/lib/aws-sdk-code-generator/errors.rb +2 -0
  14. data/lib/aws-sdk-code-generator/eventstream_example.rb +220 -0
  15. data/lib/aws-sdk-code-generator/gem_builder.rb +19 -25
  16. data/lib/aws-sdk-code-generator/hash_formatter.rb +5 -2
  17. data/lib/aws-sdk-code-generator/helper.rb +77 -61
  18. data/lib/aws-sdk-code-generator/plugin_list.rb +146 -0
  19. data/lib/aws-sdk-code-generator/resource_action.rb +69 -0
  20. data/lib/aws-sdk-code-generator/resource_action_code.rb +57 -0
  21. data/lib/aws-sdk-code-generator/resource_association.rb +37 -0
  22. data/lib/aws-sdk-code-generator/resource_attribute.rb +76 -0
  23. data/lib/aws-sdk-code-generator/resource_batch_action.rb +56 -0
  24. data/lib/aws-sdk-code-generator/resource_batch_action_code.rb +136 -0
  25. data/lib/aws-sdk-code-generator/resource_batch_action_documentation.rb +108 -0
  26. data/lib/aws-sdk-code-generator/resource_batch_builder.rb +212 -0
  27. data/lib/aws-sdk-code-generator/resource_builder.rb +48 -0
  28. data/lib/aws-sdk-code-generator/resource_client_request.rb +62 -0
  29. data/lib/aws-sdk-code-generator/resource_client_request_documentation.rb +81 -0
  30. data/lib/aws-sdk-code-generator/resource_client_request_params.rb +86 -0
  31. data/lib/aws-sdk-code-generator/resource_data_method.rb +60 -0
  32. data/lib/aws-sdk-code-generator/resource_has_association.rb +117 -0
  33. data/lib/aws-sdk-code-generator/resource_has_many_association.rb +52 -0
  34. data/lib/aws-sdk-code-generator/resource_has_many_association_code.rb +76 -0
  35. data/lib/aws-sdk-code-generator/resource_identifier.rb +44 -0
  36. data/lib/aws-sdk-code-generator/resource_identifiers_method.rb +29 -0
  37. data/lib/aws-sdk-code-generator/resource_load_method.rb +68 -0
  38. data/lib/aws-sdk-code-generator/resource_method.rb +22 -0
  39. data/lib/aws-sdk-code-generator/resource_skip_params.rb +36 -0
  40. data/lib/aws-sdk-code-generator/resource_value_source.rb +68 -0
  41. data/lib/aws-sdk-code-generator/resource_waiter.rb +80 -0
  42. data/lib/aws-sdk-code-generator/service.rb +30 -7
  43. data/lib/aws-sdk-code-generator/shared_example.rb +131 -0
  44. data/lib/aws-sdk-code-generator/syntax_example.rb +60 -0
  45. data/lib/aws-sdk-code-generator/syntax_example_hash.rb +174 -0
  46. data/lib/aws-sdk-code-generator/underscore.rb +10 -5
  47. data/lib/aws-sdk-code-generator/view.rb +33 -0
  48. data/lib/aws-sdk-code-generator/views.rb +2 -0
  49. data/lib/aws-sdk-code-generator/views/apig_endpoint_class.rb +25 -0
  50. data/lib/aws-sdk-code-generator/views/apig_readme.rb +32 -0
  51. data/lib/aws-sdk-code-generator/views/async_client_class.rb +68 -0
  52. data/lib/aws-sdk-code-generator/views/authorizer_class.rb +17 -0
  53. data/lib/aws-sdk-code-generator/views/client_api_module.rb +583 -0
  54. data/lib/aws-sdk-code-generator/views/client_class.rb +93 -0
  55. data/lib/aws-sdk-code-generator/views/docstring.rb +27 -0
  56. data/lib/aws-sdk-code-generator/views/errors_module.rb +32 -0
  57. data/lib/aws-sdk-code-generator/views/event_streams_module.rb +149 -0
  58. data/lib/aws-sdk-code-generator/views/features/env.rb +9 -0
  59. data/lib/aws-sdk-code-generator/views/features/smoke.rb +51 -0
  60. data/lib/aws-sdk-code-generator/views/features/smoke_step_definitions.rb +26 -0
  61. data/lib/aws-sdk-code-generator/views/features/step_definitions.rb +2 -0
  62. data/lib/aws-sdk-code-generator/views/gemspec.rb +39 -5
  63. data/lib/aws-sdk-code-generator/views/resource_class.rb +122 -0
  64. data/lib/aws-sdk-code-generator/views/root_resource_class.rb +58 -0
  65. data/lib/aws-sdk-code-generator/views/service_module.rb +30 -14
  66. data/lib/aws-sdk-code-generator/views/spec/spec_helper.rb +9 -0
  67. data/lib/aws-sdk-code-generator/views/types_module.rb +294 -0
  68. data/lib/aws-sdk-code-generator/views/version.rb +2 -0
  69. data/lib/aws-sdk-code-generator/views/waiters_module.rb +37 -0
  70. data/lib/aws-sdk-code-generator/waiter.rb +95 -0
  71. data/lib/aws-sdk-code-generator/yard_option_tag.rb +43 -0
  72. metadata +61 -68
  73. data/lib/aws-sdk-code-generator/dsl/access_control_statement.rb +0 -23
  74. data/lib/aws-sdk-code-generator/dsl/attribute_accessor.rb +0 -43
  75. data/lib/aws-sdk-code-generator/dsl/attribute_reader.rb +0 -11
  76. data/lib/aws-sdk-code-generator/dsl/attribute_writer.rb +0 -11
  77. data/lib/aws-sdk-code-generator/dsl/autoload_statement.rb +0 -15
  78. data/lib/aws-sdk-code-generator/dsl/block_param.rb +0 -11
  79. data/lib/aws-sdk-code-generator/dsl/class.rb +0 -27
  80. data/lib/aws-sdk-code-generator/dsl/code_literal.rb +0 -66
  81. data/lib/aws-sdk-code-generator/dsl/code_object.rb +0 -33
  82. data/lib/aws-sdk-code-generator/dsl/docstring.rb +0 -36
  83. data/lib/aws-sdk-code-generator/dsl/eigenclass.rb +0 -15
  84. data/lib/aws-sdk-code-generator/dsl/extend_statement.rb +0 -12
  85. data/lib/aws-sdk-code-generator/dsl/formatter.rb +0 -25
  86. data/lib/aws-sdk-code-generator/dsl/include_statement.rb +0 -17
  87. data/lib/aws-sdk-code-generator/dsl/main.rb +0 -105
  88. data/lib/aws-sdk-code-generator/dsl/method.rb +0 -108
  89. data/lib/aws-sdk-code-generator/dsl/module.rb +0 -167
  90. data/lib/aws-sdk-code-generator/dsl/option_tag.rb +0 -36
  91. data/lib/aws-sdk-code-generator/dsl/param.rb +0 -43
  92. data/lib/aws-sdk-code-generator/dsl/param_list.rb +0 -38
  93. data/lib/aws-sdk-code-generator/dsl/return_tag.rb +0 -19
  94. data/lib/aws-sdk-code-generator/dsl/tag_default.rb +0 -20
  95. data/lib/aws-sdk-code-generator/dsl/tag_docstring.rb +0 -27
  96. data/lib/aws-sdk-code-generator/dsl/tag_type.rb +0 -18
  97. data/lib/aws-sdk-code-generator/generators/client_api_module.rb +0 -334
  98. data/lib/aws-sdk-code-generator/generators/client_class.rb +0 -389
  99. data/lib/aws-sdk-code-generator/generators/client_operation_documentation.rb +0 -166
  100. data/lib/aws-sdk-code-generator/generators/errors_module.rb +0 -25
  101. data/lib/aws-sdk-code-generator/generators/resource/action.rb +0 -88
  102. data/lib/aws-sdk-code-generator/generators/resource/batch_builder.rb +0 -211
  103. data/lib/aws-sdk-code-generator/generators/resource/builder.rb +0 -50
  104. data/lib/aws-sdk-code-generator/generators/resource/client_getter.rb +0 -15
  105. data/lib/aws-sdk-code-generator/generators/resource/client_request.rb +0 -49
  106. data/lib/aws-sdk-code-generator/generators/resource/client_request_docs.rb +0 -97
  107. data/lib/aws-sdk-code-generator/generators/resource/client_request_params.rb +0 -88
  108. data/lib/aws-sdk-code-generator/generators/resource/collection_class.rb +0 -180
  109. data/lib/aws-sdk-code-generator/generators/resource/data_attribute_getter.rb +0 -24
  110. data/lib/aws-sdk-code-generator/generators/resource/data_loaded_method.rb +0 -18
  111. data/lib/aws-sdk-code-generator/generators/resource/data_method.rb +0 -49
  112. data/lib/aws-sdk-code-generator/generators/resource/exists_method.rb +0 -29
  113. data/lib/aws-sdk-code-generator/generators/resource/extract_identifier_method.rb +0 -32
  114. data/lib/aws-sdk-code-generator/generators/resource/has_association.rb +0 -101
  115. data/lib/aws-sdk-code-generator/generators/resource/has_many_association.rb +0 -108
  116. data/lib/aws-sdk-code-generator/generators/resource/identifier_getter.rb +0 -26
  117. data/lib/aws-sdk-code-generator/generators/resource/identifiers_method.rb +0 -28
  118. data/lib/aws-sdk-code-generator/generators/resource/initialize_method.rb +0 -67
  119. data/lib/aws-sdk-code-generator/generators/resource/load_method.rb +0 -65
  120. data/lib/aws-sdk-code-generator/generators/resource/value_source.rb +0 -68
  121. data/lib/aws-sdk-code-generator/generators/resource/waiter_method.rb +0 -61
  122. data/lib/aws-sdk-code-generator/generators/resource_class.rb +0 -325
  123. data/lib/aws-sdk-code-generator/generators/response_structure_example.rb +0 -83
  124. data/lib/aws-sdk-code-generator/generators/root_resource_class.rb +0 -42
  125. data/lib/aws-sdk-code-generator/generators/service_documentation.rb +0 -64
  126. data/lib/aws-sdk-code-generator/generators/shared_example.rb +0 -132
  127. data/lib/aws-sdk-code-generator/generators/structure_type_class.rb +0 -95
  128. data/lib/aws-sdk-code-generator/generators/syntax_example.rb +0 -169
  129. data/lib/aws-sdk-code-generator/generators/types_module.rb +0 -52
  130. data/lib/aws-sdk-code-generator/generators/waiter_class.rb +0 -62
  131. data/lib/aws-sdk-code-generator/generators/waiters_module.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: cd7b6eb0cfae166558e734fdb8e7c9236f7f14d6
4
- data.tar.gz: 8cad3f3e2213a13d558259216831b08e1e4d5323
2
+ SHA256:
3
+ metadata.gz: 4894f20ce7d85b716b2c70eb94ab224ae37262f9b325fec17fe45529cd0cf2fa
4
+ data.tar.gz: 5c0547128fce67627df4e291d97b6fd9a05eb7cd8e09431ba3ca5594dc5c5192
5
5
  SHA512:
6
- metadata.gz: c970544cd6c87e3794260f4dda931f717c9e7ef9dfb43693b35c0d22f0a3b1ec850b3ff281b7e9e825591905a2a45b19168337521c8039c2e648db3e66b1d525
7
- data.tar.gz: 6a927656fc80f7df13cc27c03f1675a81fb3f000bcec4b6fb3ba6d672ad1e37a74296ccaff8b37137e3ce4912780bf1a1818f4b7c03e13ca3b8781f9a7375ade
6
+ metadata.gz: 7857e3fd7e22f68d17cd4c9cff65e9d80f9e8e0bd526b2c4395bbf2d9f2f215f83694a56179844b46d7f9e302f2fb4eb90dbb810b182e4f001428ba0e3ba9fa5
7
+ data.tar.gz: 7c41c3cac485f1a10305f987db7861051d32fcd9f34eac72f32ec1ec0da9e157c5c00ddb302772d5ff8affc9eb8b51b1213492751084758a31fd6b40a9aa8714
@@ -1,91 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'aws-sdk-code-generator/api'
1
4
  require_relative 'aws-sdk-code-generator/apply_docs'
5
+ require_relative 'aws-sdk-code-generator/client_constructor'
6
+ require_relative 'aws-sdk-code-generator/client_operation_documentation'
7
+ require_relative 'aws-sdk-code-generator/client_operation_list'
8
+ require_relative 'aws-sdk-code-generator/error_list'
9
+ require_relative 'aws-sdk-code-generator/client_response_structure_example'
10
+ require_relative 'aws-sdk-code-generator/crosslink'
11
+ require_relative 'aws-sdk-code-generator/docstring'
12
+ require_relative 'aws-sdk-code-generator/hash_formatter'
2
13
  require_relative 'aws-sdk-code-generator/helper'
14
+ require_relative 'aws-sdk-code-generator/plugin_list'
15
+ require_relative 'aws-sdk-code-generator/resource_action'
16
+ require_relative 'aws-sdk-code-generator/resource_action_code'
17
+ require_relative 'aws-sdk-code-generator/resource_association'
18
+ require_relative 'aws-sdk-code-generator/resource_attribute'
19
+ require_relative 'aws-sdk-code-generator/resource_batch_action'
20
+ require_relative 'aws-sdk-code-generator/resource_batch_action_code'
21
+ require_relative 'aws-sdk-code-generator/resource_batch_action_documentation'
22
+ require_relative 'aws-sdk-code-generator/resource_batch_builder'
23
+ require_relative 'aws-sdk-code-generator/resource_builder'
24
+ require_relative 'aws-sdk-code-generator/resource_client_request'
25
+ require_relative 'aws-sdk-code-generator/resource_client_request_documentation'
26
+ require_relative 'aws-sdk-code-generator/resource_client_request_params'
27
+ require_relative 'aws-sdk-code-generator/resource_data_method'
28
+ require_relative 'aws-sdk-code-generator/resource_has_association'
29
+ require_relative 'aws-sdk-code-generator/resource_has_many_association'
30
+ require_relative 'aws-sdk-code-generator/resource_has_many_association_code'
31
+ require_relative 'aws-sdk-code-generator/resource_identifier'
32
+ require_relative 'aws-sdk-code-generator/resource_identifiers_method'
33
+ require_relative 'aws-sdk-code-generator/resource_load_method'
34
+ require_relative 'aws-sdk-code-generator/resource_method'
35
+ require_relative 'aws-sdk-code-generator/resource_skip_params'
36
+ require_relative 'aws-sdk-code-generator/resource_value_source'
37
+ require_relative 'aws-sdk-code-generator/resource_waiter'
3
38
  require_relative 'aws-sdk-code-generator/service'
39
+ require_relative 'aws-sdk-code-generator/shared_example'
40
+ require_relative 'aws-sdk-code-generator/eventstream_example'
41
+ require_relative 'aws-sdk-code-generator/syntax_example'
42
+ require_relative 'aws-sdk-code-generator/syntax_example_hash'
4
43
  require_relative 'aws-sdk-code-generator/underscore'
5
44
  require_relative 'aws-sdk-code-generator/view'
6
-
7
- require_relative 'aws-sdk-code-generator/code_builder'
8
- require_relative 'aws-sdk-code-generator/gem_builder'
9
-
10
- # views
45
+ require_relative 'aws-sdk-code-generator/views/client_api_module'
46
+ require_relative 'aws-sdk-code-generator/views/client_class'
47
+ require_relative 'aws-sdk-code-generator/views/async_client_class'
48
+ require_relative 'aws-sdk-code-generator/views/docstring'
49
+ require_relative 'aws-sdk-code-generator/views/errors_module'
11
50
  require_relative 'aws-sdk-code-generator/views/features/env'
12
51
  require_relative 'aws-sdk-code-generator/views/features/step_definitions'
52
+ require_relative 'aws-sdk-code-generator/views/features/smoke_step_definitions'
53
+ require_relative 'aws-sdk-code-generator/views/features/smoke'
13
54
  require_relative 'aws-sdk-code-generator/views/gemspec'
55
+ require_relative 'aws-sdk-code-generator/views/resource_class'
56
+ require_relative 'aws-sdk-code-generator/views/root_resource_class'
14
57
  require_relative 'aws-sdk-code-generator/views/service_module'
15
58
  require_relative 'aws-sdk-code-generator/views/spec/spec_helper'
59
+ require_relative 'aws-sdk-code-generator/views/types_module'
60
+ require_relative 'aws-sdk-code-generator/views/event_streams_module'
61
+ require_relative 'aws-sdk-code-generator/views/authorizer_class'
62
+ require_relative 'aws-sdk-code-generator/views/apig_endpoint_class'
63
+ require_relative 'aws-sdk-code-generator/views/apig_readme'
16
64
  require_relative 'aws-sdk-code-generator/views/version'
65
+ require_relative 'aws-sdk-code-generator/views/waiters_module'
66
+ require_relative 'aws-sdk-code-generator/waiter'
67
+ require_relative 'aws-sdk-code-generator/yard_option_tag'
17
68
 
18
- module AwsSdkCodeGenerator
19
-
20
- autoload :Errors, 'aws-sdk-code-generator/errors'
21
- autoload :HashFormatter, 'aws-sdk-code-generator/hash_formatter'
22
- autoload :Helper, 'aws-sdk-code-generator/helper'
23
-
24
- module Dsl
25
- autoload :AccessControlStatement, 'aws-sdk-code-generator/dsl/access_control_statement'
26
- autoload :AutoloadStatement, 'aws-sdk-code-generator/dsl/autoload_statement'
27
- autoload :AttributeAccessor, 'aws-sdk-code-generator/dsl/attribute_accessor'
28
- autoload :AttributeReader, 'aws-sdk-code-generator/dsl/attribute_reader'
29
- autoload :AttributeWriter, 'aws-sdk-code-generator/dsl/attribute_writer'
30
- autoload :BlockParam, 'aws-sdk-code-generator/dsl/block_param'
31
- autoload :Class, 'aws-sdk-code-generator/dsl/class'
32
- autoload :CodeLiteral, 'aws-sdk-code-generator/dsl/code_literal'
33
- autoload :CodeObject, 'aws-sdk-code-generator/dsl/code_object'
34
- autoload :Docstring, 'aws-sdk-code-generator/dsl/docstring'
35
- autoload :Eigenclass, 'aws-sdk-code-generator/dsl/eigenclass'
36
- autoload :ExtendStatement, 'aws-sdk-code-generator/dsl/extend_statement'
37
- autoload :IncludeStatement, 'aws-sdk-code-generator/dsl/include_statement'
38
- autoload :Main, 'aws-sdk-code-generator/dsl/main'
39
- autoload :Method, 'aws-sdk-code-generator/dsl/method'
40
- autoload :Module, 'aws-sdk-code-generator/dsl/module'
41
- autoload :OptionTag, 'aws-sdk-code-generator/dsl/option_tag'
42
- autoload :Param, 'aws-sdk-code-generator/dsl/param'
43
- autoload :ParamList, 'aws-sdk-code-generator/dsl/param_list'
44
- autoload :ReturnTag, 'aws-sdk-code-generator/dsl/return_tag'
45
- autoload :TagDocstring, 'aws-sdk-code-generator/dsl/tag_docstring'
46
- autoload :TagDefault, 'aws-sdk-code-generator/dsl/tag_default'
47
- autoload :TagType, 'aws-sdk-code-generator/dsl/tag_type'
48
- end
69
+ # Public interfaces
70
+ require_relative 'aws-sdk-code-generator/code_builder'
71
+ require_relative 'aws-sdk-code-generator/gem_builder'
49
72
 
50
- module Generators
51
- autoload :ClientApiModule, 'aws-sdk-code-generator/generators/client_api_module'
52
- autoload :ClientClass, 'aws-sdk-code-generator/generators/client_class'
53
- autoload :ClientOperationDocumentation, 'aws-sdk-code-generator/generators/client_operation_documentation'
54
- autoload :ErrorsModule, 'aws-sdk-code-generator/generators/errors_module'
55
- autoload :TypesModule, 'aws-sdk-code-generator/generators/types_module'
56
- autoload :RootResourceClass, 'aws-sdk-code-generator/generators/root_resource_class'
57
- autoload :ResourceClass, 'aws-sdk-code-generator/generators/resource_class'
58
- autoload :ResponseStructureExample, 'aws-sdk-code-generator/generators/response_structure_example'
59
- autoload :ServiceDocumentation, 'aws-sdk-code-generator/generators/service_documentation'
60
- autoload :SharedExample, 'aws-sdk-code-generator/generators/shared_example'
61
- autoload :StructureTypeClass, 'aws-sdk-code-generator/generators/structure_type_class'
62
- autoload :SyntaxExample, 'aws-sdk-code-generator/generators/syntax_example'
63
- autoload :WaiterClass, 'aws-sdk-code-generator/generators/waiter_class'
64
- autoload :WaitersModule, 'aws-sdk-code-generator/generators/waiters_module'
73
+ module AwsSdkCodeGenerator
65
74
 
66
- module Resource
67
- autoload :Action, 'aws-sdk-code-generator/generators/resource/action'
68
- autoload :BatchBuilder, 'aws-sdk-code-generator/generators/resource/batch_builder'
69
- autoload :Builder, 'aws-sdk-code-generator/generators/resource/builder'
70
- autoload :ClientGetter, 'aws-sdk-code-generator/generators/resource/client_getter'
71
- autoload :ClientRequest, 'aws-sdk-code-generator/generators/resource/client_request'
72
- autoload :ClientRequestParams, 'aws-sdk-code-generator/generators/resource/client_request_params'
73
- autoload :ClientRequestDocs, 'aws-sdk-code-generator/generators/resource/client_request_docs'
74
- autoload :CollectionClass, 'aws-sdk-code-generator/generators/resource/collection_class'
75
- autoload :DataMethod, 'aws-sdk-code-generator/generators/resource/data_method'
76
- autoload :DataAttributeGetter, 'aws-sdk-code-generator/generators/resource/data_attribute_getter'
77
- autoload :DataLoadedMethod, 'aws-sdk-code-generator/generators/resource/data_loaded_method'
78
- autoload :ExistsMethod, 'aws-sdk-code-generator/generators/resource/exists_method'
79
- autoload :ExtractIdentifierMethod, 'aws-sdk-code-generator/generators/resource/extract_identifier_method'
80
- autoload :HasAssociation, 'aws-sdk-code-generator/generators/resource/has_association'
81
- autoload :HasManyAssociation, 'aws-sdk-code-generator/generators/resource/has_many_association'
82
- autoload :InitializeMethod, 'aws-sdk-code-generator/generators/resource/initialize_method'
83
- autoload :IdentifiersMethod, 'aws-sdk-code-generator/generators/resource/identifiers_method'
84
- autoload :IdentifierGetter, 'aws-sdk-code-generator/generators/resource/identifier_getter'
85
- autoload :LoadMethod, 'aws-sdk-code-generator/generators/resource/load_method'
86
- autoload :ValueSource, 'aws-sdk-code-generator/generators/resource/value_source'
87
- autoload :WaiterMethod, 'aws-sdk-code-generator/generators/resource/waiter_method'
88
- end
89
- end
75
+ GENERATED_SRC_WARNING = <<-WARNING_TXT
76
+ # WARNING ABOUT GENERATED CODE
77
+ #
78
+ # This file is generated. See the contributing guide for more information:
79
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
80
+ #
81
+ # WARNING ABOUT GENERATED CODE
82
+ WARNING_TXT
90
83
 
91
84
  end
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwsSdkCodeGenerator
4
+ module Api
5
+ class << self
6
+
7
+ # @param [Hash, String] shape_or_shape_ref
8
+ # @param [Hash, String] api
9
+ # @return [String, nil]
10
+ def docstring(shape_or_shape_ref, api)
11
+ ref, shape = resolve(shape_or_shape_ref, api)
12
+ # APIG models, downcase shape name in origin or "__" prefix in origin
13
+ # code-gen shape name might have been changed (upcased_first/lstrip_prefix/both),
14
+ # when shape cannot be located with current shape name, try to resolve shape with
15
+ # (downcase_fist/apig_prefix/both) original names
16
+ if shape.nil?
17
+ ref, shape = resolve(AwsSdkCodeGenerator::Helper.downcase_first(shape_or_shape_ref), api)
18
+ if shape.nil?
19
+ ref, shape = resolve(AwsSdkCodeGenerator::Helper.apig_prefix(shape_or_shape_ref), api)
20
+ if shape.nil?
21
+ ref, shape = resolve(AwsSdkCodeGenerator::Helper.apig_prefix(downcase_first(shape_or_shape_ref)), api)
22
+ end
23
+ end
24
+ end
25
+ ref['documentation'] || shape['documentation']
26
+ end
27
+
28
+ # @param [Hash, String] shape_or_shape_ref
29
+ # @param [Hash, String] api
30
+ # @return [Hash<ShapeRef>, Hash<Shape>]
31
+ def resolve(shape_or_shape_ref, api)
32
+ if String === shape_or_shape_ref
33
+ [{}, api['shapes'][shape_or_shape_ref]]
34
+ elsif shape_or_shape_ref['type']
35
+ [{}, shape_or_shape_ref]
36
+ else
37
+ [shape_or_shape_ref, api['shapes'][shape_or_shape_ref['shape']]]
38
+ end
39
+ end
40
+
41
+ # @param [String, Hash] shape_name_or_ref
42
+ # @return [Hash]
43
+ def shape(shape_name_or_ref, api)
44
+ case shape_name_or_ref
45
+ when Hash then api.fetch('shapes').fetch(shape_name_or_ref.fetch('shape'))
46
+ when String then api.fetch('shapes').fetch(shape_name_or_ref)
47
+ end
48
+ end
49
+
50
+ def ruby_input_type(shape_ref, api, options = {})
51
+ nested = options.fetch(:nested, false)
52
+ _, shape = resolve(shape_ref, api)
53
+ case shape['type']
54
+ when 'byte' then 'Integer<byte>'
55
+ when 'blob' then 'String, IO'
56
+ when 'boolean' then 'Boolean'
57
+ when 'character' then 'String<character>'
58
+ when 'double' then 'Float'
59
+ when 'float' then 'Float'
60
+ when 'integer' then 'Integer'
61
+ when 'list'
62
+ if nested
63
+ "Array"
64
+ else
65
+ "Array<#{ruby_input_type(shape['member'], api, nested: true)}>"
66
+ end
67
+ when 'long' then 'Integer'
68
+ when 'map'
69
+ if nested
70
+ "Hash"
71
+ else
72
+ "Hash<String,#{ruby_input_type(shape['value'], api, nested: true)}>"
73
+ end
74
+ when 'string' then 'String'
75
+ when 'structure' then "Types::#{shape_ref['shape']}"
76
+ when 'timestamp' then 'Time,DateTime,Date,Integer,String'
77
+ else
78
+ raise "unhandled type #{shape.type}.inspect"
79
+ end
80
+ end
81
+
82
+ def ruby_type(shape_ref, api)
83
+ _, shape = resolve(shape_ref, api)
84
+ case shape['type']
85
+ when 'blob' then streaming?(shape_ref, api) ? 'IO' : 'String'
86
+ when 'boolean' then 'Boolean'
87
+ when 'byte' then 'Integer<byte>'
88
+ when 'character' then 'String<character>'
89
+ when 'double' then 'Float'
90
+ when 'float' then 'Float'
91
+ when 'integer' then 'Integer'
92
+ when 'list' then "Array<#{ruby_type(shape['member'], api)}>"
93
+ when 'long' then 'Integer'
94
+ when 'map' then "Hash<String,#{ruby_type(shape['value'], api)}>"
95
+ when 'string' then streaming?(shape_ref, api) ? 'IO' : 'String'
96
+ when 'structure' then "Types::#{shape_ref['shape']}"
97
+ when 'timestamp' then 'Time'
98
+ else
99
+ raise "unhandled type #{shape['type'].inspect}"
100
+ end
101
+ end
102
+
103
+ # @return [Boolean]
104
+ def streaming?(shape_or_shape_ref, api)
105
+ ref, shape = resolve(shape_or_shape_ref, api)
106
+ ref['streaming'] || shape['streaming'] ||
107
+ ref['eventstream'] || shape['eventstream']
108
+ end
109
+
110
+ # @return [Boolean]
111
+ def eventstream?(shape_or_shape_ref, api)
112
+ ref, shape = resolve(shape_or_shape_ref, api)
113
+ ref['eventstream'] || shape['eventstream']
114
+ end
115
+
116
+ def plural?(resource)
117
+ plural = false
118
+ (resource['identifiers'] || []).each do |i|
119
+ if i['path'] && i['path'].include?('[]')
120
+ plural = true
121
+ break
122
+ end
123
+ end
124
+ plural = true if resource['data'] && resource['data'].include?('[]')
125
+ plural
126
+ end
127
+
128
+ end
129
+ end
130
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module AwsSdkCodeGenerator
2
4
  class ApplyDocs
3
5
 
@@ -17,17 +19,28 @@ module AwsSdkCodeGenerator
17
19
  def apply_docs(docs)
18
20
  @api['documentation'] = docs['service']
19
21
  docs['operations'].each do |name, docstring|
22
+ next unless @api['operations'][name]
20
23
  @api['operations'][name]['documentation'] = docstring
21
24
  end
22
25
  docs['shapes'].each do |shape_name, shape_docs|
26
+ next unless @api['shapes'][shape_name]
23
27
  @api['shapes'][shape_name]['documentation'] = shape_docs['base']
24
28
  shape_docs['refs'].each do |ref, ref_docs|
25
29
  ref_shape, ref_member = ref.split('$')
30
+ next unless @api['shapes'][ref_shape]
26
31
  case @api['shapes'][ref_shape]['type']
27
32
  when 'structure'
28
- @api['shapes'][ref_shape]['members'][ref_member]['documentation'] = ref_docs
33
+ shape = @api['shapes'][ref_shape]
34
+ if shape && shape['members']
35
+ member = shape['members'][ref_member]
36
+ member['documentation'] = ref_docs if member
37
+ end
29
38
  when 'list', 'map'
30
- @api['shapes'][ref_shape][ref_member]['documentation'] = ref_docs
39
+ shape = @api['shapes'][ref_shape]
40
+ if shape
41
+ member = shape[ref_member]
42
+ member['documentation'] = ref_docs if member
43
+ end
31
44
  end
32
45
  end
33
46
  end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwsSdkCodeGenerator
4
+ class ClientConstructor
5
+
6
+ # @option options [required, PluginList] :plugins
7
+ def initialize(options)
8
+ plugin_options = documented_plugin_options(options.fetch(:plugins))
9
+ documentation = {}
10
+ plugin_options.each do |option|
11
+ documentation[option.name] = YardOptionTag.new(
12
+ name: option.name,
13
+ required: option.required,
14
+ ruby_type: option.doc_type,
15
+ default_value: option.doc_default(options),
16
+ docstring: option.docstring,
17
+ indent: " "
18
+ ).to_s
19
+ end
20
+ @documentation = Docstring.join_docstrings(documentation.values, block_comment: false)
21
+ end
22
+
23
+ # @return [String]
24
+ attr_reader :documentation
25
+
26
+ private
27
+
28
+ def documented_plugin_options(plugins)
29
+ i = 0
30
+ plugins.map(&:options).flatten.select(&:documented?).sort_by do |opt|
31
+ # Stable sort, first required options, then sort by name, then if
32
+ # two plugins of the same name, use an incrementer.
33
+ # options.fetch(:plugins) will be ordered.
34
+ [opt.required ? 'a' : 'b', opt.name, i += 1] #, opt.override ? 'b' : 'a']
35
+ end
36
+ end
37
+
38
+ end
39
+ end
@@ -0,0 +1,268 @@
1
+ # frozen_string_literal: true
2
+
3
+ module AwsSdkCodeGenerator
4
+ class ClientOperationDocumentation
5
+
6
+ # @option options [required, String] :method_name
7
+ # @option options [required, Hash] :operation
8
+ # @option options [required, Hash] :api
9
+ # @option options [Array<Hash>] :examples
10
+ def initialize(options)
11
+ @name = options.fetch(:name)
12
+ @method_name = options.fetch(:method_name)
13
+ @operation = options.fetch(:operation)
14
+ @api = options.fetch(:api)
15
+ @client_examples = options.fetch(:client_examples, [])
16
+ @examples = options.fetch(:examples)
17
+ @module_name = options.fetch(:module_name)
18
+ @async_client = options[:async_client] || false
19
+ @pager = options[:pager]
20
+ @waiters = options[:waiters]
21
+ end
22
+
23
+ # @return [String]
24
+ attr_reader :method_name
25
+
26
+ # @return [String]
27
+ attr_reader :module_name
28
+
29
+ # @return [Hash]
30
+ attr_reader :operation
31
+
32
+ # @return [Hash]
33
+ attr_reader :api
34
+
35
+ # @return [Array<Hash>]
36
+ attr_reader :examples
37
+
38
+ # @return [Array<Hash>]
39
+ attr_reader :client_examples
40
+
41
+ # @return [Hash]
42
+ attr_reader :pager
43
+
44
+ # @return [String]
45
+ def to_str
46
+ Docstring.join_docstrings([
47
+ docstring(operation),
48
+ response_target_tag(operation, api),
49
+ option_tags(operation, api),
50
+ return_tag(operation, api),
51
+ pagination(pager, operation, api),
52
+ generated_examples(operation, api),
53
+ eventstream_examples(module_name, method_name, operation, api),
54
+ shared_examples(examples, operation, api),
55
+ given_examples(client_examples),
56
+ @async_client ? async_request_syntax_example(method_name, operation, api)
57
+ : request_syntax_example(method_name, operation, api),
58
+ response_structure_example(operation, api),
59
+ waiters_tag(@waiters),
60
+ see_also_tag(operation, api),
61
+ ], block_comment: false)
62
+ end
63
+ alias to_s to_str
64
+
65
+ private
66
+
67
+ def docstring(operation)
68
+ Docstring.block_comment(
69
+ Docstring.html_to_markdown(operation['documentation'])
70
+ )
71
+ end
72
+
73
+ def response_target_tag(operation, api)
74
+ if output = Api.shape(operation['output'], api)
75
+ if output['payload'] && output['members'][output['payload']]['streaming']
76
+ YardOptionTag.new(
77
+ name: 'response_target',
78
+ ruby_type: 'String, IO',
79
+ option_hash_name: 'params',
80
+ required: false,
81
+ docstring: 'Where to write response data, file path, or IO object.'
82
+ ).to_s
83
+ end
84
+ end
85
+ end
86
+
87
+ def option_tags(operation, api)
88
+ if operation['input']
89
+ shape = Api.shape(operation['input'], api)
90
+ return if shape['members'].nil?
91
+ shape['members'].map do |member_name, member_ref|
92
+ next if member_ref['documented'] === false
93
+ # input eventstream is not provided by params
94
+ member_shape = Api.shape(member_ref['shape'], api)
95
+ next if member_shape['eventstream'] === true
96
+ docstring = Api.docstring(member_ref, api)
97
+ if member_ref['idempotencyToken']
98
+ docstring = docstring.to_s + "<p><b>A suitable default value is auto-generated.** You should normally not need to pass this option.</b></p>"
99
+ end
100
+ if member_ref['jsonvalue']
101
+ docstring = docstring.to_s + "<p><b>SDK automatically handles json encoding and base64 encoding for you when the required value (Hash, Array, etc.) is provided according to the description.</b></p>"
102
+ end
103
+ YardOptionTag.new(
104
+ name: Underscore.underscore(member_name),
105
+ ruby_type: Api.ruby_input_type(member_ref, api),
106
+ required: shape.fetch('required', []).include?(member_name),
107
+ docstring: Docstring.html_to_markdown(docstring),
108
+ option_hash_name: 'params',
109
+ ).to_s
110
+ end
111
+ else
112
+ []
113
+ end
114
+ end
115
+
116
+ def return_tag(operation, api)
117
+ output = Api.shape(operation['output'], api)
118
+ if output && output['members'] && output['members'].size > 0
119
+ shape_name = operation.fetch('output').fetch('shape')
120
+ type = "Types::#{shape_name}"
121
+ _, shape = Api.resolve(shape_name, api)
122
+ # add rest body streaming if qualified
123
+ unless shape['payload'].nil?
124
+ _, member_shape = Api.resolve(shape['payload'], api)
125
+ unless member_shape.nil?
126
+ member_shape['streaming'] = member_shape['type'] == 'blob' ||
127
+ member_shape['type'] == 'string'
128
+ end
129
+ end
130
+ methods = shape['members'].map do |member_name, member_ref|
131
+ member_type = Docstring.escape_html(Api.ruby_type(member_ref, api))
132
+ method_name = Underscore.underscore(member_name)
133
+ "# * {#{type}##{method_name} ##{method_name}} => #{member_type}"
134
+ end
135
+ "# @return [#{type}] Returns a {Seahorse::Client::Response response} object which responds to the following methods:\n#\n" + methods.join("\n")
136
+ else
137
+ "# @return [Struct] Returns an empty {Seahorse::Client::Response response}."
138
+ end
139
+ end
140
+
141
+ def pagination(pager, operation, api)
142
+ return unless pager
143
+
144
+ input = Array(pager['input_token'])
145
+ output = Array(pager['output_token'])
146
+ tokens = {}
147
+ input.each.with_index do |key, n|
148
+ tokens[Underscore.underscore_jmespath(output[n])] = Underscore.underscore_jmespath(key)
149
+ end
150
+
151
+ return if tokens.empty?
152
+
153
+ "# The returned {Seahorse::Client::Response response}" \
154
+ " is a pageable response and is Enumerable. For details on usage see" \
155
+ " {Aws::PageableResponse PageableResponse}."
156
+ end
157
+
158
+ def shared_examples(examples, operation, api)
159
+ return if examples.nil? || examples['examples'].nil? || examples['examples'][@name].nil?
160
+ begin # skip broken/nil examples
161
+ example_block = []
162
+ examples['examples'][@name].each do |example|
163
+ comments = example['comments']
164
+ input = SharedExample.new(
165
+ example['input'],
166
+ method_name,
167
+ operation,
168
+ api,
169
+ (comments.nil? ? '' : comments['input'])).to_str_input
170
+ parts = []
171
+ parts << "#\n"
172
+ parts << "# @example Example: #{example['title']}\n#\n"
173
+ if example['description'] && example['description'].length > 0
174
+ parts << "#{Helper.wrap_string(example['description'], 120, "# # ")}\n#\n"
175
+ end
176
+ parts += input.lines.map { |line| "# " + line }
177
+ if example['output']
178
+ output = SharedExample.new(
179
+ example['output'],
180
+ method_name,
181
+ operation,
182
+ api,
183
+ (comments.nil? ? '' : comments['output'])).to_str_output
184
+ parts << "\n#\n# resp.to_h outputs the following:\n"
185
+ parts += output.lines.map { |line| "# " + line }
186
+ end
187
+ example_block << parts.join
188
+ end
189
+ example_block.join("\n")
190
+ rescue
191
+ puts "Invalid example for operation: #{@name}"
192
+ nil
193
+ end
194
+ end
195
+
196
+ def generated_examples(operation, api)
197
+ nil
198
+ end
199
+
200
+ def eventstream_examples(module_name, method_name, operation, api)
201
+ return unless !!Helper.eventstream_output?(operation, api)
202
+ EventStreamExample.new(
203
+ api: api,
204
+ operation: operation,
205
+ method_name: method_name,
206
+ module_name: module_name,
207
+ receiver: 'client',
208
+ resp_var: 'resp'
209
+ ).format
210
+ end
211
+
212
+ def given_examples(client_examples)
213
+ client_examples.map do |example|
214
+ name = example[:name]
215
+ code = example[:code]
216
+ "# @example #{name}\n" + Docstring.block_comment(code, gap: ' ')
217
+ end
218
+ end
219
+
220
+ def request_syntax_example(method_name, operation, api)
221
+ SyntaxExample.new(
222
+ api: api,
223
+ shape: Api.shape(operation['input'], api),
224
+ method_name: method_name,
225
+ receiver: 'client',
226
+ resp_var: 'resp',
227
+ ).format
228
+ end
229
+
230
+ def async_request_syntax_example(method_name, operation, api)
231
+ SyntaxExample.new(
232
+ api: api,
233
+ shape: Api.shape(operation['input'], api),
234
+ method_name: method_name,
235
+ receiver: 'async_client',
236
+ resp_var: 'async_resp',
237
+ async: true
238
+ ).format
239
+ end
240
+
241
+ def response_structure_example(operation, api)
242
+ output = Api.shape(operation['output'], api) if operation['output']
243
+ if output && output['members'] && output['members'].size > 0
244
+ Docstring.block_comment(ClientResponseStructureExample.new(
245
+ shape_ref: operation['output'],
246
+ api: api
247
+ ).to_s)
248
+ end
249
+ end
250
+
251
+ def waiters_tag(waiters)
252
+ return unless waiters && waiters.size > 0
253
+
254
+ waiters_doc = waiters.map do |w|
255
+ "# * #{w.name}"
256
+ end
257
+ "#\n# The following waiters are defined for this operation (see {Client#wait_until} for detailed usage):\n#\n" + waiters_doc.join("\n")
258
+ end
259
+
260
+ def see_also_tag(operation, api)
261
+ uid = api['metadata']['uid']
262
+ if api['metadata']['protocol'] != 'api-gateway' && Crosslink.taggable?(uid)
263
+ "# " + Crosslink.tag_string(uid, operation['name'])
264
+ end
265
+ end
266
+
267
+ end
268
+ end