feedx 0.10.2 → 0.11.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/.travis.yml +10 -0
 - data/Gemfile.lock +25 -5
 - data/Makefile +5 -0
 - data/consumer_test.go +5 -4
 - data/feedx.gemspec +2 -1
 - data/feedx_test.go +8 -24
 - data/format.go +16 -16
 - data/format_test.go +6 -6
 - data/go.mod +5 -11
 - data/go.sum +27 -28
 - data/internal/testdata/testdata.pb.go +124 -0
 - data/internal/testdata/testdata.proto +15 -0
 - data/lib/feedx/compression.rb +11 -4
 - data/lib/feedx/compression/abstract.rb +2 -2
 - data/lib/feedx/compression/gzip.rb +14 -16
 - data/lib/feedx/compression/none.rb +4 -4
 - data/lib/feedx/format.rb +15 -9
 - data/lib/feedx/format/abstract.rb +42 -13
 - data/lib/feedx/format/json.rb +12 -8
 - data/lib/feedx/format/parquet.rb +102 -0
 - data/lib/feedx/format/protobuf.rb +16 -8
 - data/lib/feedx/stream.rb +12 -16
 - data/producer_test.go +1 -2
 - data/reader_test.go +6 -6
 - data/spec/feedx/compression/gzip_spec.rb +2 -2
 - data/spec/feedx/compression/none_spec.rb +2 -2
 - data/spec/feedx/compression_spec.rb +9 -9
 - data/spec/feedx/format/abstract_spec.rb +11 -8
 - data/spec/feedx/format/json_spec.rb +12 -11
 - data/spec/feedx/format/parquet_spec.rb +30 -0
 - data/spec/feedx/format/protobuf_spec.rb +12 -11
 - data/spec/feedx/format_spec.rb +8 -8
 - data/spec/feedx/stream_spec.rb +20 -1
 - data/spec/spec_helper.rb +17 -1
 - metadata +22 -3
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 5662b9773c03d14b3d7d68b8a1ad208986b95c675cbf61d445f74ebdf3b86b09
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 074c6e5b86975aed1b31caa5250d7132a2d6bb68af7c221f89043f5f574d0268
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 3c39e851c7e9266c9b6248f6c6010d351ae9d57809c5f6d153bd6defdf4933fa6f138637e8ad6b0ee5f8cab07dec002b2995ecc0a7ff02222974a49ab1d646e3
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 1846a1ba29397928281d1ba4b5c683c6c4e097e2879acedc52de21d722033290e5aac72a8f001d2012643f67661aa9fd76bac27c925782b6760b2d96295e1e80
         
     | 
    
        data/.travis.yml
    CHANGED
    
    | 
         @@ -3,9 +3,19 @@ matrix: 
     | 
|
| 
       3 
3 
     | 
    
         
             
                - language: ruby
         
     | 
| 
       4 
4 
     | 
    
         
             
                  rvm:
         
     | 
| 
       5 
5 
     | 
    
         
             
                    - 2.7
         
     | 
| 
      
 6 
     | 
    
         
            +
                  before_install:
         
     | 
| 
      
 7 
     | 
    
         
            +
                    - wget https://apache.bintray.com/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-archive-keyring-latest-$(lsb_release --codename --short).deb
         
     | 
| 
      
 8 
     | 
    
         
            +
                    - sudo apt install -y ./apache-arrow-archive-keyring-latest-$(lsb_release --codename --short).deb
         
     | 
| 
      
 9 
     | 
    
         
            +
                    - sudo apt update
         
     | 
| 
      
 10 
     | 
    
         
            +
                    - sudo apt install -y libarrow-dev libarrow-glib-dev libarrow-dataset-dev libplasma-dev libplasma-glib-dev libgandiva-dev libgandiva-glib-dev libparquet-dev libparquet-glib-dev
         
     | 
| 
       6 
11 
     | 
    
         
             
                - language: ruby
         
     | 
| 
       7 
12 
     | 
    
         
             
                  rvm:
         
     | 
| 
       8 
13 
     | 
    
         
             
                    - 2.6
         
     | 
| 
      
 14 
     | 
    
         
            +
                  before_install:
         
     | 
| 
      
 15 
     | 
    
         
            +
                    - wget https://apache.bintray.com/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-archive-keyring-latest-$(lsb_release --codename --short).deb
         
     | 
| 
      
 16 
     | 
    
         
            +
                    - sudo apt install -y ./apache-arrow-archive-keyring-latest-$(lsb_release --codename --short).deb
         
     | 
| 
      
 17 
     | 
    
         
            +
                    - sudo apt update
         
     | 
| 
      
 18 
     | 
    
         
            +
                    - sudo apt install -y libarrow-dev libarrow-glib-dev libarrow-dataset-dev libplasma-dev libplasma-glib-dev libgandiva-dev libgandiva-glib-dev libparquet-dev libparquet-glib-dev
         
     | 
| 
       9 
19 
     | 
    
         
             
                - language: go
         
     | 
| 
       10 
20 
     | 
    
         
             
                  go:
         
     | 
| 
       11 
