protobuf_descriptor 1.0.0 → 1.1.0
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 +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +6 -0
- data/.yardopts +1 -1
- data/ChangeLog.rdoc +12 -0
- data/README.md +61 -0
- data/Rakefile +114 -0
- data/lib/protobuf_descriptor/enum_descriptor.rb +17 -11
- data/lib/protobuf_descriptor/enum_value_descriptor.rb +29 -0
- data/lib/protobuf_descriptor/field_descriptor.rb +80 -0
- data/lib/protobuf_descriptor/file_descriptor.rb +37 -17
- data/lib/protobuf_descriptor/has_children.rb +49 -0
- data/lib/protobuf_descriptor/has_parent.rb +42 -0
- data/lib/protobuf_descriptor/message_descriptor.rb +20 -104
- data/lib/protobuf_descriptor/method_descriptor.rb +54 -0
- data/lib/protobuf_descriptor/named_child.rb +7 -0
- data/lib/protobuf_descriptor/service_descriptor.rb +9 -61
- data/lib/protobuf_descriptor/version.rb +1 -1
- data/lib/protobuf_descriptor.rb +20 -5
- data/protobuf_descriptor.gemspec +3 -2
- data/spec/field_descriptor_spec.rb +1 -1
- data/spec/file_descriptor_spec.rb +0 -1
- data/spec/method_descriptor_spec.rb +1 -1
- data/spec/protobuf_descriptor_spec.rb +3 -3
- data/spec/protoc_generator_spec.rb +6 -9
- data/spec/protos/custom_options/custom_options.proto +53 -0
- data/spec/protos/custom_options/google/protobuf/descriptor.proto +620 -0
- data/spec/protos/custom_options.desc +0 -0
- data/spec/protos/custom_options.java.zip +0 -0
- data/spec/protos/custom_options.wire.zip +0 -0
- data/spec/protos/generator_test.desc +24 -0
- data/spec/protos/generator_test.java.zip +0 -0
- data/spec/protos/generator_test.wire.zip +0 -0
- data/spec/protos/service_rpc_test.desc +71 -0
- data/spec/protos/service_rpc_test.java.zip +0 -0
- data/spec/protos/service_rpc_test.wire.zip +0 -0
- data/spec/protos/single_file_test.desc +0 -0
- data/spec/protos/single_file_test.java.zip +0 -0
- data/spec/protos/single_file_test.wire.zip +0 -0
- data/spec/protos/source_info/foo.proto +59 -0
- data/spec/protos/source_info.desc +22 -0
- data/spec/protos/source_info.java.zip +0 -0
- data/spec/protos/source_info.srcinfo.desc +0 -0
- data/spec/protos/source_info.wire.zip +0 -0
- data/spec/service_descriptor_spec.rb +1 -1
- data/spec/source_code_info_spec.rb +57 -0
- data/spec/spec_helper.rb +29 -57
- data/spec/wire_generator_spec.rb +6 -11
- metadata +69 -11
- data/Gemfile.lock +0 -58
- data/README.rdoc +0 -51
@@ -0,0 +1,71 @@
|
|
1
|
+
|
2
|
+
�
|
3
|
+
#wearabouts_api/multiple_files.protoWearaboutsApi.MultipleFiles"
|
4
|
+
Icon
|
5
|
+
|
6
|
+
id (*
|
7
|
+
IconEnum
|
8
|
+
FOOB$
|
9
|
+
us.wearabouts.chatabout.multipleP
|
10
|
+
�
|
11
|
+
&wearabouts_api/outer_class_proto.protoWearaboutsApi.OuterClassProto"
|
12
|
+
Icon
|
13
|
+
|
14
|
+
id (*
|
15
|
+
IconEnum
|
16
|
+
FOOB/
|
17
|
+
us.wearabouts.chatabout.outerBOuterClassName
|
18
|
+
�
|
19
|
+
wearabouts_api/user.protoWearaboutsApi.Userwearabouts_pb.proto"T
|
20
|
+
AuthenticateRequest
|
21
|
+
email (
|
22
|
+
phone (
|
23
|
+
device_id (
|
24
|
+
name ( "�
|
25
|
+
AuthenticateResponse%
|
26
|
+
user (2.WearaboutsPb.UserProto2
|
27
|
+
device_link (2.WearaboutsPb.DeviceLinkProto
|
28
|
+
|
29
|
+
auth_token ( "
|
30
|
+
MeRequest"g
|
31
|
+
|
32
|
+
MeResponse%
|
33
|
+
user (2.WearaboutsPb.UserProto2
|
34
|
+
device_link (2.WearaboutsPb.DeviceLinkProto"!
|
35
|
+
UpdateNameRequest
|
36
|
+
name ( ";
|
37
|
+
UpdateNameResponse%
|
38
|
+
user (2.WearaboutsPb.UserProto2�
|
39
|
+
UserServicea
|
40
|
+
Authenticate'.WearaboutsApi.User.AuthenticateRequest(.WearaboutsApi.User.AuthenticateResponseC
|
41
|
+
Me.WearaboutsApi.User.MeRequest.WearaboutsApi.User.MeResponse[
|
42
|
+
|
43
|
+
UpdateName%.WearaboutsApi.User.UpdateNameRequest&.WearaboutsApi.User.UpdateNameResponseB$
|
44
|
+
"us.wearabouts.chatabout.proto.user
|
45
|
+
�
|
46
|
+
wearabouts_pb.protoWearaboutsPb"�
|
47
|
+
UserProto
|
48
|
+
|
49
|
+
id ( 9
|
50
|
+
user_details (2#.WearaboutsPb.UserProto.UserDetails9
|
51
|
+
UserDetails
|
52
|
+
email (
|
53
|
+
phone (
|
54
|
+
name ( "N
|
55
|
+
ConversationProto
|
56
|
+
|
57
|
+
id ( -
|
58
|
+
participants (2.WearaboutsPb.UserProto"�
|
59
|
+
PostProto
|
60
|
+
|
61
|
+
id ( *
|
62
|
+
kind (2.WearaboutsPb.PostProto.Kind
|
63
|
+
textd (
|
64
|
+
audio_url� ( "
|
65
|
+
Kind
|
66
|
+
TEXT
|
67
|
+
AUDIO"6
|
68
|
+
DeviceLinkProto
|
69
|
+
device_id (
|
70
|
+
verified (B
|
71
|
+
us.wearabouts.chatabout.proto
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,59 @@
|
|
1
|
+
package foo;
|
2
|
+
|
3
|
+
// Test message for Bar
|
4
|
+
message Bar {
|
5
|
+
// Test message for NestedEnum
|
6
|
+
enum NestedEnum {
|
7
|
+
// Test message for VALUE_TWO
|
8
|
+
VALUE_TWO = 1;
|
9
|
+
}
|
10
|
+
|
11
|
+
// Test message for NestedBar
|
12
|
+
message NestedBar {
|
13
|
+
// Test message for NestedNestedEnum
|
14
|
+
enum NestedNestedEnum {
|
15
|
+
// Test message for VALUE_THREE
|
16
|
+
VALUE_THREE = 1;
|
17
|
+
}
|
18
|
+
// Test message for foo
|
19
|
+
required NestedNestedEnum foo = 1;
|
20
|
+
}
|
21
|
+
|
22
|
+
optional int32 foo = 1; // Comment attached to foo.
|
23
|
+
// Comment attached to bar.
|
24
|
+
optional int32 bar = 2;
|
25
|
+
|
26
|
+
optional string baz = 3;
|
27
|
+
// Comment attached to baz.
|
28
|
+
// Another line attached to baz.
|
29
|
+
|
30
|
+
// Comment attached to qux.
|
31
|
+
//
|
32
|
+
// Another line attached to qux.
|
33
|
+
optional double qux = 4;
|
34
|
+
|
35
|
+
optional string corge = 5;
|
36
|
+
/* Block comment attached
|
37
|
+
* to corge. Leading asterisks
|
38
|
+
* will be removed. */
|
39
|
+
/* Block comment attached to
|
40
|
+
* grault. */
|
41
|
+
optional int32 grault = 6;
|
42
|
+
}
|
43
|
+
// Comment attached to Bar
|
44
|
+
|
45
|
+
// Comment for FooService
|
46
|
+
service FooService {
|
47
|
+
/* Comment for Baz
|
48
|
+
* Maybe comments on return types.
|
49
|
+
*/
|
50
|
+
rpc Baz(Bar) returns (Bar);
|
51
|
+
// Trailing comment for Baz
|
52
|
+
}
|
53
|
+
// Comment attached to FooService
|
54
|
+
|
55
|
+
// Comment for BaseEnum
|
56
|
+
enum BaseEnum {
|
57
|
+
// Comment for VALUE_ONE
|
58
|
+
VALUE_ONE = 1;
|
59
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
�
|
3
|
+
foo.protofoo"�
|
4
|
+
Bar
|
5
|
+
foo (
|
6
|
+
bar (
|
7
|
+
baz (
|
8
|
+
qux (
|
9
|
+
corge (
|
10
|
+
grault (b
|
11
|
+
NestedBar0
|
12
|
+
foo (2#.foo.Bar.NestedBar.NestedNestedEnum"#
|
13
|
+
NestedNestedEnum
|
14
|
+
VALUE_THREE"
|
15
|
+
|
16
|
+
NestedEnum
|
17
|
+
VALUE_TWO*
|
18
|
+
BaseEnum
|
19
|
+
VALUE_ONE2'
|
20
|
+
|
21
|
+
FooService
|
22
|
+
Baz.foo.Bar.foo.Bar
|
Binary file
|
Binary file
|
Binary file
|
@@ -6,7 +6,7 @@ describe ProtobufDescriptor::ServiceDescriptor do
|
|
6
6
|
with_descriptor("service_rpc_test") do |descriptor|
|
7
7
|
service_descriptor = descriptor["wearabouts_api/user"].services[:UserService]
|
8
8
|
expect(service_descriptor).to be_a(ProtobufDescriptor::ServiceDescriptor)
|
9
|
-
expect(service_descriptor.methods).to
|
9
|
+
expect(service_descriptor.methods.size).to eq(3)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "source_code_info" do
|
4
|
+
let(:descriptor) { load_descriptor("source_info.srcinfo") }
|
5
|
+
let(:no_info_descriptor) { load_descriptor("source_info") }
|
6
|
+
|
7
|
+
describe "with no source info" do
|
8
|
+
it "ProtobufDescriptor#has_source_code_info? returns false" do
|
9
|
+
expect(no_info_descriptor.has_source_code_info?).to eq(false)
|
10
|
+
end
|
11
|
+
|
12
|
+
it "ProtobufDescriptor::FileDescriptor#has_source_code_info? returns false" do
|
13
|
+
expect(no_info_descriptor.files.first.has_source_code_info?).to eq(false)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
it "ProtobufDescriptor#has_source_code_info? returns true" do
|
18
|
+
expect(descriptor.has_source_code_info?).to eq(true)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "ProtobufDescriptor::FileDescriptor#has_source_code_info? returns true" do
|
22
|
+
expect(descriptor.files.first.has_source_code_info?).to eq(true)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "ProtobufDescriptor::FileDescriptor#compute_source_code_info_path" do
|
26
|
+
file = descriptor["foo"]
|
27
|
+
|
28
|
+
expect(file.message_types.first.compute_source_code_info_path).to eq([4, 0])
|
29
|
+
expect(descriptor.resolve_type_name(".foo.Bar").compute_source_code_info_path).to eq([4, 0])
|
30
|
+
expect(file.enum_types.first.compute_source_code_info_path).to eq([5, 0])
|
31
|
+
expect(file.services.first.compute_source_code_info_path).to eq([6, 0])
|
32
|
+
end
|
33
|
+
|
34
|
+
it "ProtobufDescriptor::FieldDescriptor#compute_source_code_info_path" do
|
35
|
+
file = descriptor["foo"]
|
36
|
+
|
37
|
+
expect(descriptor.resolve_type_name(".foo.Bar").fields[0].compute_source_code_info_path).to eq([4, 0, 2, 0])
|
38
|
+
expect(descriptor.resolve_type_name(".foo.Bar.NestedBar").compute_source_code_info_path).to eq([4, 0, 3, 0])
|
39
|
+
expect(descriptor.resolve_type_name(".foo.Bar.NestedEnum").compute_source_code_info_path).to eq([4, 0, 4, 0])
|
40
|
+
end
|
41
|
+
|
42
|
+
it "ProtobufDescriptor::HasParent#leading_comments" do
|
43
|
+
expect(descriptor.resolve_type_name(".foo.Bar").leading_comments.strip).to eq("Test message for Bar")
|
44
|
+
expect(descriptor.resolve_type_name(".foo.Bar").fields["bar"].leading_comments.strip).to eq("Comment attached to bar.")
|
45
|
+
expect(descriptor.resolve_type_name(".foo.Bar").fields["grault"].leading_comments.strip).to eq("Block comment attached to\n grault.")
|
46
|
+
expect(descriptor.resolve_type_name(".foo.FooService").leading_comments.strip).to eq("Comment for FooService")
|
47
|
+
expect(descriptor.resolve_type_name(".foo.FooService").methods["Baz"].leading_comments.strip).to eq("Comment for Baz\n Maybe comments on return types.")
|
48
|
+
expect(descriptor.resolve_type_name(".foo.BaseEnum").leading_comments.strip).to eq("Comment for BaseEnum")
|
49
|
+
expect(descriptor.resolve_type_name(".foo.BaseEnum").values["VALUE_ONE"].leading_comments).to eq(" Comment for VALUE_ONE\n")
|
50
|
+
expect(descriptor.resolve_type_name(".foo.Bar.NestedEnum").values["VALUE_TWO"].leading_comments).to eq(" Test message for VALUE_TWO\n")
|
51
|
+
expect(descriptor.resolve_type_name(".foo.Bar.NestedBar.NestedNestedEnum").values["VALUE_THREE"].leading_comments).to eq(" Test message for VALUE_THREE\n")
|
52
|
+
end
|
53
|
+
|
54
|
+
it "ProtobufDescriptor::HasParent#trailing_comments" do
|
55
|
+
expect(descriptor.resolve_type_name(".foo.Bar").fields["foo"].trailing_comments).to eq(" Comment attached to foo.\n")
|
56
|
+
end
|
57
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,15 +1,33 @@
|
|
1
|
-
require
|
1
|
+
require "rspec"
|
2
2
|
require "protobuf_descriptor"
|
3
3
|
|
4
4
|
require "fileutils"
|
5
5
|
require "pathname"
|
6
6
|
require "tempfile"
|
7
|
+
require "tmpdir"
|
8
|
+
require "zip"
|
9
|
+
|
10
|
+
VERBOSE = false
|
7
11
|
|
8
12
|
# "Parses" a java package returning a mapping of class/enum names to their fully
|
9
13
|
# qualified name.
|
10
14
|
#
|
11
15
|
# Raises if a class name occurs twice.
|
12
16
|
def ghetto_parse_java_package(dir)
|
17
|
+
if dir.end_with?(".zip")
|
18
|
+
Dir.mktmpdir do |temp_dir|
|
19
|
+
Zip::File.open(dir) do |zip_file|
|
20
|
+
zip_file.each do |entry|
|
21
|
+
puts "Making #{temp_dir}/#{File.dirname(entry.name)}" if VERBOSE
|
22
|
+
FileUtils.mkdir_p File.join(temp_dir, File.dirname(entry.name))
|
23
|
+
puts "Extracting #{temp_dir}/#{entry.name}" if VERBOSE
|
24
|
+
entry.extract(File.join(temp_dir, entry.name))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
return ghetto_parse_java_package(temp_dir)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
13
31
|
tokens = [
|
14
32
|
# Wire enum
|
15
33
|
[:enum, /public\s+enum\s+(\w+)\s+implements\s+ProtoEnum\s+{/],
|
@@ -34,7 +52,7 @@ def ghetto_parse_java_package(dir)
|
|
34
52
|
package = contents.match(/package\s+([\w\.]+);/)
|
35
53
|
package = package[1] unless package.nil?
|
36
54
|
|
37
|
-
|
55
|
+
puts "#{filename[dir.length..-1]}: package #{package}" if VERBOSE
|
38
56
|
|
39
57
|
bits = [package]
|
40
58
|
|
@@ -64,7 +82,7 @@ def ghetto_parse_java_package(dir)
|
|
64
82
|
bits.pop
|
65
83
|
end
|
66
84
|
|
67
|
-
|
85
|
+
puts "#{token}@#{offset} #{bits.inspect}" if VERBOSE
|
68
86
|
end
|
69
87
|
end
|
70
88
|
return found
|
@@ -80,62 +98,12 @@ def with_temp_file(name="tempfile")
|
|
80
98
|
end
|
81
99
|
end
|
82
100
|
|
83
|
-
def
|
84
|
-
|
85
|
-
destination: ".",
|
86
|
-
source: ".",
|
87
|
-
extra_args: []
|
88
|
-
}.merge(args)
|
89
|
-
|
90
|
-
jar_path = File.realpath("#{File.dirname(__FILE__)}/../wire-compiler.jar")
|
91
|
-
command = ["java", "-jar", jar_path]
|
92
|
-
command << "--proto_path=#{args[:source]}"
|
93
|
-
command += args[:extra_args]
|
94
|
-
command << "--java_out=#{args[:destination]}"
|
95
|
-
command += Dir.glob("#{args[:source]}**/*.proto").map { |p|
|
96
|
-
Pathname.new(p).relative_path_from(Pathname.new(args[:source])).to_s
|
97
|
-
}
|
98
|
-
with_temp_file do |tmp_log|
|
99
|
-
rv = system(*command, out: [tmp_log.path, "a"], err: [tmp_log.path, "a"])
|
100
|
-
|
101
|
-
raise "Wire protobuf generation failed!\n#{File.read(tmp_log)}" unless rv
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def generate_protobuf_descriptor(args={})
|
106
|
-
args = {
|
107
|
-
source: ".",
|
108
|
-
extra_args: [],
|
109
|
-
plugin: nil,
|
110
|
-
plugin_out: "",
|
111
|
-
out: "out.desc"
|
112
|
-
}.merge(args)
|
113
|
-
args[:source] += '/' unless args[:source].end_with?('/')
|
114
|
-
|
115
|
-
command = []
|
116
|
-
command << "protoc"
|
117
|
-
command << "-I#{args[:source]}"
|
118
|
-
if args[:plugin]
|
119
|
-
command << "--#{args[:plugin]}_out=#{args[:plugin_out]}"
|
120
|
-
end
|
121
|
-
command += args[:extra_args]
|
122
|
-
command << "--descriptor_set_out=#{args[:out]}"
|
123
|
-
command += Dir.glob("#{args[:source]}**/*.proto")
|
124
|
-
|
125
|
-
rv = system(*command)
|
126
|
-
|
127
|
-
raise "ProtobufDescriptor generation failed!" unless rv
|
101
|
+
def with_descriptor_file(source, args={})
|
102
|
+
yield File.open("#{File.dirname(__FILE__)}/protos/#{source}.desc")
|
128
103
|
end
|
129
104
|
|
130
|
-
def
|
131
|
-
|
132
|
-
args = {
|
133
|
-
out: f.path,
|
134
|
-
source: "#{File.dirname(__FILE__)}/protos/#{source}/"
|
135
|
-
}.merge(args)
|
136
|
-
generate_protobuf_descriptor(args)
|
137
|
-
yield f
|
138
|
-
end
|
105
|
+
def find_generated_files(source, kind)
|
106
|
+
return "#{File.dirname(__FILE__)}/protos/#{source}.#{kind}.zip"
|
139
107
|
end
|
140
108
|
|
141
109
|
def with_descriptor(source, args={})
|
@@ -143,3 +111,7 @@ def with_descriptor(source, args={})
|
|
143
111
|
yield ProtobufDescriptor.decode_from(f)
|
144
112
|
end
|
145
113
|
end
|
114
|
+
|
115
|
+
def load_descriptor(source)
|
116
|
+
ProtobufDescriptor.load(File.join(File.dirname(__FILE__), "protos", "#{source}.desc"))
|
117
|
+
end
|
data/spec/wire_generator_spec.rb
CHANGED
@@ -5,19 +5,14 @@ describe "WireCompiler" do
|
|
5
5
|
# Compile the contents of the generator_tests proto dir, and then assert
|
6
6
|
# everything is where it should be.
|
7
7
|
it "computes fully-qualified class names correctly" do
|
8
|
-
|
9
|
-
|
10
|
-
# separate process:
|
11
|
-
compile_wire_protobuf(source: "#{File.dirname(__FILE__)}/protos/generator_test/", destination: dir)
|
12
|
-
generated_classes = ghetto_parse_java_package(dir)
|
8
|
+
with_descriptor("generator_test") do |descriptor|
|
9
|
+
generated_classes = ghetto_parse_java_package(find_generated_files("generator_test", :wire))
|
13
10
|
|
14
|
-
|
15
|
-
|
11
|
+
children = descriptor.all_descendants.map { |child|
|
12
|
+
[child.name, child.fully_qualified_wire_name]
|
13
|
+
}
|
16
14
|
|
17
|
-
|
18
|
-
expect(child.fully_qualified_wire_name).to eq(generated_classes[child.name])
|
19
|
-
end
|
20
|
-
end
|
15
|
+
expect(children).to contain_exactly(*generated_classes.to_a)
|
21
16
|
end
|
22
17
|
end
|
23
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: protobuf_descriptor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Hsiu-Fan Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-05-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: protobuf
|
@@ -25,19 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 3.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rubyzip
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.3
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 1.1.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.3'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: pry
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +72,14 @@ dependencies:
|
|
58
72
|
requirements:
|
59
73
|
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: 3.0.0.beta2
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: 3.0.0.beta2
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rubygems-tasks
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -104,18 +118,22 @@ files:
|
|
104
118
|
- ".document"
|
105
119
|
- ".gitignore"
|
106
120
|
- ".rspec"
|
121
|
+
- ".travis.yml"
|
107
122
|
- ".yardopts"
|
108
123
|
- ChangeLog.rdoc
|
109
124
|
- Gemfile
|
110
|
-
- Gemfile.lock
|
111
125
|
- LICENSE.txt
|
112
|
-
- README.
|
126
|
+
- README.md
|
113
127
|
- Rakefile
|
114
128
|
- lib/protobuf_descriptor.rb
|
115
129
|
- lib/protobuf_descriptor/enum_descriptor.rb
|
130
|
+
- lib/protobuf_descriptor/enum_value_descriptor.rb
|
131
|
+
- lib/protobuf_descriptor/field_descriptor.rb
|
116
132
|
- lib/protobuf_descriptor/file_descriptor.rb
|
133
|
+
- lib/protobuf_descriptor/has_children.rb
|
117
134
|
- lib/protobuf_descriptor/has_parent.rb
|
118
135
|
- lib/protobuf_descriptor/message_descriptor.rb
|
136
|
+
- lib/protobuf_descriptor/method_descriptor.rb
|
119
137
|
- lib/protobuf_descriptor/named_child.rb
|
120
138
|
- lib/protobuf_descriptor/named_collection.rb
|
121
139
|
- lib/protobuf_descriptor/service_descriptor.rb
|
@@ -128,16 +146,36 @@ files:
|
|
128
146
|
- spec/method_descriptor_spec.rb
|
129
147
|
- spec/protobuf_descriptor_spec.rb
|
130
148
|
- spec/protoc_generator_spec.rb
|
149
|
+
- spec/protos/custom_options.desc
|
150
|
+
- spec/protos/custom_options.java.zip
|
151
|
+
- spec/protos/custom_options.wire.zip
|
152
|
+
- spec/protos/custom_options/custom_options.proto
|
153
|
+
- spec/protos/custom_options/google/protobuf/descriptor.proto
|
154
|
+
- spec/protos/generator_test.desc
|
155
|
+
- spec/protos/generator_test.java.zip
|
156
|
+
- spec/protos/generator_test.wire.zip
|
131
157
|
- spec/protos/generator_test/aaa.proto
|
132
158
|
- spec/protos/generator_test/foo/aab.proto
|
133
159
|
- spec/protos/generator_test/java_package.proto
|
134
160
|
- spec/protos/generator_test/outer_class_name.proto
|
161
|
+
- spec/protos/service_rpc_test.desc
|
162
|
+
- spec/protos/service_rpc_test.java.zip
|
163
|
+
- spec/protos/service_rpc_test.wire.zip
|
135
164
|
- spec/protos/service_rpc_test/wearabouts_api/multiple_files.proto
|
136
165
|
- spec/protos/service_rpc_test/wearabouts_api/outer_class_proto.proto
|
137
166
|
- spec/protos/service_rpc_test/wearabouts_api/user.proto
|
138
167
|
- spec/protos/service_rpc_test/wearabouts_pb.proto
|
168
|
+
- spec/protos/single_file_test.desc
|
169
|
+
- spec/protos/single_file_test.java.zip
|
170
|
+
- spec/protos/single_file_test.wire.zip
|
139
171
|
- spec/protos/single_file_test/single_file.proto
|
172
|
+
- spec/protos/source_info.desc
|
173
|
+
- spec/protos/source_info.java.zip
|
174
|
+
- spec/protos/source_info.srcinfo.desc
|
175
|
+
- spec/protos/source_info.wire.zip
|
176
|
+
- spec/protos/source_info/foo.proto
|
140
177
|
- spec/service_descriptor_spec.rb
|
178
|
+
- spec/source_code_info_spec.rb
|
141
179
|
- spec/spec_helper.rb
|
142
180
|
- spec/wire_generator_spec.rb
|
143
181
|
homepage: https://github.com/hfwang/protobuf_descriptor
|
@@ -172,15 +210,35 @@ test_files:
|
|
172
210
|
- spec/method_descriptor_spec.rb
|
173
211
|
- spec/protobuf_descriptor_spec.rb
|
174
212
|
- spec/protoc_generator_spec.rb
|
213
|
+
- spec/protos/custom_options.desc
|
214
|
+
- spec/protos/custom_options.java.zip
|
215
|
+
- spec/protos/custom_options.wire.zip
|
216
|
+
- spec/protos/custom_options/custom_options.proto
|
217
|
+
- spec/protos/custom_options/google/protobuf/descriptor.proto
|
218
|
+
- spec/protos/generator_test.desc
|
219
|
+
- spec/protos/generator_test.java.zip
|
220
|
+
- spec/protos/generator_test.wire.zip
|
175
221
|
- spec/protos/generator_test/aaa.proto
|
176
222
|
- spec/protos/generator_test/foo/aab.proto
|
177
223
|
- spec/protos/generator_test/java_package.proto
|
178
224
|
- spec/protos/generator_test/outer_class_name.proto
|
225
|
+
- spec/protos/service_rpc_test.desc
|
226
|
+
- spec/protos/service_rpc_test.java.zip
|
227
|
+
- spec/protos/service_rpc_test.wire.zip
|
179
228
|
- spec/protos/service_rpc_test/wearabouts_api/multiple_files.proto
|
180
229
|
- spec/protos/service_rpc_test/wearabouts_api/outer_class_proto.proto
|
181
230
|
- spec/protos/service_rpc_test/wearabouts_api/user.proto
|
182
231
|
- spec/protos/service_rpc_test/wearabouts_pb.proto
|
232
|
+
- spec/protos/single_file_test.desc
|
233
|
+
- spec/protos/single_file_test.java.zip
|
234
|
+
- spec/protos/single_file_test.wire.zip
|
183
235
|
- spec/protos/single_file_test/single_file.proto
|
236
|
+
- spec/protos/source_info.desc
|
237
|
+
- spec/protos/source_info.java.zip
|
238
|
+
- spec/protos/source_info.srcinfo.desc
|
239
|
+
- spec/protos/source_info.wire.zip
|
240
|
+
- spec/protos/source_info/foo.proto
|
184
241
|
- spec/service_descriptor_spec.rb
|
242
|
+
- spec/source_code_info_spec.rb
|
185
243
|
- spec/spec_helper.rb
|
186
244
|
- spec/wire_generator_spec.rb
|
data/Gemfile.lock
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
protobuf_descriptor (0.1.0)
|
5
|
-
activesupport (>= 3.0.0)
|
6
|
-
protobuf (~> 3.0.0)
|
7
|
-
|
8
|
-
GEM
|
9
|
-
remote: https://rubygems.org/
|
10
|
-
specs:
|
11
|
-
activesupport (4.1.0)
|
12
|
-
i18n (~> 0.6, >= 0.6.9)
|
13
|
-
json (~> 1.7, >= 1.7.7)
|
14
|
-
minitest (~> 5.1)
|
15
|
-
thread_safe (~> 0.1)
|
16
|
-
tzinfo (~> 1.1)
|
17
|
-
coderay (1.1.0)
|
18
|
-
diff-lcs (1.2.5)
|
19
|
-
i18n (0.6.9)
|
20
|
-
json (1.8.1)
|
21
|
-
method_source (0.8.2)
|
22
|
-
middleware (0.1.0)
|
23
|
-
minitest (5.3.3)
|
24
|
-
multi_json (1.9.2)
|
25
|
-
protobuf (3.0.4)
|
26
|
-
activesupport (>= 3.2)
|
27
|
-
middleware
|
28
|
-
multi_json
|
29
|
-
thor
|
30
|
-
pry (0.9.12.6)
|
31
|
-
coderay (~> 1.0)
|
32
|
-
method_source (~> 0.8)
|
33
|
-
slop (~> 3.4)
|
34
|
-
rspec (2.14.1)
|
35
|
-
rspec-core (~> 2.14.0)
|
36
|
-
rspec-expectations (~> 2.14.0)
|
37
|
-
rspec-mocks (~> 2.14.0)
|
38
|
-
rspec-core (2.14.8)
|
39
|
-
rspec-expectations (2.14.5)
|
40
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
41
|
-
rspec-mocks (2.14.6)
|
42
|
-
rubygems-tasks (0.2.4)
|
43
|
-
slop (3.5.0)
|
44
|
-
thor (0.19.1)
|
45
|
-
thread_safe (0.3.3)
|
46
|
-
tzinfo (1.1.0)
|
47
|
-
thread_safe (~> 0.1)
|
48
|
-
yard (0.8.7.4)
|
49
|
-
|
50
|
-
PLATFORMS
|
51
|
-
ruby
|
52
|
-
|
53
|
-
DEPENDENCIES
|
54
|
-
protobuf_descriptor!
|
55
|
-
pry (~> 0.9.12.6)
|
56
|
-
rspec (~> 2.4)
|
57
|
-
rubygems-tasks (~> 0.2)
|
58
|
-
yard (~> 0.8)
|
data/README.rdoc
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
= protobuf_descriptor
|
2
|
-
|
3
|
-
* {Homepage}[https://rubygems.org/gems/protobuf_descriptor]
|
4
|
-
* {Documentation}[http://rubydoc.info/github/hfwang/protobuf_descriptor/master/frames]
|
5
|
-
|
6
|
-
== Description
|
7
|
-
|
8
|
-
Protobuf_descriptor provides helper methods to make working with Google Protocol
|
9
|
-
Buffer descriptors easier, go figure.. It handles type resolution, and computing
|
10
|
-
type names (both within protocol buffers and in the generated output).
|
11
|
-
|
12
|
-
== Examples
|
13
|
-
|
14
|
-
Given the +descriptor.desc+ generated by the protocol buffer compiler, you
|
15
|
-
can introspect the various data types. This example references the descriptor
|
16
|
-
that would be generated by compiling
|
17
|
-
{single_file.proto}[https://github.com/hfwang/protobuf_descriptor/blob/master/spec/protos/single_file_test/single_file.proto]
|
18
|
-
|
19
|
-
require 'protobuf_descriptor'
|
20
|
-
descriptor = ProtobufDescriptor.load("descriptor.desc")
|
21
|
-
|
22
|
-
# Load a single file by its filename/basename
|
23
|
-
file_descriptor = descriptor[:single_file]
|
24
|
-
|
25
|
-
# Grab a handle to an enum, or a message
|
26
|
-
file_descriptor.messages[:FieldOptions]
|
27
|
-
file_descriptor.enums[:UnnestedEnum]
|
28
|
-
|
29
|
-
# Also allows resolving types by their fully qualified name:
|
30
|
-
descriptor.resolve_type(".porkbuns.UnnestedEnum") # note the leading "."
|
31
|
-
# or even doing so relative to another enum
|
32
|
-
descriptor.resolve_type("CType", ".porkbuns.FieldOptions")
|
33
|
-
|
34
|
-
For even more gory details, please peruse the actual
|
35
|
-
{documentation}[http://rubydoc.info/github/hfwang/protobuf_descriptor/master/frames].
|
36
|
-
|
37
|
-
== Requirements
|
38
|
-
|
39
|
-
I've only tested this on Ruby 1.9.3+. If it works for you on an older version of
|
40
|
-
Ruby, let me know. You most likely want to install the
|
41
|
-
{Google Protocol Buffer library}[https://code.google.com/p/protobuf/].
|
42
|
-
|
43
|
-
== Install
|
44
|
-
|
45
|
-
$ gem install protobuf_descriptor
|
46
|
-
|
47
|
-
== Copyright
|
48
|
-
|
49
|
-
Copyright (c) 2014 Hsiu-Fan Wang
|
50
|
-
|
51
|
-
See LICENSE.txt for details.
|