gapic-generator 0.6.1 → 0.6.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b063888cabf4893087dcefa274cb8ab5a9469a762fc3dbb34af2e143cb1bcce4
4
- data.tar.gz: 589dc9fdf67d63dc25fe62537783e6305e4441f51b5caa2c94a5b1a161e71ab7
3
+ metadata.gz: 78e591a0a5e9a24086ccfcf3227d7fe20dd2c0732f6ff7e4230b81ee48d0bcb6
4
+ data.tar.gz: 48b3b285796cd0bc3452ebf15797a8a1c54941aa79e4781588abc7f90b3aee8a
5
5
  SHA512:
6
- metadata.gz: 07a03fd0adcc1640a37fa334883838aee76c124d2e5380a00d540751b3740e1b0f13d82a981ab35297c095df38620a0895bf4bb7bb5dbf1421c659e71cd92e85
7
- data.tar.gz: 10269fc5c70542e1ae9ee1471eb6365c1669c741aa1ac03dbaf3b652cec2aee14801717589d1c45febc554b280cd8cd178ac19e02b1224b2692d1e98324142f6
6
+ metadata.gz: 2095d8bd87701b4b229a4f7c3c4ec2623a76b9c11c076068c5653d084881c68c44f23e96c9310f329bd2f64d3a91dd929a10656a1b19677e125d6555e70105cf
7
+ data.tar.gz: faeb9756320e9863dcede6634bd03c6024798871e3c8ebf083c65eb3bc917933806365d292303b436088b3371c43e86c5992e2cd1fdfed7465cd3f22e7562468
@@ -1,5 +1,12 @@
1
1
  # Release History for gapic-generator
2
2
 
3
+ ### 0.6.2 / 2020-06-18
4
+
5
+ * Support for the proto3_optional
6
+ * Fixed an issue where tests for the oneof fields were not generating correctly
7
+ * Removed ruby <2.5 pin for the protobuf dependency since new protobuf supports it again
8
+ * Generated libraries now depend on gapic-common 0.3
9
+
3
10
  ### 0.6.1 / 2020-06-16
4
11
 
5
12
  * Add auto-generated disclaimer to generated tests.
