rbs_protobuf 0.3.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +3 -1
- data/.gitmodules +3 -0
- data/CHANGELOG.md +12 -0
- data/Gemfile.lock +6 -6
- data/README.md +3 -0
- data/Steepfile +1 -0
- data/bin/steep +7 -5
- data/example/Steepfile +1 -0
- data/exe/protoc-gen-rbs +4 -1
- data/lib/rbs_protobuf/name.rb +68 -0
- data/lib/rbs_protobuf/translator/protobuf_gem.rb +458 -226
- data/lib/rbs_protobuf/version.rb +1 -1
- data/lib/rbs_protobuf.rb +2 -1
- data/rbs_collection.lock.yaml +7 -15
- data/rbs_collection.yaml +1 -0
- data/sig/rbs_protobuf/name.rbs +45 -0
- data/sig/rbs_protobuf/translator/protobuf_gem.rbs +80 -11
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 563169bcedcc8c4392d8ad6c428c8fd4f31b5ca3373705439fa94a0e3f05b138
|
4
|
+
data.tar.gz: a55dd8d55cc9b866b101e51bb90ba88aa5e138251c3083b010671b03346d9db8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0ea93fd55f7b9efb4a864156e428033da4116499c99ef8f222949ae301b16fe302cd00c022ce2ad91ac9216dca508a084a9c59fb5b296dbd5e41d4d8dd6b205
|
7
|
+
data.tar.gz: c143b93fce43ede0ff094a26f2e51d3d72e6b35853852cc11e1b571f74abbe68ec7f579af206bec8213c908bb34d1421986f57a6f14417d316d7b666491c04ce
|
data/.github/workflows/test.yml
CHANGED
@@ -30,7 +30,9 @@ jobs:
|
|
30
30
|
unzip protoc-${{ matrix.protoc_version }}-linux-x86_64.zip
|
31
31
|
mv bin/protoc /usr/local/bin/protoc
|
32
32
|
protoc --version
|
33
|
-
- uses: actions/checkout@
|
33
|
+
- uses: actions/checkout@v3
|
34
|
+
with:
|
35
|
+
submodules: true
|
34
36
|
- name: Run test
|
35
37
|
run: |
|
36
38
|
ruby -v
|
data/.gitmodules
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 1.0.0 (2022-04-25)
|
4
|
+
|
5
|
+
This is version 1.0.0. 🎉
|
6
|
+
|
7
|
+
It includes changes on `nil` handling on required fields. Passing `nil` to required fields is prohibited by default, but there is an option to allow it, define `$RBS_PROTOBUF_ACCEPT_NIL_ATTR_WRITER` env var.
|
8
|
+
|
9
|
+
* Stop accepting `nil` to required fields ([\#16](https://github.com/square/rbs_protobuf/pull/16))
|
10
|
+
* Add an option to let required fields accept `nil` ([\#27](https://github.com/square/rbs_protobuf/pull/27))
|
11
|
+
* Fix extension generator ([\#21](https://github.com/square/rbs_protobuf/pull/21))
|
12
|
+
* Use overload for field write types ([\#22](https://github.com/square/rbs_protobuf/pull/22))
|
13
|
+
* Generate helper types and use them ([\#24](https://github.com/square/rbs_protobuf/pull/24))
|
14
|
+
|
3
15
|
## 0.3.0 (2022-04-05)
|
4
16
|
|
5
17
|
* Put protobuf _options_ in RBS comment ([\#15](https://github.com/square/rbs_protobuf/pull/15))
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rbs_protobuf (0.
|
4
|
+
rbs_protobuf (1.0.0)
|
5
5
|
activesupport (>= 4.0)
|
6
6
|
rbs (>= 2.2.0)
|
7
7
|
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
middleware (0.1.0)
|
26
26
|
minitest (5.15.0)
|
27
27
|
parallel (1.22.1)
|
28
|
-
parser (3.1.
|
28
|
+
parser (3.1.2.0)
|
29
29
|
ast (~> 2.4.1)
|
30
30
|
protobuf (3.10.5)
|
31
31
|
activesupport (>= 3.2)
|
@@ -37,15 +37,15 @@ GEM
|
|
37
37
|
rb-fsevent (0.11.1)
|
38
38
|
rb-inotify (0.10.1)
|
39
39
|
ffi (~> 1.0)
|
40
|
-
rbs (2.3.
|
41
|
-
steep (0.52.
|
40
|
+
rbs (2.3.2)
|
41
|
+
steep (0.52.1)
|
42
42
|
activesupport (>= 5.1)
|
43
43
|
language_server-protocol (>= 3.15, < 4.0)
|
44
44
|
listen (~> 3.0)
|
45
45
|
parallel (>= 1.0.0)
|
46
46
|
parser (>= 3.0)
|
47
47
|
rainbow (>= 2.2.2, < 4.0)
|
48
|
-
rbs (>= 2.3.
|
48
|
+
rbs (>= 2.3.2)
|
49
49
|
terminal-table (>= 2, < 4)
|
50
50
|
terminal-table (3.0.2)
|
51
51
|
unicode-display_width (>= 1.1.1, < 3)
|
@@ -67,4 +67,4 @@ DEPENDENCIES
|
|
67
67
|
steep
|
68
68
|
|
69
69
|
BUNDLED WITH
|
70
|
-
2.
|
70
|
+
2.3.11
|
data/README.md
CHANGED
@@ -95,12 +95,15 @@ gems:
|
|
95
95
|
We assume that you don't type check the generated `.pb.rb` code.
|
96
96
|
If you want to type check them, you need the definition of `Google::Protobuf`, which can be generated from [`descriptor.proto`](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/descriptor.proto).
|
97
97
|
|
98
|
+
Note: `rbs_protobuf` generates RBS files assuming some types added in [this PR](https://github.com/ruby/gem_rbs_collection/pull/145). Make sure you are using one of the newer versions of `rbs_gem_collection` definitions.
|
99
|
+
|
98
100
|
### Options
|
99
101
|
|
100
102
|
* `RBS_PROTOBUF_BACKEND` specifies the Ruby code generator gem. Supported value is `protobuf`. (We will add `google-protobuf` for `google-protobuf` gem.)
|
101
103
|
* `PB_UPCASE_ENUMS` is for `protobuf` gem support. Specify the environment variable to make enum value constants upper case.
|
102
104
|
* `RBS_PROTOBUF_NO_NESTED_NAMESPACE` is to make the RBS declarations flat.
|
103
105
|
* `RBS_PROTOBUF_EXTENSION` specifies what to do for extensions.
|
106
|
+
* `RBS_PROTOBUF_ACCEPT_NIL_ATTR_WRITER` is to allow passing `nil` to required fields.
|
104
107
|
|
105
108
|
## Supported features
|
106
109
|
|
data/Steepfile
CHANGED
data/bin/steep
CHANGED
@@ -1,15 +1,17 @@
|
|
1
|
-
#!/bin/
|
1
|
+
#!/usr/bin/env bash
|
2
2
|
|
3
|
-
|
3
|
+
BINSTUB_DIR=$(cd $(dirname $0); pwd)
|
4
|
+
GEMFILE=$(readlink -f ${BINSTUB_DIR}/../Gemfile)
|
5
|
+
ROOT_DIR=$(readlink -f ${BINSTUB_DIR}/..)
|
4
6
|
|
5
|
-
STEEP="bundle exec steep"
|
7
|
+
STEEP="bundle exec --gemfile=${GEMFILE} steep"
|
6
8
|
|
7
9
|
if type "rbenv" > /dev/null 2>&1; then
|
8
10
|
STEEP="rbenv exec ${STEEP}"
|
9
11
|
else
|
10
12
|
if type "rvm" > /dev/null 2>&1; then
|
11
|
-
STEEP="rvm ${
|
13
|
+
STEEP="rvm ${ROOT_DIR} do ${STEEP}"
|
12
14
|
fi
|
13
15
|
fi
|
14
16
|
|
15
|
-
exec $STEEP
|
17
|
+
exec $STEEP $@
|
data/example/Steepfile
CHANGED
data/exe/protoc-gen-rbs
CHANGED
@@ -30,11 +30,14 @@ translator = case backend
|
|
30
30
|
true
|
31
31
|
end
|
32
32
|
|
33
|
+
accept_nil_writer = ENV.key?("RBS_PROTOBUF_ACCEPT_NIL_ATTR_WRITER")
|
34
|
+
|
33
35
|
RBSProtobuf::Translator::ProtobufGem.new(
|
34
36
|
input,
|
35
37
|
upcase_enum: upcase_enum,
|
36
38
|
nested_namespace: !no_nested_namespace,
|
37
|
-
extension: extension
|
39
|
+
extension: extension,
|
40
|
+
accept_nil_writer: accept_nil_writer
|
38
41
|
)
|
39
42
|
when "google-protobuf"
|
40
43
|
raise NotImplementedError
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module RBSProtobuf
|
2
|
+
module Name
|
3
|
+
class Class
|
4
|
+
attr_reader :name
|
5
|
+
|
6
|
+
def initialize(name)
|
7
|
+
raise unless name.class?
|
8
|
+
@name = name
|
9
|
+
end
|
10
|
+
|
11
|
+
def instance_type(*args)
|
12
|
+
RBS::Types::ClassInstance.new(name: name, args: args, location: nil)
|
13
|
+
end
|
14
|
+
|
15
|
+
alias [] instance_type
|
16
|
+
|
17
|
+
def singleton_type
|
18
|
+
RBS::Types::ClassSingleton.new(name: name, location: nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
def instance_type?(t)
|
22
|
+
t.is_a?(RBS::Types::ClassInstance) && t.name == name
|
23
|
+
end
|
24
|
+
|
25
|
+
def singleton_type?(t)
|
26
|
+
t.is_a?(RBS::Types::ClassSingleton) && t.name == name
|
27
|
+
end
|
28
|
+
|
29
|
+
def super_class(*args)
|
30
|
+
RBS::AST::Declarations::Class::Super.new(name: name, args: args, location: nil)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Alias
|
35
|
+
attr_reader :name
|
36
|
+
|
37
|
+
def initialize(name)
|
38
|
+
raise unless name.alias?
|
39
|
+
@name = name
|
40
|
+
end
|
41
|
+
|
42
|
+
def [](*args)
|
43
|
+
RBS::Types::Alias.new(name: name, args: args, location: nil)
|
44
|
+
end
|
45
|
+
|
46
|
+
def type?(t)
|
47
|
+
t.is_a?(RBS::Types::Alias) && t.name == name
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
class Interface
|
52
|
+
attr_reader :name
|
53
|
+
|
54
|
+
def initialize(name)
|
55
|
+
raise unless name.interface?
|
56
|
+
@name = name
|
57
|
+
end
|
58
|
+
|
59
|
+
def [](*args)
|
60
|
+
RBS::Types::Interface.new(name: name, args: args, location: nil)
|
61
|
+
end
|
62
|
+
|
63
|
+
def type?(t)
|
64
|
+
t.is_a?(RBS::Types::Interface) && t.name == name
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|