21 
     | 
    
         
             
                    - 1.14.x
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,23 +1,41 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                feedx (0. 
     | 
| 
      
 4 
     | 
    
         
            +
                feedx (0.11.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  bfs (>= 0.5.0)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            GEM
         
     | 
| 
       8 
8 
     | 
    
         
             
              remote: https://rubygems.org/
         
     | 
| 
       9 
9 
     | 
    
         
             
              specs:
         
     | 
| 
       10 
     | 
    
         
            -
                ast (2.4. 
     | 
| 
      
 10 
     | 
    
         
            +
                ast (2.4.1)
         
     | 
| 
       11 
11 
     | 
    
         
             
                bfs (0.7.0)
         
     | 
| 
       12 
12 
     | 
    
         
             
                diff-lcs (1.3)
         
     | 
| 
      
 13 
     | 
    
         
            +
                extpp (0.0.8)
         
     | 
| 
      
 14 
     | 
    
         
            +
                gio2 (3.4.3)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  gobject-introspection (= 3.4.3)
         
     | 
| 
      
 16 
     | 
    
         
            +
                glib2 (3.4.3)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  native-package-installer (>= 1.0.3)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  pkg-config (>= 1.3.5)
         
     | 
| 
      
 19 
     | 
    
         
            +
                gobject-introspection (3.4.3)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  glib2 (= 3.4.3)
         
     | 
| 
       13 
21 
     | 
    
         
             
                google-protobuf (3.12.2)
         
     | 
| 
      
 22 
     | 
    
         
            +
                native-package-installer (1.0.9)
         
     | 
| 
       14 
23 
     | 
    
         
             
                parallel (1.19.1)
         
     | 
| 
       15 
24 
     | 
    
         
             
                parser (2.7.1.3)
         
     | 
| 
       16 
25 
     | 
    
         
             
                  ast (~> 2.4.0)
         
     | 
| 
       17 
26 
     | 
    
         
             
                pbio (0.2.1)
         
     | 
| 
       18 
27 
     | 
    
         
             
                  google-protobuf
         
     | 
| 
      
 28 
     | 
    
         
            +
                pkg-config (1.4.1)
         
     | 
| 
       19 
29 
     | 
    
         
             
                rainbow (3.0.0)
         
     | 
| 
       20 
30 
     | 
    
         
             
                rake (13.0.1)
         
     | 
| 
      
 31 
     | 
    
         
            +
                red-arrow (0.17.1)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  extpp (>= 0.0.7)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  gio2 (>= 3.3.6)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  native-package-installer
         
     | 
| 
      
 35 
     | 
    
         
            +
                  pkg-config
         
     | 
| 
      
 36 
     | 
    
         
            +
                red-parquet (0.17.1)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  red-arrow (= 0.17.1)
         
     | 
| 
      
 38 
     | 
    
         
            +
                regexp_parser (1.7.1)
         
     | 
| 
       21 
39 
     | 
    
         
             
                rexml (3.2.4)
         
     | 
| 
       22 
40 
     | 
    
         
             
                rspec (3.9.0)
         
     | 
| 
       23 
41 
     | 
    
         
             
                  rspec-core (~> 3.9.0)
         
     | 
| 
         @@ -32,17 +50,18 @@ GEM 
     | 
|
| 
       32 
50 
     | 
    
         
             
                  diff-lcs (>= 1.2.0, < 2.0)
         
     | 
| 
       33 
51 
     | 
    
         
             
                  rspec-support (~> 3.9.0)
         
     | 
| 
       34 
52 
     | 
    
         
             
                rspec-support (3.9.3)
         
     | 
| 
       35 
     | 
    
         
            -
                rubocop (0. 
     | 
| 
      
 53 
     | 
    
         
            +
                rubocop (0.85.1)
         
     | 
| 
       36 
54 
     | 
    
         
             
                  parallel (~> 1.10)
         
     | 
| 
       37 
55 
     | 
    
         
             
                  parser (>= 2.7.0.1)
         
     | 
| 
       38 
56 
     | 
    
         
             
                  rainbow (>= 2.2.2, < 4.0)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  regexp_parser (>= 1.7)
         
     | 
| 
       39 
58 
     | 
    
         
             
                  rexml
         
     | 
| 
       40 
59 
     | 
    
         
             
                  rubocop-ast (>= 0.0.3)
         
     | 
| 
       41 
60 
     | 
    
         
             
                  ruby-progressbar (~> 1.7)
         
     | 
| 
       42 
61 
     | 
    
         
             
                  unicode-display_width (>= 1.4.0, < 2.0)
         
     | 
| 
       43 
62 
     | 
    
         
             
                rubocop-ast (0.0.3)
         
     | 
| 
       44 
63 
     | 
    
         
             
                  parser (>= 2.7.0.1)
         
     | 
| 
       45 
     | 
    
         
            -
                rubocop-performance (1.6. 
     | 
| 
      
 64 
     | 
    
         
            +
                rubocop-performance (1.6.1)
         
     | 
| 
       46 
65 
     | 
    
         
             
                  rubocop (>= 0.71.0)
         
     | 
| 
       47 
66 
     | 
    
         
             
                ruby-progressbar (1.10.1)
         
     | 
| 
       48 
67 
     | 
    
         
             
                unicode-display_width (1.7.0)
         
     | 
| 
         @@ -56,9 +75,10 @@ DEPENDENCIES 
     | 
|
| 
       56 
75 
     | 
    
         
             
              google-protobuf (>= 3.7.0.pre.rc2)
         
     | 
| 
       57 
76 
     | 
    
         
             
              pbio
         
     | 
| 
       58 
77 
     | 
    
         
             
              rake
         
     | 
| 
      
 78 
     | 
    
         
            +
              red-parquet
         
     | 
| 
       59 
79 
     | 
    
         
             
              rspec
         
     | 
| 
       60 
80 
     | 
    
         
             
              rubocop
         
     | 
| 
       61 
81 
     | 
    
         
             
              rubocop-performance
         
     | 
| 
       62 
82 
     | 
    
         | 
| 
       63 
83 
     | 
    
         
             
            BUNDLED WITH
         
     | 
| 
       64 
     | 
    
         
            -
               2.1. 
     | 
| 
      
 84 
     | 
    
         
            +
               2.1.4
         
     | 
    
        data/Makefile
    CHANGED
    
    
    
        data/consumer_test.go
    CHANGED
    
    | 
         @@ -7,6 +7,7 @@ import ( 
     | 
|
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
            	"github.com/bsm/bfs"
         
     | 
| 
       9 
9 
     | 
    
         
             
            	"github.com/bsm/feedx"
         
     | 
| 
      
 10 
     | 
    
         
            +
            	"github.com/bsm/feedx/internal/testdata"
         
     | 
| 
       10 
11 
     | 
    
         
             
            	. "github.com/onsi/ginkgo"
         
     | 
| 
       11 
12 
     | 
    
         
             
            	. "github.com/onsi/gomega"
         
     | 
| 
       12 
13 
     | 
    
         
             
            )
         
     | 
| 
         @@ -22,16 +23,16 @@ var _ = Describe("Consumer", func() { 
     | 
|
| 
       22 
23 
     | 
    
         | 
| 
       23 
24 
     | 
    
         
             
            		var err error
         
     | 
| 
       24 
25 
     | 
    
         
             
            		subject, err = feedx.NewConsumerForRemote(ctx, obj, nil, func(r *feedx.Reader) (interface{}, error) {
         
     | 
| 
       25 
     | 
    
         
            -
            			var msgs []MockMessage
         
     | 
| 
      
 26 
     | 
    
         
            +
            			var msgs []*testdata.MockMessage
         
     | 
| 
       26 
27 
     | 
    
         
             
            			for {
         
     | 
| 
       27 
     | 
    
         
            -
            				var msg MockMessage
         
     | 
| 
      
 28 
     | 
    
         
            +
            				var msg testdata.MockMessage
         
     | 
| 
       28 
29 
     | 
    
         
             
            				if err := r.Decode(&msg); err == io.EOF {
         
     | 
| 
       29 
30 
     | 
    
         
             
            					break
         
     | 
| 
       30 
31 
     | 
    
         
             
            				}
         
     | 
| 
       31 
32 
     | 
    
         
             
            				if err != nil {
         
     | 
| 
       32 
33 
     | 
    
         
             
            					return nil, err
         
     | 
| 
       33 
34 
     | 
    
         
             
            				}
         
     | 
| 
       34 
     | 
    
         
            -
            				msgs = append(msgs, msg)
         
     | 
| 
      
 35 
     | 
    
         
            +
            				msgs = append(msgs, &msg)
         
     | 
| 
       35 
36 
     | 
    
         
             
            			}
         
     | 
| 
       36 
37 
     | 
    
         
             
            			return msgs, nil
         
     | 
| 
       37 
38 
     | 
    
         
             
            		})
         
     | 
| 
         @@ -46,7 +47,7 @@ var _ = Describe("Consumer", func() { 
     | 
|
| 
       46 
47 
     | 
    
         
             
            		Expect(subject.LastSync()).To(BeTemporally("~", time.Now(), time.Second))
         
     | 
| 
       47 
48 
     | 
    
         
             
            		Expect(subject.LastModified()).To(BeTemporally("~", time.Unix(1515151515, 0), time.Second))
         
     | 
| 
       48 
49 
     | 
    
         
             
            		Expect(subject.NumRead()).To(Equal(2))
         
     | 
| 
       49 
     | 
    
         
            -
            		Expect(subject.Data()).To( 
     | 
| 
      
 50 
     | 
    
         
            +
            		Expect(subject.Data()).To(ConsistOf(seed(), seed()))
         
     | 
| 
       50 
51 
     | 
    
         
             
            		Expect(subject.Close()).To(Succeed())
         
     | 
| 
       51 
52 
     | 
    
         
             
            	})
         
     | 
| 
       52 
53 
     | 
    
         
             
            })
         
     | 
    
        data/feedx.gemspec
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       2 
2 
     | 
    
         
             
              s.name          = 'feedx'
         
     | 
| 
       3 
     | 
    
         
            -
              s.version       = '0. 
     | 
| 
      
 3 
     | 
    
         
            +
              s.version       = '0.11.0'
         
     | 
| 
       4 
4 
     | 
    
         
             
              s.authors       = ['Black Square Media Ltd']
         
     | 
| 
       5 
5 
     | 
    
         
             
              s.email         = ['info@blacksquaremedia.com']
         
     | 
| 
       6 
6 
     | 
    
         
             
              s.summary       = %(Exchange data between components via feeds)
         
     | 
| 
         @@ -18,6 +18,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       18 
18 
     | 
    
         
             
              s.add_development_dependency 'bundler'
         
     | 
| 
       19 
19 
     | 
    
         
             
              s.add_development_dependency 'pbio'
         
     | 
| 
       20 
20 
     | 
    
         
             
              s.add_development_dependency 'rake'
         
     | 
| 
      
 21 
     | 
    
         
            +
              s.add_development_dependency 'red-parquet'
         
     | 
| 
       21 
22 
     | 
    
         
             
              s.add_development_dependency 'rspec'
         
     | 
| 
       22 
23 
     | 
    
         
             
              s.add_development_dependency 'rubocop'
         
     | 
| 
       23 
24 
     | 
    
         
             
              s.add_development_dependency 'rubocop-performance'
         
     | 
    
        data/feedx_test.go
    CHANGED
    
    | 
         @@ -8,7 +8,7 @@ import ( 
     | 
|
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
            	"github.com/bsm/bfs"
         
     | 
| 
       10 
10 
     | 
    
         
             
            	"github.com/bsm/feedx"
         
     | 
| 
       11 
     | 
    
         
            -
            	"github.com/ 
     | 
| 
      
 11 
     | 
    
         
            +
            	"github.com/bsm/feedx/internal/testdata"
         
     | 
| 
       12 
12 
     | 
    
         
             
            	. "github.com/onsi/ginkgo"
         
     | 
| 
       13 
13 
     | 
    
         
             
            	. "github.com/onsi/gomega"
         
     | 
| 
       14 
14 
     | 
    
         
             
            )
         
     | 
| 
         @@ -24,27 +24,12 @@ func init() { 
     | 
|
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            // ------------------------------------------------------------------------
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
            type MockMessage struct {
         
     | 
| 
       35 
     | 
    
         
            -
            	Name   string    `protobuf:"bytes,1,opt,name=name,proto3"`
         
     | 
| 
       36 
     | 
    
         
            -
            	Enum   Mock_Enum `protobuf:"varint,2,opt,name=enum,proto3"`
         
     | 
| 
       37 
     | 
    
         
            -
            	Height uint32    `protobuf:"varint,3,opt,name=height"`
         
     | 
| 
       38 
     | 
    
         
            -
            }
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
            func (m *MockMessage) Reset()         { *m = MockMessage{} }
         
     | 
| 
       41 
     | 
    
         
            -
            func (m *MockMessage) String() string { return proto.CompactTextString(m) }
         
     | 
| 
       42 
     | 
    
         
            -
            func (*MockMessage) ProtoMessage()    {}
         
     | 
| 
       43 
     | 
    
         
            -
             
     | 
| 
       44 
     | 
    
         
            -
            var fixture = MockMessage{
         
     | 
| 
       45 
     | 
    
         
            -
            	Name:   "Joe",
         
     | 
| 
       46 
     | 
    
         
            -
            	Enum:   Mock_FIRST,
         
     | 
| 
       47 
     | 
    
         
            -
            	Height: 180,
         
     | 
| 
      
 27 
     | 
    
         
            +
            func seed() *testdata.MockMessage {
         
     | 
| 
      
 28 
     | 
    
         
            +
            	return &testdata.MockMessage{
         
     | 
| 
      
 29 
     | 
    
         
            +
            		Name:   "Joe",
         
     | 
| 
      
 30 
     | 
    
         
            +
            		Enum:   testdata.MockEnum_FIRST,
         
     | 
| 
      
 31 
     | 
    
         
            +
            		Height: 180,
         
     | 
| 
      
 32 
     | 
    
         
            +
            	}
         
     | 
| 
       48 
33 
     | 
    
         
             
            }
         
     | 
| 
       49 
34 
     | 
    
         | 
| 
       50 
35 
     | 
    
         
             
            // ------------------------------------------------------------------------
         
     | 
| 
         @@ -56,8 +41,7 @@ func writeMulti(obj *bfs.Object, numEntries int) error { 
     | 
|
| 
       56 
41 
     | 
    
         
             
            	defer w.Discard()
         
     | 
| 
       57 
42 
     | 
    
         | 
| 
       58 
43 
     | 
    
         
             
            	for i := 0; i < numEntries; i++ {
         
     | 
| 
       59 
     | 
    
         
            -
            		 
     | 
| 
       60 
     | 
    
         
            -
            		if err := w.Encode(&fix); err != nil {
         
     | 
| 
      
 44 
     | 
    
         
            +
            		if err := w.Encode(seed()); err != nil {
         
     | 
| 
       61 
45 
     | 
    
         
             
            			return err
         
     | 
| 
       62 
46 
     | 
    
         
             
            		}
         
     | 
| 
       63 
47 
     | 
    
         
             
            	}
         
     | 
    
        data/format.go
    CHANGED
    
    | 
         @@ -7,9 +7,8 @@ import ( 
     | 
|
| 
       7 
7 
     | 
    
         
             
            	"io"
         
     | 
| 
       8 
8 
     | 
    
         
             
            	"path"
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
            	"github.com/golang/protobuf/proto"
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
10 
     | 
    
         
             
            	pbio "github.com/gogo/protobuf/io"
         
     | 
| 
      
 11 
     | 
    
         
            +
            	"github.com/gogo/protobuf/proto"
         
     | 
| 
       13 
12 
     | 
    
         
             
            )
         
     | 
| 
       14 
13 
     | 
    
         | 
| 
       15 
14 
     | 
    
         
             
            var errNoFormat = errors.New("feedx: no format detected")
         
     | 
| 
         @@ -92,8 +91,6 @@ func (jsonEncoderWrapper) Close() error { return nil } 
     | 
|
| 
       92 
91 
     | 
    
         | 
| 
       93 
92 
     | 
    
         
             
            // --------------------------------------------------------------------
         
     | 
| 
       94 
93 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
            const protobufMaxMessageSize = 20 * 1024 * 1024 // 20MB
         
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
94 
     | 
    
         
             
            // ProtobufFormat provides a Format implemention for Protobuf.
         
     | 
| 
       98 
95 
     | 
    
         
             
            var ProtobufFormat = protobufFormat{}
         
     | 
| 
       99 
96 
     | 
    
         | 
| 
         @@ -101,32 +98,35 @@ type protobufFormat struct{} 
     | 
|
| 
       101 
98 
     | 
    
         | 
| 
       102 
99 
     | 
    
         
             
            // NewDecoder implements Format.
         
     | 
| 
       103 
100 
     | 
    
         
             
            func (protobufFormat) NewDecoder(r io.Reader) (FormatDecoder, error) {
         
     | 
| 
       104 
     | 
    
         
            -
            	 
     | 
| 
       105 
     | 
    
         
            -
            	return protobufDecoderWrapper{ReadCloser: rc}, nil
         
     | 
| 
      
 101 
     | 
    
         
            +
            	return protobufWrapper{Reader: pbio.NewDelimitedReader(r, 1<<28)}, nil
         
     | 
| 
       106 
102 
     | 
    
         
             
            }
         
     | 
| 
       107 
103 
     | 
    
         | 
| 
       108 
104 
     | 
    
         
             
            // NewEncoder implements Format.
         
     | 
| 
       109 
105 
     | 
    
         
             
            func (protobufFormat) NewEncoder(w io.Writer) (FormatEncoder, error) {
         
     | 
| 
       110 
     | 
    
         
            -
            	 
     | 
| 
       111 
     | 
    
         
            -
            	return protobufEncoderWrapper{WriteCloser: wc}, nil
         
     | 
| 
      
 106 
     | 
    
         
            +
            	return protobufWrapper{Writer: pbio.NewDelimitedWriter(w)}, nil
         
     | 
| 
       112 
107 
     | 
    
         
             
            }
         
     | 
| 
       113 
108 
     | 
    
         | 
| 
       114 
     | 
    
         
            -
            type  
     | 
| 
      
 109 
     | 
    
         
            +
            type protobufWrapper struct {
         
     | 
| 
      
 110 
     | 
    
         
            +
            	pbio.Reader
         
     | 
| 
      
 111 
     | 
    
         
            +
            	pbio.Writer
         
     | 
| 
      
 112 
     | 
    
         
            +
            }
         
     | 
| 
       115 
113 
     | 
    
         | 
| 
       116 
     | 
    
         
            -
            func (w  
     | 
| 
      
 114 
     | 
    
         
            +
            func (w protobufWrapper) Decode(v interface{}) error {
         
     | 
| 
       117 
115 
     | 
    
         
             
            	msg, ok := v.(proto.Message)
         
     | 
| 
       118 
116 
     | 
    
         
             
            	if !ok {
         
     | 
| 
       119 
     | 
    
         
            -
            		return fmt.Errorf(" 
     | 
| 
      
 117 
     | 
    
         
            +
            		return fmt.Errorf("value %v (%T) is not a proto.Message", v, v)
         
     | 
| 
       120 
118 
     | 
    
         
             
            	}
         
     | 
| 
       121 
     | 
    
         
            -
            	return w. 
     | 
| 
      
 119 
     | 
    
         
            +
            	return w.ReadMsg(msg)
         
     | 
| 
       122 
120 
     | 
    
         
             
            }
         
     | 
| 
       123 
121 
     | 
    
         | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
             
     | 
| 
       126 
     | 
    
         
            -
            func (w protobufEncoderWrapper) Encode(v interface{}) error {
         
     | 
| 
      
 122 
     | 
    
         
            +
            func (w protobufWrapper) Encode(v interface{}) error {
         
     | 
| 
       127 
123 
     | 
    
         
             
            	msg, ok := v.(proto.Message)
         
     | 
| 
       128 
124 
     | 
    
         
             
            	if !ok {
         
     | 
| 
       129 
     | 
    
         
            -
            		return fmt.Errorf(" 
     | 
| 
      
 125 
     | 
    
         
            +
            		return fmt.Errorf("value %v (%T) is not a proto.Message", v, v)
         
     | 
| 
       130 
126 
     | 
    
         
             
            	}
         
     | 
| 
       131 
127 
     | 
    
         
             
            	return w.WriteMsg(msg)
         
     | 
| 
       132 
128 
     | 
    
         
             
            }
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
            func (protobufWrapper) Close() error {
         
     | 
| 
      
 131 
     | 
    
         
            +
            	return nil
         
     | 
| 
      
 132 
     | 
    
         
            +
            }
         
     | 
    
        data/format_test.go
    CHANGED
    
    | 
         @@ -5,6 +5,7 @@ import ( 
     | 
|
| 
       5 
5 
     | 
    
         
             
            	"io"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            	"github.com/bsm/feedx"
         
     | 
| 
      
 8 
     | 
    
         
            +
            	"github.com/bsm/feedx/internal/testdata"
         
     | 
| 
       8 
9 
     | 
    
         
             
            	. "github.com/onsi/ginkgo"
         
     | 
| 
       9 
10 
     | 
    
         
             
            	. "github.com/onsi/gomega"
         
     | 
| 
       10 
11 
     | 
    
         
             
            )
         
     | 
| 
         @@ -17,24 +18,23 @@ var _ = Describe("Format", func() { 
     | 
|
| 
       17 
18 
     | 
    
         
             
            		Expect(err).NotTo(HaveOccurred())
         
     | 
| 
       18 
19 
     | 
    
         
             
            		defer enc.Close()
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
            		 
     | 
| 
       21 
     | 
    
         
            -
            		Expect(enc.Encode( 
     | 
| 
       22 
     | 
    
         
            -
            		Expect(enc.Encode(&fix)).To(Succeed())
         
     | 
| 
      
 21 
     | 
    
         
            +
            		Expect(enc.Encode(seed())).To(Succeed())
         
     | 
| 
      
 22 
     | 
    
         
            +
            		Expect(enc.Encode(seed())).To(Succeed())
         
     | 
| 
       23 
23 
     | 
    
         
             
            		Expect(enc.Close()).To(Succeed())
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
            		dec, err := subject.NewDecoder(buf)
         
     | 
| 
       26 
26 
     | 
    
         
             
            		Expect(err).NotTo(HaveOccurred())
         
     | 
| 
       27 
27 
     | 
    
         
             
            		defer dec.Close()
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
            		v1 := new(MockMessage)
         
     | 
| 
      
 29 
     | 
    
         
            +
            		v1 := new(testdata.MockMessage)
         
     | 
| 
       30 
30 
     | 
    
         
             
            		Expect(dec.Decode(v1)).To(Succeed())
         
     | 
| 
       31 
31 
     | 
    
         
             
            		Expect(v1.Name).To(Equal("Joe"))
         
     | 
| 
       32 
32 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
            		v2 := new(MockMessage)
         
     | 
| 
      
 33 
     | 
    
         
            +
            		v2 := new(testdata.MockMessage)
         
     | 
| 
       34 
34 
     | 
    
         
             
            		Expect(dec.Decode(v2)).To(Succeed())
         
     | 
| 
       35 
35 
     | 
    
         
             
            		Expect(v2.Name).To(Equal("Joe"))
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
            		v3 := new(MockMessage)
         
     | 
| 
      
 37 
     | 
    
         
            +
            		v3 := new(testdata.MockMessage)
         
     | 
| 
       38 
38 
     | 
    
         
             
            		Expect(dec.Decode(v3)).To(MatchError(io.EOF))
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
40 
     | 
    
         
             
            		Expect(dec.Close()).To(Succeed())
         
     | 
    
        data/go.mod
    CHANGED
    
    | 
         @@ -1,16 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module github.com/bsm/feedx
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
      
 3 
     | 
    
         
            +
            go 1.13
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       3 
5 
     | 
    
         
             
            require (
         
     | 
| 
       4 
     | 
    
         
            -
            	github.com/ 
     | 
| 
       5 
     | 
    
         
            -
            	github.com/bsm/bfs v0.10.1
         
     | 
| 
      
 6 
     | 
    
         
            +
            	github.com/bsm/bfs v0.10.4
         
     | 
| 
       6 
7 
     | 
    
         
             
            	github.com/gogo/protobuf v1.3.1
         
     | 
| 
       7 
     | 
    
         
            -
            	github.com/ 
     | 
| 
       8 
     | 
    
         
            -
            	github.com/onsi/ 
     | 
| 
       9 
     | 
    
         
            -
            	github.com/onsi/gomega v1.7.0
         
     | 
| 
       10 
     | 
    
         
            -
            	golang.org/x/net v0.0.0-20191007182048-72f939374954 // indirect
         
     | 
| 
       11 
     | 
    
         
            -
            	golang.org/x/sys v0.0.0-20191008105621-543471e840be // indirect
         
     | 
| 
       12 
     | 
    
         
            -
            	gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
         
     | 
| 
       13 
     | 
    
         
            -
            	gopkg.in/yaml.v2 v2.2.4 // indirect
         
     | 
| 
      
 8 
     | 
    
         
            +
            	github.com/onsi/ginkgo v1.13.0
         
     | 
| 
      
 9 
     | 
    
         
            +
            	github.com/onsi/gomega v1.10.1
         
     | 
| 
       14 
10 
     | 
    
         
             
            )
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            go 1.13
         
     | 
    
        data/go.sum
    CHANGED
    
    | 
         @@ -1,28 +1,25 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            github.com/bmatcuk/doublestar v1.2.2 h1:oC24CykoSAB8zd7XgruHo33E0cHJf/WhQA/7BeXj+x0=
         
     | 
| 
       2 
2 
     | 
    
         
             
            github.com/bmatcuk/doublestar v1.2.2/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE=
         
     | 
| 
       3 
     | 
    
         
            -
            github.com/ 
     | 
| 
       4 
     | 
    
         
            -
            github.com/ 
     | 
| 
       5 
     | 
    
         
            -
            github.com/bsm/bfs v0.10.1 h1:npAGbpWvcL9Zvhe7FATY7DGJX2jQYlkGLnw3QhotvBc=
         
     | 
| 
       6 
     | 
    
         
            -
            github.com/bsm/bfs v0.10.1/go.mod h1:N3md8kQvlteRDcfc8tqw759yW98dhj+6seWEVcg4CmM=
         
     | 
| 
       7 
     | 
    
         
            -
            github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
         
     | 
| 
      
 3 
     | 
    
         
            +
            github.com/bsm/bfs v0.10.4 h1:59I1FBEcIku/1MfPyIEeBfKm+ICaJ4lVEcago/YeCLg=
         
     | 
| 
      
 4 
     | 
    
         
            +
            github.com/bsm/bfs v0.10.4/go.mod h1:N3md8kQvlteRDcfc8tqw759yW98dhj+6seWEVcg4CmM=
         
     | 
| 
       8 
5 
     | 
    
         
             
            github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
         
     | 
| 
      
 6 
     | 
    
         
            +
            github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
         
     | 
| 
      
 7 
     | 
    
         
            +
            github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
         
     | 
| 
       9 
8 
     | 
    
         
             
            github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
         
     | 
| 
       10 
9 
     | 
    
         
             
            github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
         
     | 
| 
       11 
     | 
    
         
            -
            github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
         
     | 
| 
       12 
10 
     | 
    
         
             
            github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
         
     | 
| 
       13 
     | 
    
         
            -
            github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
         
     | 
| 
       14 
11 
     | 
    
         
             
            github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
         
     | 
| 
       15 
12 
     | 
    
         
             
            github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
         
     | 
| 
       16 
13 
     | 
    
         
             
            github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
         
     | 
| 
       17 
14 
     | 
    
         
             
            github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
         
     | 
| 
       18 
15 
     | 
    
         
             
            github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
         
     | 
| 
       19 
     | 
    
         
            -
            github.com/golang/protobuf v1.4.0 h1:oOuy+ugB+P/kBdUnG5QaMXSIyJ1q38wWSojYCb3z5VQ=
         
     | 
| 
       20 
16 
     | 
    
         
             
            github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
         
     | 
| 
      
 17 
     | 
    
         
            +
            github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0=
         
     | 
| 
      
 18 
     | 
    
         
            +
            github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
         
     | 
| 
       21 
19 
     | 
    
         
             
            github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
         
     | 
| 
       22 
20 
     | 
    
         
             
            github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
         
     | 
| 
       23 
21 
     | 
    
         
             
            github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
         
     | 
| 
       24 
22 
     | 
    
         
             
            github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
         
     | 
| 
       25 
     | 
    
         
            -
            github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI=
         
     | 
| 
       26 
23 
     | 
    
         
             
            github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
         
     | 
| 
       27 
24 
     | 
    
         
             
            github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
         
     | 
| 
       28 
25 
     | 
    
         
             
            github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
         
     | 
| 
         @@ -31,28 +28,33 @@ github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORN 
     | 
|
| 
       31 
28 
     | 
    
         
             
            github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
         
     | 
| 
       32 
29 
     | 
    
         
             
            github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
         
     | 
| 
       33 
30 
     | 
    
         
             
            github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
         
     | 
| 
       34 
     | 
    
         
            -
            github.com/ 
     | 
| 
      
 31 
     | 
    
         
            +
            github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
         
     | 
| 
      
 32 
     | 
    
         
            +
            github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
         
     | 
| 
       35 
33 
     | 
    
         
             
            github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
         
     | 
| 
       36 
     | 
    
         
            -
            github.com/onsi/ginkgo v1.8.0 h1:VkHVNpR4iVnU8XQR6DBm8BqYjN7CRzw+xKUbVVbbW9w=
         
     | 
| 
       37 
34 
     | 
    
         
             
            github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
         
     | 
| 
       38 
     | 
    
         
            -
            github.com/onsi/ginkgo v1. 
     | 
| 
       39 
     | 
    
         
            -
            github.com/onsi/ginkgo v1. 
     | 
| 
       40 
     | 
    
         
            -
            github.com/onsi/ 
     | 
| 
      
 35 
     | 
    
         
            +
            github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
         
     | 
| 
      
 36 
     | 
    
         
            +
            github.com/onsi/ginkgo v1.13.0 h1:M76yO2HkZASFjXL0HSoZJ1AYEmQxNJmY41Jx1zNUq1Y=
         
     | 
| 
      
 37 
     | 
    
         
            +
            github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0=
         
     | 
| 
       41 
38 
     | 
    
         
             
            github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
         
     | 
| 
       42 
     | 
    
         
            -
            github.com/onsi/gomega v1.7. 
     | 
| 
       43 
     | 
    
         
            -
            github.com/onsi/gomega v1. 
     | 
| 
      
 39 
     | 
    
         
            +
            github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
         
     | 
| 
      
 40 
     | 
    
         
            +
            github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
         
     | 
| 
      
 41 
     | 
    
         
            +
            github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
         
     | 
| 
      
 42 
     | 
    
         
            +
            github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
         
     | 
| 
       44 
43 
     | 
    
         
             
            golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
         
     | 
| 
       45 
44 
     | 
    
         
             
            golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
         
     | 
| 
       46 
45 
     | 
    
         
             
            golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
         
     | 
| 
       47 
     | 
    
         
            -
            golang.org/x/net v0.0.0- 
     | 
| 
       48 
     | 
    
         
            -
            golang.org/x/net v0.0.0- 
     | 
| 
      
 46 
     | 
    
         
            +
            golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7 h1:AeiKBIuRw3UomYXSbLy0Mc2dDLfdtbT/IVn4keq83P0=
         
     | 
| 
      
 47 
     | 
    
         
            +
            golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
         
     | 
| 
       49 
48 
     | 
    
         
             
            golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
         
     | 
| 
       50 
49 
     | 
    
         
             
            golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
         
     | 
| 
       51 
50 
     | 
    
         
             
            golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
         
     | 
| 
       52 
51 
     | 
    
         
             
            golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
       53 
     | 
    
         
            -
            golang.org/x/sys v0.0.0- 
     | 
| 
       54 
     | 
    
         
            -
            golang.org/x/sys v0.0.0- 
     | 
| 
       55 
     | 
    
         
            -
            golang.org/x/ 
     | 
| 
      
 52 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
      
 53 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
      
 54 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
      
 55 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
      
 56 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4=
         
     | 
| 
      
 57 
     | 
    
         
            +
            golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
         
     | 
| 
       56 
58 
     | 
    
         
             
            golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
         
     | 
| 
       57 
59 
     | 
    
         
             
            golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
         
     | 
| 
       58 
60 
     | 
    
         
             
            golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
         
     | 
| 
         @@ -64,20 +66,17 @@ google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLY 
     | 
|
| 
       64 
66 
     | 
    
         
             
            google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
         
     | 
| 
       65 
67 
     | 
    
         
             
            google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
         
     | 
| 
       66 
68 
     | 
    
         
             
            google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
         
     | 
| 
       67 
     | 
    
         
            -
            google.golang.org/protobuf v1.21.0 h1:qdOKuR/EIArgaWNjetjgTzgVTAZ+S/WXVrq9HW9zimw=
         
     | 
| 
       68 
69 
     | 
    
         
             
            google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
         
     | 
| 
      
 70 
     | 
    
         
            +
            google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM=
         
     | 
| 
      
 71 
     | 
    
         
            +
            google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
         
     | 
| 
       69 
72 
     | 
    
         
             
            gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
         
     | 
| 
       70 
73 
     | 
    
         
             
            gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
         
     | 
| 
       71 
74 
     | 
    
         
             
            gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
         
     | 
| 
       72 
     | 
    
         
            -
            gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
         
     | 
| 
       73 
     | 
    
         
            -
            gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
         
     | 
| 
       74 
     | 
    
         
            -
            gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
         
     | 
| 
       75 
75 
     | 
    
         
             
            gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
         
     | 
| 
       76 
76 
     | 
    
         
             
            gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
         
     | 
| 
       77 
77 
     | 
    
         
             
            gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
         
     | 
| 
       78 
     | 
    
         
            -
            gopkg.in/yaml.v2 v2.2.1 h1:mUhvW9EsL+naU5Q3cakzfE91YhliOondGd6ZrsDBHQE=
         
     | 
| 
       79 
78 
     | 
    
         
             
            gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
         
     | 
| 
       80 
     | 
    
         
            -
            gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
         
     | 
| 
       81 
79 
     | 
    
         
             
            gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
         
     | 
| 
       82 
     | 
    
         
            -
            gopkg.in/yaml.v2 v2.2.4 h1:/eiJrUcujPVeJ3xlSWaiNi3uSVmDGBK1pDHUHAnao1I=
         
     | 
| 
       83 
80 
     | 
    
         
             
            gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
         
     | 
| 
      
 81 
     | 
    
         
            +
            gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
         
     | 
| 
      
 82 
     | 
    
         
            +
            gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
         
     |