@@ -30,7 +30,7 @@ COPY --from=gcr.io/gapic-images/api-common-protos:beta /protos/ /workspace/commo
30
30
  COPY --from=builder /workspace/*.gem /workspace/
31
31
 
32
32
  # Install the subgenerator and other needed tools.
33
- RUN gem install grpc-tools gapic-generator-<%= gem_name %>.gem \
33
+ RUN gem install --pre grpc-tools gapic-generator-<%= gem_name %>.gem \
34
34
  && rm gapic-generator-<%= gem_name %>.gem \
35
35
  && mkdir -p --mode=777 /.cache
36
36
 
@@ -16,6 +16,7 @@ done
16
16
 
17
17
  mkdir -p /workspace/out/lib
18
18
  exec grpc_tools_ruby_protoc \
19
+ --experimental_allow_proto3_optional=1 \
19
20
  --proto_path=/workspace/common-protos/ --proto_path=/workspace/in/ \
20
21
  --ruby_out=/workspace/out/lib \
21
22
  --grpc_out=/workspace/out/lib \
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Gapic
18
18
  module Generator
19
- VERSION = "0.6.1"
19
+ VERSION = "0.6.2"
20
20
  end
21
21
  end
@@ -80,6 +80,10 @@ module Gapic
80
80
  @field.enum?
81
81
  end
82
82
 
83
+ def proto3_optional?
84
+ @field.proto3_optional?
85
+ end
86
+
83
87
  def repeated?
84
88
  @field.repeated?
85
89
  end
@@ -88,6 +92,14 @@ module Gapic
88
92
  @field.map?
89
93
  end
90
94
 
95
+ def oneof?
96
+ @field.oneof?
97
+ end
98
+
99
+ def oneof_name
100
+ @message.oneof_decl[@field.oneof_index].name
101
+ end
102
+
91
103
  protected
92
104
 
93
105
  def field_doc_types field, output
@@ -174,7 +174,7 @@ module Gapic
174
174
  end
175
175
 
176
176
  def dependencies
177
- deps = { "gapic-common" => "~> 0.2" }
177
+ deps = { "gapic-common" => "~> 0.3" }
178
178
  deps["grpc-google-iam-v1"] = [">= 0.6.10", "< 2.0"] if iam_dependency?
179
179
  extra_deps = gem_config :extra_dependencies
180
180
  deps.merge! extra_deps if extra_deps
@@ -92,6 +92,11 @@ module Gapic
92
92
  have_oneof = []
93
93
 
94
94
  @method.input.fields.each do |field|
95
+ unless field.oneof?
96
+ selected_fields << field
97
+ next
98
+ end
99
+
95
100
  idx = field.oneof_index
96
101
  selected_fields << field unless have_oneof.include? idx
97
102
  have_oneof << idx
@@ -48,8 +48,10 @@ module Gapic
48
48
  output_files = generator.new(api).generate
49
49
 
50
50
  # Create and write the response
51
- Google::Protobuf::Compiler::CodeGeneratorResponse.new \
51
+ response = Google::Protobuf::Compiler::CodeGeneratorResponse.new \
52
52
  file: output_files
53
+ response.supported_features = Google::Protobuf::Compiler::CodeGeneratorResponse::FEATURE_PROTO3_OPTIONAL
54
+ response
53
55
  end
54
56
 
55
57
  # Run protoc generation.
@@ -655,6 +655,15 @@ module Gapic
655
655
  field_behavior.include? Google::Api::FieldBehavior::OPTIONAL
656
656
  end
657
657
 
658
+ # Denotes a field as a part of oneof.
659
+ # oneof_index is an int field so it'll be 0 by default for every field
660
+ # and an index in the message's oneof table for the oneof fields
661
+ # but since the indexes in the message's oneof table start with 0 as well
662
+ # we need this to determine whether the field is a part of the oneof
663
+ def oneof?
664
+ @descriptor.field? :oneof_index
665
+ end
666
+
658
667
  # Denotes a field as required. This indicates that the field **must** be
659
668
  # provided as part of the request, and failure to do so will cause an
660
669
  # error (usually `INVALID_ARGUMENT`).
@@ -731,7 +740,8 @@ module Gapic
731
740
  :default_value,
732
741
  :oneof_index,
733
742
  :json_name,
734
- :options
743
+ :options,
744
+ :proto3_optional?
735
745
  )
736
746
  end
737
747
 
@@ -1,7 +1,8 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  ##
4
- # This file is auto-generated. DO NOT EDIT!
4
+ # This file was auto-generated initially but now is hand-edited to add support
5
+ # for response features and proto3_optional
5
6
  #
6
7
  require 'protobuf'
7
8
 
@@ -54,6 +55,8 @@ module Google
54
55
  end
55
56
 
56
57
  class CodeGeneratorResponse
58
+ FEATURE_PROTO3_OPTIONAL = 1
59
+
57
60
  class File
58
61
  optional :string, :name, 1
59
62
  optional :string, :insertion_point, 2
@@ -61,6 +64,7 @@ module Google
61
64
  end
62
65
 
63
66
  optional :string, :error, 1
67
+ optional :int32, :supported_features, 2
64
68
  repeated ::Google::Protobuf::Compiler::CodeGeneratorResponse::File, :file, 15
65
69
  end
66
70
 
@@ -190,6 +190,7 @@ module Google
190
190
  optional :int32, :oneof_index, 9
191
191
  optional :string, :json_name, 10
192
192
  optional ::Google::Protobuf::FieldOptions, :options, 8
193
+ optional :bool, :proto3_optional, 17
193
194
  end
194
195
 
195
196
  class OneofDescriptorProto
@@ -2,6 +2,3 @@
2
2
  source "https://rubygems.org"
3
3
 
4
4
  gemspec
5
-
6
- # google-protobuf 3.12.0 requires Ruby 2.5 or later, so pin to 3.11 on older Rubies
7
- gem "google-protobuf", (RUBY_VERSION < "2.5" ? "~> 3.11.4" : "~> 3.12")
@@ -93,6 +93,12 @@ def test_<%= method.name %>
93
93
  <%- else -%>
94
94
  assert_equal <%= field.default_value %>, r.<%= field.name %>
95
95
  <%- end -%>
96
+ <%- if field.oneof? && !field.proto3_optional? -%>
97
+ assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
98
+ <%- end -%>
99
+ <%- if field.proto3_optional? -%>
100
+ assert r.has_<%= field.name %>?
101
+ <%- end -%>
96
102
  <%- end -%>
97
103
  end
98
104
  end
@@ -77,6 +77,12 @@ def test_<%= method.name %>
77
77
  <%- else -%>
78
78
  assert_equal <%= field.default_value %>, r.<%= field.name %>
79
79
  <%- end -%>
80
+ <%- if field.oneof? && !field.proto3_optional? -%>
81
+ assert_equal :<%= field.name %>, r.<%= field.oneof_name %>
82
+ <%- end -%>
83
+ <%- if field.proto3_optional? -%>
84
+ assert r.has_<%= field.name %>?
85
+ <%- end -%>
80
86
  <%- end -%>
81
87
  end
82
88
  end
@@ -26,6 +26,12 @@ def test_<%= method.name %>
26
26
  <%- else -%>
27
27
  assert_equal <%= field.default_value %>, request.<%= field.name %>
28
28
  <%- end -%>
29
+ <%- if field.oneof? && !field.proto3_optional? -%>
30
+ assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
31
+ <%- end -%>
32
+ <%- if field.proto3_optional? -%>
33
+ assert request.has_<%= field.name %>?
34
+ <%- end -%>
29
35
  <%- end -%>
30
36
  refute_nil options
31
37
  end
@@ -24,6 +24,12 @@ def test_<%= method.name %>
24
24
  <%- else -%>
25
25
  assert_equal <%= field.default_value %>, request.<%= field.name %>
26
26
  <%- end -%>
27
+ <%- if field.oneof? && !field.proto3_optional? -%>
28
+ assert_equal :<%= field.name %>, request.<%= field.oneof_name %>
29
+ <%- end -%>
30
+ <%- if field.proto3_optional? -%>
31
+ assert request.has_<%= field.name %>?
32
+ <%- end -%>
27
33
  <%- end -%>
28
34
  refute_nil options
29
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gapic-generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ernest Landrito
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-06-18 00:00:00.000000000 Z
13
+ date: 2020-06-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -74,14 +74,14 @@ dependencies:
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.19'
77
+ version: 1.30.0.pre1
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '1.19'
84
+ version: 1.30.0.pre1
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: minitest
87
87
  requirement: !ruby/object:Gem::Requirement