mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-07-05 17:52:38 +00:00
Vendor 0.12 SDK (#3432)
```bash GO111MODULE=on go get github.com/hashicorp/terraform@pluginsdk-v0.12-early7 GO111MODULE=on go mod vendor GO111MODULE=on go mod tidy ```
This commit is contained in:
parent
817dd3dc6c
commit
dbf9188792
32
go.mod
32
go.mod
|
@ -1,48 +1,24 @@
|
||||||
module github.com/terraform-providers/terraform-provider-google
|
module github.com/terraform-providers/terraform-provider-google
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.34.0
|
cloud.google.com/go v0.36.0
|
||||||
github.com/apparentlymart/go-cidr v1.0.0
|
github.com/apparentlymart/go-cidr v1.0.0
|
||||||
github.com/aws/aws-sdk-go v1.16.24 // indirect
|
|
||||||
github.com/blang/semver v3.5.1+incompatible // indirect
|
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e // indirect
|
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e // indirect
|
||||||
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 // indirect
|
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 // indirect
|
||||||
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92
|
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92
|
||||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db // indirect
|
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c // indirect
|
|
||||||
github.com/googleapis/gax-go v2.0.2+incompatible // indirect
|
|
||||||
github.com/hashicorp/errwrap v1.0.0
|
github.com/hashicorp/errwrap v1.0.0
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.0
|
github.com/hashicorp/go-cleanhttp v0.5.0
|
||||||
github.com/hashicorp/go-getter v1.0.1 // indirect
|
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f // indirect
|
|
||||||
github.com/hashicorp/go-multierror v1.0.0
|
github.com/hashicorp/go-multierror v1.0.0
|
||||||
github.com/hashicorp/go-plugin v0.0.0-20181212150838-f444068e8f5a // indirect
|
|
||||||
github.com/hashicorp/go-uuid v1.0.0 // indirect
|
|
||||||
github.com/hashicorp/go-version v1.1.0
|
github.com/hashicorp/go-version v1.1.0
|
||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181215005721-253da47fd604 // indirect
|
github.com/hashicorp/terraform v0.12.0-alpha4.0.20190410234817-9e158400c228
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250 // indirect
|
|
||||||
github.com/hashicorp/logutils v1.0.0 // indirect
|
|
||||||
github.com/hashicorp/terraform v0.11.9-0.20180926212128-35d82b055591
|
|
||||||
github.com/hashicorp/vault v1.0.1 // indirect
|
github.com/hashicorp/vault v1.0.1 // indirect
|
||||||
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a // indirect
|
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a // indirect
|
||||||
github.com/mitchellh/cli v1.0.0 // indirect
|
|
||||||
github.com/mitchellh/copystructure v1.0.0 // indirect
|
|
||||||
github.com/mitchellh/hashstructure v1.0.0
|
github.com/mitchellh/hashstructure v1.0.0
|
||||||
github.com/mitchellh/mapstructure v1.1.2 // indirect
|
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible // indirect
|
github.com/pierrec/lz4 v2.0.5+incompatible // indirect
|
||||||
github.com/stoewer/go-strcase v1.0.2
|
github.com/stoewer/go-strcase v1.0.2
|
||||||
github.com/stretchr/testify v1.3.0 // indirect
|
|
||||||
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible
|
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible
|
||||||
github.com/zclconf/go-cty v0.0.0-20181218225846-4fe1e489ee06 // indirect
|
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9
|
||||||
go.opencensus.io v0.18.0 // indirect
|
google.golang.org/api v0.1.0
|
||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 // indirect
|
|
||||||
golang.org/x/net v0.0.0-20190119204137-ed066c81e75e // indirect
|
|
||||||
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890
|
|
||||||
golang.org/x/sys v0.0.0-20190123074212-c6b37f3e9285 // indirect
|
|
||||||
google.golang.org/api v0.0.0-20181217000635-41dc4b66e69d
|
|
||||||
google.golang.org/appengine v1.3.0 // indirect
|
|
||||||
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5 // indirect
|
|
||||||
google.golang.org/grpc v1.17.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
322
go.sum
322
go.sum
|
@ -1,19 +1,51 @@
|
||||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg=
|
cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg=
|
||||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8=
|
||||||
|
cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40=
|
||||||
|
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
|
||||||
|
dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU=
|
||||||
|
dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4=
|
||||||
|
dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU=
|
||||||
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg=
|
||||||
|
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible h1:YFvAka2WKAl2xnJkYV1e1b7E2z88AgFszDzWU18ejMY=
|
||||||
|
github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||||
|
github.com/Azure/go-autorest v10.15.4+incompatible h1:q+DRrRdbCnkY7f2WxQBx58TwCGkEdMAK/hkZ10g0Pzk=
|
||||||
|
github.com/Azure/go-autorest v10.15.4+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
|
||||||
|
github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4 h1:pSm8mp0T2OH2CPmPDPtwHPr3VAQaOwVF/JbllOPP4xA=
|
||||||
|
github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
|
||||||
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022 h1:y8Gs8CzNfDF5AZvjr+5UyGQvQEBL7pwo+v+wX6q9JI8=
|
||||||
|
github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4=
|
||||||
|
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292 h1:tuQ7w+my8a8mkwN7x2TSd7OzTjkZ7rAeSyH4xncuAMI=
|
||||||
|
github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no=
|
||||||
|
github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw=
|
||||||
github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8=
|
github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8=
|
||||||
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
||||||
|
github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE=
|
||||||
|
github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
|
||||||
|
github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
|
||||||
|
github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
|
||||||
|
github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk=
|
||||||
|
github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M=
|
||||||
github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w=
|
github.com/apparentlymart/go-cidr v1.0.0 h1:lGDvXx8Lv9QHjrAVP7jyzleG4F9+FkRhJcEsDFxeb8w=
|
||||||
github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
|
github.com/apparentlymart/go-cidr v1.0.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
|
||||||
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
|
github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
|
||||||
|
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
|
||||||
|
github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
|
||||||
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
|
github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0=
|
||||||
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
|
github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk=
|
||||||
|
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2 h1:7Ip0wMmLHLRJdrloDxZfhMm0xrLXZS8+COSu2bXmEQs=
|
||||||
|
github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||||
|
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
|
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to=
|
||||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||||
|
github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
|
||||||
|
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||||
github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
|
github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
|
||||||
github.com/aws/aws-sdk-go v1.16.24 h1:I/A3Hwbgs3IEAP6v1bFpHKXiT7wZDoToX9cb00nxZnM=
|
github.com/aws/aws-sdk-go v1.16.36 h1:POeH34ZME++pr7GBGh+ZO6Y5kOwSMQpqp5BGUgooJ6k=
|
||||||
github.com/aws/aws-sdk-go v1.16.24/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
github.com/aws/aws-sdk-go v1.16.36/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
|
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas=
|
||||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
|
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
|
||||||
|
@ -21,189 +53,425 @@ github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQ
|
||||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||||
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
|
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
|
||||||
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
|
||||||
|
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
|
||||||
|
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
|
||||||
github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k=
|
github.com/bsm/go-vlq v0.0.0-20150828105119-ec6e8d4f5f4e/go.mod h1:N+BjUcTjSxc2mtRGSCPsat1kze3CUtvJN3/jTXlp29k=
|
||||||
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
|
github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s=
|
||||||
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
|
github.com/chzyer/readline v0.0.0-20161106042343-c914be64f07d h1:aG5FcWiZTOhPQzYIxwxSR1zEOxzL32fwr1CsaCfhO6w=
|
||||||
|
github.com/chzyer/readline v0.0.0-20161106042343-c914be64f07d/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
|
||||||
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||||
|
github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=
|
||||||
|
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||||
|
github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY=
|
||||||
|
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||||
|
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||||
|
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
|
||||||
|
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||||
|
github.com/dimchansky/utfbom v1.0.0 h1:fGC2kkf4qOoKqZ4q7iIh+Vef4ubC1c38UDsEyZynZPc=
|
||||||
|
github.com/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
|
||||||
|
github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
|
||||||
|
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||||
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e h1:bRcq7ruHMqCVB/ugLbBylx+LrccNACFDEaqAD/aZ80Q=
|
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e h1:bRcq7ruHMqCVB/ugLbBylx+LrccNACFDEaqAD/aZ80Q=
|
||||||
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e/go.mod h1:V+Qd57rJe8gd4eiGzZyg4h54VLHmYVVw54iMnlAMrF8=
|
github.com/dustinkirkland/golang-petname v0.0.0-20170921220637-d3c2ba80e75e/go.mod h1:V+Qd57rJe8gd4eiGzZyg4h54VLHmYVVw54iMnlAMrF8=
|
||||||
|
github.com/dylanmei/iso8601 v0.1.0 h1:812NGQDBcqquTfH5Yeo7lwR0nzx/cKdsmf3qMjPURUI=
|
||||||
|
github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ=
|
||||||
|
github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y=
|
||||||
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
|
github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
|
||||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||||
|
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
|
||||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||||
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 h1:R+19WKQClnfMXS60cP5BmMe1wjZ4u0evY2p2Ar0ZTXo=
|
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 h1:R+19WKQClnfMXS60cP5BmMe1wjZ4u0evY2p2Ar0ZTXo=
|
||||||
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
|
github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
|
||||||
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 h1:EipXK6U05IQ2wtuFRn4k3h0+2lXypzItoXGVyf4r9Io=
|
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 h1:EipXK6U05IQ2wtuFRn4k3h0+2lXypzItoXGVyf4r9Io=
|
||||||
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w=
|
github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w=
|
||||||
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
|
||||||
|
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
|
||||||
|
github.com/go-test/deep v1.0.1 h1:UQhStjbkDClarlmv0am7OXXO4/GaPdCGiUiMTvi28sg=
|
||||||
github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||||
|
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||||
|
github.com/gogo/protobuf v1.2.0 h1:xU6/SpYbvkNYiptHJYEDRseDLvYE7wSqhYYNy0QSUzI=
|
||||||
|
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk=
|
||||||
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/golang/protobuf v1.3.0 h1:kbxbvI4Un1LUWKxufD+BiE6AEExYYgkQLQmLFqA1LFk=
|
||||||
|
github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0=
|
||||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
|
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w=
|
||||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c h1:964Od4U6p2jUkFxvCydnIczKteheJEzHRToSGK3Bnlw=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
|
github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ=
|
||||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||||
github.com/googleapis/gax-go v2.0.2+incompatible h1:silFMLAnr330+NRuag/VjIGF7TLp/LBrV2CJKFLWEww=
|
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
|
||||||
github.com/googleapis/gax-go v2.0.2+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
|
github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
|
||||||
|
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||||
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.0.3 h1:siORttZ36U2R/WjiJuDz8znElWBiAlO9rVt+mqJt0Cc=
|
||||||
|
github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg=
|
||||||
|
github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968 h1:Pu+HW4kcQozw0QyrTTgLE+3RXNqFhQNNzhbnoLFL83c=
|
||||||
|
github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4=
|
||||||
|
github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01 h1:OgCNGSnEalfkRpn//WGJHhpo7fkP+LhTpvEITZ7CkK4=
|
||||||
|
github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw=
|
||||||
|
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
|
||||||
|
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||||
|
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||||
|
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||||
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||||
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
|
github.com/grpc-ecosystem/grpc-gateway v1.5.1/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw=
|
||||||
|
github.com/hashicorp/aws-sdk-go-base v0.2.0 h1:5bjZnWCvQg9Im5CHZr9t90IaFC4uvVlMl2fTh23IoCk=
|
||||||
|
github.com/hashicorp/aws-sdk-go-base v0.2.0/go.mod h1:ZIWACGGi0N7a4DZbf15yuE1JQORmWLtBcVM6F5SXNFU=
|
||||||
|
github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089 h1:1eDpXAxTh0iPv+1kc9/gfSI2pxRERDsTk/lNGolwHn8=
|
||||||
|
github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI=
|
||||||
github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v0.0.0-20180715044906-d6c0cd880357/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-azure-helpers v0.0.0-20190129193224-166dfd221bb2 h1:VBRx+yPYUZaobnn5ANBcOUf4hhWpTHSQgftG4TcDkhI=
|
||||||
|
github.com/hashicorp/go-azure-helpers v0.0.0-20190129193224-166dfd221bb2/go.mod h1:lu62V//auUow6k0IykxLK2DCNW8qTmpm8KqhYVWattA=
|
||||||
|
github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
|
||||||
|
github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig=
|
github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig=
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
|
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
|
||||||
github.com/hashicorp/go-getter v1.0.1 h1:WlFPjyPrd34KmTQMzSPA0pn9JpRsuHjHaRTx0VPzxYw=
|
github.com/hashicorp/go-getter v1.1.0 h1:iGVeg7L4V5FTFV3D6w+1NAyvth7BIWWSzD60pWloe2Q=
|
||||||
github.com/hashicorp/go-getter v1.0.1/go.mod h1:tkKN/c6I/LRSXLOWZ8wa/VB0LfVrryHzk/B0aZLKZI0=
|
github.com/hashicorp/go-getter v1.1.0/go.mod h1:q+PoBhh16brIKwJS9kt18jEtXHTg2EGkmrA9P7HVS+U=
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
|
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f h1:Yv9YzBlAETjy6AOX9eLBZ3nshNVRREgerT/3nvxlGho=
|
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f h1:Yv9YzBlAETjy6AOX9eLBZ3nshNVRREgerT/3nvxlGho=
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
|
github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ=
|
||||||
|
github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw=
|
||||||
|
github.com/hashicorp/go-msgpack v0.0.0-20150518234257-fa3f63826f7c/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
|
||||||
github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
|
github.com/hashicorp/go-multierror v0.0.0-20180717150148-3d5d8f294aa0/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I=
|
||||||
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
|
github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
|
||||||
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
|
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
|
||||||
github.com/hashicorp/go-plugin v0.0.0-20181212150838-f444068e8f5a h1:z9eTtDWoxYrJvtAD+xAepmTEfEmYgouWUytJ84UWAr8=
|
github.com/hashicorp/go-plugin v0.0.0-20190322172744-52e1c4730856 h1:FHiCaU46W1WoqApsaGGIKbNkhQ6v71hJrOf2INQMLUo=
|
||||||
github.com/hashicorp/go-plugin v0.0.0-20181212150838-f444068e8f5a/go.mod h1:Ft7ju2vWzhO0ETMKUVo12XmXmII6eSUS4rsPTkY/siA=
|
github.com/hashicorp/go-plugin v0.0.0-20190322172744-52e1c4730856/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.5.2 h1:AoISa4P4IsW0/m4T6St8Yw38gTl5GtBAgfkhYh1xAz4=
|
||||||
|
github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs=
|
||||||
|
github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI=
|
||||||
|
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
|
||||||
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
|
github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo=
|
||||||
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
|
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
|
||||||
|
github.com/hashicorp/go-slug v0.3.0 h1:L0c+AvH/J64iMNF4VqRaRku2DMTEuHioPVS7kMjWIU8=
|
||||||
|
github.com/hashicorp/go-slug v0.3.0/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8=
|
||||||
|
github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
|
||||||
|
github.com/hashicorp/go-tfe v0.3.14 h1:1eWmq4RAICGufydNUWu7ahb0gtq24pN9jatD2FkdxdE=
|
||||||
|
github.com/hashicorp/go-tfe v0.3.14/go.mod h1:SuPHR+OcxvzBZNye7nGPfwZTEyd3rWPfLVbCgyZPezM=
|
||||||
github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM=
|
github.com/hashicorp/go-uuid v1.0.0 h1:RS8zrF7PhGwyNPOtxSClXXj9HA8feRnJzgnI1RJCSnM=
|
||||||
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||||
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
|
||||||
|
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
|
||||||
github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0=
|
github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0=
|
||||||
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
|
||||||
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
|
||||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181215005721-253da47fd604 h1:k660QMbAqhL4vxSNPmvOAjzZJ7BQiwTrT8pa8RH3OEA=
|
github.com/hashicorp/hcl2 v0.0.0-20181208003705-670926858200/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
|
||||||
github.com/hashicorp/hcl2 v0.0.0-20181215005721-253da47fd604/go.mod h1:ShfpTh661oAaxo7VcNxg0zcZW6jvMa7Moy2oFx7e5dE=
|
github.com/hashicorp/hcl2 v0.0.0-20190402200843-8b450a7d58f9 h1:zCITwiA0cog6aYr/a/McDHKtgsEpYxXvTIgugv5iu8o=
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250 h1:fooK5IvDL/KIsi4LxF/JH68nVdrBSiGNPhS2JAQjtjo=
|
github.com/hashicorp/hcl2 v0.0.0-20190402200843-8b450a7d58f9/go.mod h1:HtEzazM5AZ9fviNEof8QZB4T1Vz9UhHrGhnMPzl//Ek=
|
||||||
github.com/hashicorp/hil v0.0.0-20170627220502-fa9f258a9250/go.mod h1:KHvg/R2/dPtaePb16oW4qIyzkMxXOL38xjRN64adsts=
|
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590 h1:2yzhWGdgQUWZUCNK+AoO35V+HTsgEmcM4J9IkArh7PI=
|
||||||
|
github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE=
|
||||||
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
|
github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
|
||||||
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
|
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
|
||||||
github.com/hashicorp/terraform v0.11.9-0.20180926212128-35d82b055591 h1:A2Bm1/dX0N2FRBqg10MgN0OYmdL/S8ZbgdmDvWmmQ7o=
|
github.com/hashicorp/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE=
|
||||||
github.com/hashicorp/terraform v0.11.9-0.20180926212128-35d82b055591/go.mod h1:uN1KUiT7Wdg61fPwsGXQwK3c8PmpIVZrt5Vcb1VrSoM=
|
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb h1:ZbgmOQt8DOg796figP87/EFCVx2v2h9yRvwHF/zceX4=
|
||||||
|
github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE=
|
||||||
|
github.com/hashicorp/terraform v0.12.0-alpha4.0.20190410234817-9e158400c228 h1:lOMGZhCqdE5Vckpn/T0CX2r+Pv20MifE5R2cZGTRLFA=
|
||||||
|
github.com/hashicorp/terraform v0.12.0-alpha4.0.20190410234817-9e158400c228/go.mod h1:aqon1YWM8WlqN05YI2PPpXH4K8QzGgSfpyPuTpRJ9VI=
|
||||||
|
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70 h1:oZm5nE11yhzsTRz/YrUyDMSvixePqjoZihwn8ipuOYI=
|
||||||
|
github.com/hashicorp/terraform-config-inspect v0.0.0-20190327195015-8022a2663a70/go.mod h1:ItvqtvbC3K23FFET62ZwnkwtpbKZm8t8eMcWjmVVjD8=
|
||||||
|
github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
||||||
github.com/hashicorp/vault v1.0.1 h1:x3hcjkJLd5L4ehPhZcraokFO7dq8MJ3oKvQtrkIiIU8=
|
github.com/hashicorp/vault v1.0.1 h1:x3hcjkJLd5L4ehPhZcraokFO7dq8MJ3oKvQtrkIiIU8=
|
||||||
github.com/hashicorp/vault v1.0.1/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
github.com/hashicorp/vault v1.0.1/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0=
|
||||||
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M=
|
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb h1:b5rjCoWHc7eqmAS4/qyk21ZsHyb6Mxv/jykxvNTkU4M=
|
||||||
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
|
||||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||||
|
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
|
||||||
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
|
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||||
|
github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926 h1:kie3qOosvRKqwij2HGzXWffwpXvcqfPPXRUw8I4F/mg=
|
||||||
|
github.com/joyent/triton-go v0.0.0-20180313100802-d8f9c0314926/go.mod h1:U+RSyWxWd04xTqnuOQxnai7XGS2PrPY2cfGoDKtMHjA=
|
||||||
|
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
|
github.com/kardianos/osext v0.0.0-20170510131534-ae77be60afb1/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||||
|
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
|
||||||
|
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||||
|
github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
|
||||||
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a h1:X/UFlwD2/UV0RCy+8ITi4DmxJwk83YUH7bXwkJIHHMo=
|
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a h1:X/UFlwD2/UV0RCy+8ITi4DmxJwk83YUH7bXwkJIHHMo=
|
||||||
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
|
github.com/keybase/go-crypto v0.0.0-20181127160227-255a5089e85a/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
|
||||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||||
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||||
|
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||||
|
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348 h1:MtvEpTB6LX3vkb4ax0b5D2DHbNAUsen0Gx5wZoq3lV4=
|
||||||
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k=
|
||||||
|
github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
|
||||||
|
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
|
||||||
|
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82 h1:wnfcqULT+N2seWf6y4yHzmi7GD2kNx4Ute0qArktD48=
|
||||||
|
github.com/lusis/go-artifactory v0.0.0-20160115162124-7e4ce345df82/go.mod h1:y54tfGmO3NKssKveTEFFzH8C/akrSOy/iW9qEAUDV84=
|
||||||
|
github.com/marstr/guid v1.1.0 h1:/M4H/1G4avsieL6BbUwCOBzulmoeKVP5ux/3mQNnbyI=
|
||||||
|
github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho=
|
||||||
|
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9 h1:SmVbOZFWAlyQshuMfOkiAx1f5oUTsOGG5IXplAEYeeM=
|
||||||
|
github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc=
|
||||||
|
github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b h1:/1RFh2SLCJ+tEnT73+Fh5R2AO89sQqs8ba7o+hx1G0Y=
|
||||||
|
github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY=
|
||||||
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
||||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||||
|
github.com/mattn/go-colorable v0.1.1 h1:G1f5SKeVxmagw/IyvzvtZE4Gybcc4Tr1tf7I8z0XgOg=
|
||||||
|
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||||
github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
|
github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
|
||||||
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||||
|
github.com/mattn/go-isatty v0.0.5 h1:tHXDdz1cpzGaovsTB+TVB8q90WEokoVmfMqoVcrLUgw=
|
||||||
|
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||||
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
|
||||||
|
github.com/mattn/go-shellwords v1.0.4 h1:xmZZyxuP+bYKAKkA9ABYXVNJ+G/Wf3R8d8vAP3LDJJk=
|
||||||
|
github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o=
|
||||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||||
|
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
|
||||||
|
github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||||
github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
|
github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y=
|
||||||
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
|
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
|
||||||
|
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
|
||||||
|
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
|
||||||
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
|
github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ=
|
||||||
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
|
||||||
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
|
github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0=
|
||||||
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||||
|
github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb h1:GRiLv4rgyqjqzxbhJke65IYUf4NCOOvrPOJbV/sPxkM=
|
||||||
|
github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM=
|
||||||
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
|
github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0=
|
||||||
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM=
|
||||||
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4=
|
||||||
|
github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo=
|
||||||
github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y=
|
github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y=
|
||||||
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
|
github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ=
|
||||||
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
|
github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
|
||||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||||
|
github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4 h1:jw9tsdJ1FQmUkyTXdIF/nByTX+mMnnp16glnvGZMsC4=
|
||||||
|
github.com/mitchellh/panicwrap v0.0.0-20190213213626-17011010aaa4/go.mod h1:YYMf4xtQnR8LRC0vKi3afvQ5QwRPQ17zjcpkBCufb+I=
|
||||||
|
github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51 h1:eD92Am0Qf3rqhsOeA1zwBHSfRkoHrt4o6uORamdmJP8=
|
||||||
|
github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo=
|
||||||
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
|
github.com/mitchellh/reflectwalk v1.0.0 h1:9D+8oIskB4VJBN5SFlmc27fSlIBZaov1Wpk/IfikLNY=
|
||||||
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
|
||||||
|
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
|
||||||
|
github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM=
|
||||||
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d h1:VhgPp6v9qf9Agr/56bj7Y/xa04UccTW04VP0Qed4vnQ=
|
||||||
|
github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U=
|
||||||
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
||||||
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
||||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||||
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8=
|
||||||
|
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58 h1:m3CEgv3ah1Rhy82L+c0QG/U3VyY1UsvsIdkh0/rU97Y=
|
||||||
|
github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk=
|
||||||
|
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I=
|
||||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||||
|
github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17 h1:chPfVn+gpAM5CTpTyVU9j8J+xgRGwmoDlNDLjKnJiYo=
|
||||||
|
github.com/pkg/errors v0.0.0-20170505043639-c605e284fe17/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
|
github.com/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w=
|
||||||
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
|
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
|
||||||
|
github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI=
|
||||||
|
github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E=
|
||||||
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
|
||||||
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
|
||||||
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
|
||||||
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
|
||||||
|
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||||
|
github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww=
|
||||||
|
github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0=
|
||||||
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
|
github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ=
|
||||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||||
|
github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY=
|
||||||
|
github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM=
|
||||||
|
github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0=
|
||||||
|
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
|
||||||
|
github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
|
||||||
|
github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw=
|
||||||
|
github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI=
|
||||||
|
github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU=
|
||||||
|
github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag=
|
||||||
|
github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg=
|
||||||
|
github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw=
|
||||||
|
github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y=
|
||||||
|
github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||||
|
github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q=
|
||||||
|
github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ=
|
||||||
|
github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I=
|
||||||
|
github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0=
|
||||||
|
github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ=
|
||||||
|
github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk=
|
||||||
|
github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||||
|
github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4=
|
||||||
|
github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw=
|
||||||
|
github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A=
|
||||||
|
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||||
|
github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
|
||||||
|
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||||
|
github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE=
|
||||||
|
github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA=
|
||||||
|
github.com/spf13/afero v1.2.1 h1:qgMbHoJbPbw579P+1zVY+6n4nIFuIchaIjzZ/I/Yq8M=
|
||||||
|
github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
|
||||||
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||||
github.com/stoewer/go-strcase v1.0.2 h1:l3iQ2FPu8+36ars/7syO1dQAkjwMCb1IE3J+Th0ohfE=
|
github.com/stoewer/go-strcase v1.0.2 h1:l3iQ2FPu8+36ars/7syO1dQAkjwMCb1IE3J+Th0ohfE=
|
||||||
github.com/stoewer/go-strcase v1.0.2/go.mod h1:eLfe5bL3qbL7ep/KafHzthxejrOF5J3xmt03uL5tzek=
|
github.com/stoewer/go-strcase v1.0.2/go.mod h1:eLfe5bL3qbL7ep/KafHzthxejrOF5J3xmt03uL5tzek=
|
||||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||||
|
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
|
github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d h1:Z4EH+5EffvBEhh37F0C0DnpklTMh00JOkjW5zK3ofBI=
|
||||||
|
github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BSTlc8jOjh0niykqEGVXOLXdi9o0r0kR8tCYiMvjFgw=
|
||||||
|
github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA=
|
||||||
|
github.com/terraform-providers/terraform-provider-openstack v1.15.0 h1:adpjqej+F8BAX9dHmuPF47sUIkgifeqBu6p7iCsyj0Y=
|
||||||
|
github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew=
|
||||||
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible h1:4wuExSWk/NHYS95P2H4KGv22bsabuDjGk5cFikIYzuU=
|
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible h1:4wuExSWk/NHYS95P2H4KGv22bsabuDjGk5cFikIYzuU=
|
||||||
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible/go.mod h1:1U2balY0mfjMnO5iotT60EuFqDJxqP433wJcybviCTw=
|
github.com/terraform-providers/terraform-provider-random v2.0.0+incompatible/go.mod h1:1U2balY0mfjMnO5iotT60EuFqDJxqP433wJcybviCTw=
|
||||||
|
github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||||
|
github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5 h1:cMjKdf4PxEBN9K5HaD9UMW8gkTbM0kMzkTa9SJe0WNQ=
|
||||||
|
github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ=
|
||||||
github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok=
|
github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok=
|
||||||
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
||||||
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
||||||
|
github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU=
|
||||||
|
github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
|
||||||
|
github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
|
||||||
|
github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
|
||||||
|
github.com/xiang90/probing v0.0.0-20160813154853-07dd2e8dfe18/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||||
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557 h1:Jpn2j6wHkC9wJv5iMfJhKqrZJx3TahFx+7sbZ7zQdxs=
|
||||||
|
github.com/xlab/treeprint v0.0.0-20161029104018-1d6e34225557/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
github.com/zclconf/go-cty v0.0.0-20181129180422-88fbe721e0f8/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181218225846-4fe1e489ee06 h1:J3bfEicd/d85VHC6bPhrKb+2jO+Uquiy2bnkhia6XBA=
|
github.com/zclconf/go-cty v0.0.0-20190124225737-a385d646c1e9/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
github.com/zclconf/go-cty v0.0.0-20181218225846-4fe1e489ee06/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
github.com/zclconf/go-cty v0.0.0-20190320224746-fd76348b9329 h1:ne520NlvoncW5zfBGkmP4EJhyd6ruSaSyhzobv0Vz9w=
|
||||||
|
github.com/zclconf/go-cty v0.0.0-20190320224746-fd76348b9329/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s=
|
||||||
go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938=
|
go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938=
|
||||||
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
|
go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA=
|
||||||
|
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||||
|
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||||
|
go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||||
|
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
|
||||||
|
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
|
||||||
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20180816225734-aabede6cba87/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9 h1:mKdxBk7AujPs8kU4m80U72y/zjbZ3UcXC7dClwKbUI0=
|
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20190222235706-ffb98f73852f/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2 h1:VklqNMn3ovrHsnt90PveolxSbWFaJdECFbxSq0Mqo2M=
|
||||||
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181129055619-fae4c4e3ad76/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190119204137-ed066c81e75e h1:MDa3fSUp6MdYHouVmCCNz/zaH2a6CRcxY3VhT/K3C5Q=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190119204137-ed066c81e75e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628=
|
||||||
|
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 h1:uESlIz09WIHT2I+pasSXcpLYqYK8wHcdCetU3VuMBJE=
|
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890 h1:uESlIz09WIHT2I+pasSXcpLYqYK8wHcdCetU3VuMBJE=
|
||||||
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9 h1:pfyU+l9dEu0vZzDDMsdAKa1gZbJYEn6urYXj/+Xkz7s=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20190220154721-9b3c75971fc9/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw=
|
||||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20181213200352-4d1cda033e06/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190123074212-c6b37f3e9285 h1:b5t9HsJXzMmseFB6KtTJWSEtPP8SlVI5nFdf4hnoRFY=
|
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/sys v0.0.0-20190123074212-c6b37f3e9285/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8=
|
||||||
|
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To=
|
||||||
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ=
|
||||||
|
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
google.golang.org/api v0.0.0-20181217000635-41dc4b66e69d h1:VhRqKr7/NDe5MpNpIj6Cy1xiwcVL4ZPs2GjTYziBRRg=
|
google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||||
google.golang.org/api v0.0.0-20181217000635-41dc4b66e69d/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
google.golang.org/api v0.1.0 h1:K6z2u68e86TPdSdefXdzvXgR1zEMa+459vBSfWYAZkI=
|
||||||
|
google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y=
|
||||||
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
google.golang.org/appengine v1.3.0 h1:FBSsiFRMz3LBeXIomRnVzrQwSDj4ibvcRexLG0LZGQk=
|
||||||
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
|
||||||
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5 h1:ZcmLUbATcwP+ZlsJ5pn5qeF9O3pC7U7mYpSnHH7RFFs=
|
google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
google.golang.org/genproto v0.0.0-20181218023534-67d6565462c5/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
|
google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
|
||||||
|
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 h1:mBVYJnbrXLA/ZCBTCe7PtEgAUP+1bg92qTaFoPHdz+8=
|
||||||
|
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4=
|
||||||
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||||
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||||
google.golang.org/grpc v1.17.0 h1:TRJYBgMclJvGYn2rIMjj+h9KtMt5r1Ij7ODVRIZkwhk=
|
google.golang.org/grpc v1.17.0 h1:TRJYBgMclJvGYn2rIMjj+h9KtMt5r1Ij7ODVRIZkwhk=
|
||||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
|
google.golang.org/grpc v1.18.0 h1:IZl7mfBGfbhYx2p2rKRtYgDFw6SBz+kclmxYrCksPPA=
|
||||||
|
google.golang.org/grpc v1.18.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw=
|
||||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||||
|
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
|
||||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||||
|
gopkg.in/vmihailenco/msgpack.v2 v2.9.1/go.mod h1:/3Dn1Npt9+MYyLpYYXjInO/5jvMLamn+AEGwNEOatn8=
|
||||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw=
|
||||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
|
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
|
||||||
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
|
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
|
||||||
|
labix.org/v2/mgo v0.0.0-20140701140051-000000000287/go.mod h1:Lg7AYkt1uXJoR9oeSZ3W/8IXLdvOfIITgZnommstyz4=
|
||||||
|
launchpad.net/gocheck v0.0.0-20140225173054-000000000087/go.mod h1:hj7XX3B/0A+80Vse0e+BUHsHMTEhd0O4cpUHr/e/BUM=
|
||||||
|
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
|
||||||
|
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
|
||||||
|
|
10
vendor/cloud.google.com/go/bigtable/admin.go
generated
vendored
10
vendor/cloud.google.com/go/bigtable/admin.go
generated
vendored
|
@ -385,7 +385,7 @@ func (ac *AdminClient) Snapshots(ctx context.Context, cluster string) *SnapshotI
|
||||||
for _, s := range resp.Snapshots {
|
for _, s := range resp.Snapshots {
|
||||||
snapshotInfo, err := newSnapshotInfo(s)
|
snapshotInfo, err := newSnapshotInfo(s)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Failed to parse snapshot proto %v", err)
|
return "", fmt.Errorf("failed to parse snapshot proto %v", err)
|
||||||
}
|
}
|
||||||
it.items = append(it.items, snapshotInfo)
|
it.items = append(it.items, snapshotInfo)
|
||||||
}
|
}
|
||||||
|
@ -407,12 +407,12 @@ func newSnapshotInfo(snapshot *btapb.Snapshot) (*SnapshotInfo, error) {
|
||||||
|
|
||||||
createTime, err := ptypes.Timestamp(snapshot.CreateTime)
|
createTime, err := ptypes.Timestamp(snapshot.CreateTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Invalid createTime: %v", err)
|
return nil, fmt.Errorf("invalid createTime: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteTime, err := ptypes.Timestamp(snapshot.DeleteTime)
|
deleteTime, err := ptypes.Timestamp(snapshot.DeleteTime)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Invalid deleteTime: %v", err)
|
return nil, fmt.Errorf("invalid deleteTime: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &SnapshotInfo{
|
return &SnapshotInfo{
|
||||||
|
@ -1064,9 +1064,7 @@ func (iac *InstanceAdminClient) ListAppProfiles(ctx context.Context, instanceID
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, a := range profileRes.AppProfiles {
|
pit.items = append(pit.items, profileRes.AppProfiles...)
|
||||||
pit.items = append(pit.items, a)
|
|
||||||
}
|
|
||||||
return profileRes.NextPageToken, nil
|
return profileRes.NextPageToken, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
vendor/cloud.google.com/go/bigtable/bigtable.go
generated
vendored
2
vendor/cloud.google.com/go/bigtable/bigtable.go
generated
vendored
|
@ -71,7 +71,7 @@ func NewClientWithConfig(ctx context.Context, project, instance string, config C
|
||||||
o = append(o,
|
o = append(o,
|
||||||
option.WithGRPCConnectionPool(4),
|
option.WithGRPCConnectionPool(4),
|
||||||
// Set the max size to correspond to server-side limits.
|
// Set the max size to correspond to server-side limits.
|
||||||
option.WithGRPCDialOption(grpc.WithDefaultCallOptions(grpc.MaxCallSendMsgSize(100<<20), grpc.MaxCallRecvMsgSize(100<<20))),
|
option.WithGRPCDialOption(grpc.WithDefaultCallOptions(grpc.MaxCallSendMsgSize(1<<28), grpc.MaxCallRecvMsgSize(1<<28))),
|
||||||
// TODO(grpc/grpc-go#1388) using connection pool without WithBlock
|
// TODO(grpc/grpc-go#1388) using connection pool without WithBlock
|
||||||
// can cause RPCs to fail randomly. We can delete this after the issue is fixed.
|
// can cause RPCs to fail randomly. We can delete this after the issue is fixed.
|
||||||
option.WithGRPCDialOption(grpc.WithBlock()))
|
option.WithGRPCDialOption(grpc.WithBlock()))
|
||||||
|
|
2
vendor/cloud.google.com/go/bigtable/internal/gax/call_option.go
generated
vendored
2
vendor/cloud.google.com/go/bigtable/internal/gax/call_option.go
generated
vendored
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Package gax is a snapshot from github.com/googleapis/gax-go with minor modifications.
|
// Package gax is a snapshot from github.com/googleapis/gax-go/v2 with minor modifications.
|
||||||
package gax
|
package gax
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
2
vendor/cloud.google.com/go/bigtable/internal/gax/invoke.go
generated
vendored
2
vendor/cloud.google.com/go/bigtable/internal/gax/invoke.go
generated
vendored
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Package gax is a snapshot from github.com/googleapis/gax-go with minor modifications.
|
// Package gax is a snapshot from github.com/googleapis/gax-go/v2 with minor modifications.
|
||||||
package gax
|
package gax
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
24
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
24
vendor/cloud.google.com/go/compute/metadata/metadata.go
generated
vendored
|
@ -137,7 +137,7 @@ func testOnGCE() bool {
|
||||||
resc := make(chan bool, 2)
|
resc := make(chan bool, 2)
|
||||||
|
|
||||||
// Try two strategies in parallel.
|
// Try two strategies in parallel.
|
||||||
// See https://github.com/GoogleCloudPlatform/google-cloud-go/issues/194
|
// See https://github.com/googleapis/google-cloud-go/issues/194
|
||||||
go func() {
|
go func() {
|
||||||
req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
|
req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
|
@ -300,8 +300,8 @@ func (c *Client) getETag(suffix string) (value, etag string, err error) {
|
||||||
// being stable anyway.
|
// being stable anyway.
|
||||||
host = metadataIP
|
host = metadataIP
|
||||||
}
|
}
|
||||||
url := "http://" + host + "/computeMetadata/v1/" + suffix
|
u := "http://" + host + "/computeMetadata/v1/" + suffix
|
||||||
req, _ := http.NewRequest("GET", url, nil)
|
req, _ := http.NewRequest("GET", u, nil)
|
||||||
req.Header.Set("Metadata-Flavor", "Google")
|
req.Header.Set("Metadata-Flavor", "Google")
|
||||||
req.Header.Set("User-Agent", userAgent)
|
req.Header.Set("User-Agent", userAgent)
|
||||||
res, err := c.hc.Do(req)
|
res, err := c.hc.Do(req)
|
||||||
|
@ -312,13 +312,13 @@ func (c *Client) getETag(suffix string) (value, etag string, err error) {
|
||||||
if res.StatusCode == http.StatusNotFound {
|
if res.StatusCode == http.StatusNotFound {
|
||||||
return "", "", NotDefinedError(suffix)
|
return "", "", NotDefinedError(suffix)
|
||||||
}
|
}
|
||||||
if res.StatusCode != 200 {
|
|
||||||
return "", "", fmt.Errorf("status code %d trying to fetch %s", res.StatusCode, url)
|
|
||||||
}
|
|
||||||
all, err := ioutil.ReadAll(res.Body)
|
all, err := ioutil.ReadAll(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", "", err
|
return "", "", err
|
||||||
}
|
}
|
||||||
|
if res.StatusCode != 200 {
|
||||||
|
return "", "", &Error{Code: res.StatusCode, Message: string(all)}
|
||||||
|
}
|
||||||
return string(all), res.Header.Get("Etag"), nil
|
return string(all), res.Header.Get("Etag"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -499,3 +499,15 @@ func (c *Client) Subscribe(suffix string, fn func(v string, ok bool) error) erro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Error contains an error response from the server.
|
||||||
|
type Error struct {
|
||||||
|
// Code is the HTTP response status code.
|
||||||
|
Code int
|
||||||
|
// Message is the server response message.
|
||||||
|
Message string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Error) Error() string {
|
||||||
|
return fmt.Sprintf("compute: Received %d `%s`", e.Code, e.Message)
|
||||||
|
}
|
||||||
|
|
25
vendor/cloud.google.com/go/iam/iam.go
generated
vendored
25
vendor/cloud.google.com/go/iam/iam.go
generated
vendored
|
@ -23,12 +23,14 @@ package iam
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
gax "github.com/googleapis/gax-go"
|
gax "github.com/googleapis/gax-go/v2"
|
||||||
pb "google.golang.org/genproto/googleapis/iam/v1"
|
pb "google.golang.org/genproto/googleapis/iam/v1"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
|
"google.golang.org/grpc/metadata"
|
||||||
)
|
)
|
||||||
|
|
||||||
// client abstracts the IAMPolicy API to allow multiple implementations.
|
// client abstracts the IAMPolicy API to allow multiple implementations.
|
||||||
|
@ -56,6 +58,9 @@ var withRetry = gax.WithRetry(func() gax.Retryer {
|
||||||
|
|
||||||
func (g *grpcClient) Get(ctx context.Context, resource string) (*pb.Policy, error) {
|
func (g *grpcClient) Get(ctx context.Context, resource string) (*pb.Policy, error) {
|
||||||
var proto *pb.Policy
|
var proto *pb.Policy
|
||||||
|
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
|
||||||
|
ctx = insertMetadata(ctx, md)
|
||||||
|
|
||||||
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
||||||
var err error
|
var err error
|
||||||
proto, err = g.c.GetIamPolicy(ctx, &pb.GetIamPolicyRequest{Resource: resource})
|
proto, err = g.c.GetIamPolicy(ctx, &pb.GetIamPolicyRequest{Resource: resource})
|
||||||
|
@ -68,6 +73,9 @@ func (g *grpcClient) Get(ctx context.Context, resource string) (*pb.Policy, erro
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *grpcClient) Set(ctx context.Context, resource string, p *pb.Policy) error {
|
func (g *grpcClient) Set(ctx context.Context, resource string, p *pb.Policy) error {
|
||||||
|
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
|
||||||
|
ctx = insertMetadata(ctx, md)
|
||||||
|
|
||||||
return gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
return gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
||||||
_, err := g.c.SetIamPolicy(ctx, &pb.SetIamPolicyRequest{
|
_, err := g.c.SetIamPolicy(ctx, &pb.SetIamPolicyRequest{
|
||||||
Resource: resource,
|
Resource: resource,
|
||||||
|
@ -79,6 +87,9 @@ func (g *grpcClient) Set(ctx context.Context, resource string, p *pb.Policy) err
|
||||||
|
|
||||||
func (g *grpcClient) Test(ctx context.Context, resource string, perms []string) ([]string, error) {
|
func (g *grpcClient) Test(ctx context.Context, resource string, perms []string) ([]string, error) {
|
||||||
var res *pb.TestIamPermissionsResponse
|
var res *pb.TestIamPermissionsResponse
|
||||||
|
md := metadata.Pairs("x-goog-request-params", fmt.Sprintf("%s=%v", "resource", resource))
|
||||||
|
ctx = insertMetadata(ctx, md)
|
||||||
|
|
||||||
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
err := gax.Invoke(ctx, func(ctx context.Context, _ gax.CallSettings) error {
|
||||||
var err error
|
var err error
|
||||||
res, err = g.c.TestIamPermissions(ctx, &pb.TestIamPermissionsRequest{
|
res, err = g.c.TestIamPermissions(ctx, &pb.TestIamPermissionsRequest{
|
||||||
|
@ -290,3 +301,15 @@ func memberIndex(m string, b *pb.Binding) int {
|
||||||
}
|
}
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// insertMetadata inserts metadata into the given context
|
||||||
|
func insertMetadata(ctx context.Context, mds ...metadata.MD) context.Context {
|
||||||
|
out, _ := metadata.FromOutgoingContext(ctx)
|
||||||
|
out = out.Copy()
|
||||||
|
for _, md := range mds {
|
||||||
|
for k, v := range md {
|
||||||
|
out[k] = append(out[k], v...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return metadata.NewOutgoingContext(ctx, out)
|
||||||
|
}
|
||||||
|
|
6
vendor/cloud.google.com/go/longrunning/autogen/doc.go
generated
vendored
6
vendor/cloud.google.com/go/longrunning/autogen/doc.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2018 Google LLC
|
// Copyright 2019 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
// AUTO-GENERATED CODE. DO NOT EDIT.
|
// Code generated by gapic-generator. DO NOT EDIT.
|
||||||
|
|
||||||
// Package longrunning is an auto-generated package for the
|
// Package longrunning is an auto-generated package for the
|
||||||
// Google Long Running Operations API.
|
// Google Long Running Operations API.
|
||||||
|
@ -85,4 +85,4 @@ func versionGo() string {
|
||||||
return "UNKNOWN"
|
return "UNKNOWN"
|
||||||
}
|
}
|
||||||
|
|
||||||
const versionClient = "20181129"
|
const versionClient = "20190121"
|
||||||
|
|
6
vendor/cloud.google.com/go/longrunning/autogen/operations_client.go
generated
vendored
6
vendor/cloud.google.com/go/longrunning/autogen/operations_client.go
generated
vendored
|
@ -1,4 +1,4 @@
|
||||||
// Copyright 2018 Google LLC
|
// Copyright 2019 Google LLC
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
// AUTO-GENERATED CODE. DO NOT EDIT.
|
// Code generated by gapic-generator. DO NOT EDIT.
|
||||||
|
|
||||||
package longrunning
|
package longrunning
|
||||||
|
|
||||||
|
@ -22,7 +22,7 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
gax "github.com/googleapis/gax-go"
|
gax "github.com/googleapis/gax-go/v2"
|
||||||
"google.golang.org/api/iterator"
|
"google.golang.org/api/iterator"
|
||||||
"google.golang.org/api/option"
|
"google.golang.org/api/option"
|
||||||
"google.golang.org/api/transport"
|
"google.golang.org/api/transport"
|
||||||
|
|
2
vendor/cloud.google.com/go/longrunning/longrunning.go
generated
vendored
2
vendor/cloud.google.com/go/longrunning/longrunning.go
generated
vendored
|
@ -30,7 +30,7 @@ import (
|
||||||
autogen "cloud.google.com/go/longrunning/autogen"
|
autogen "cloud.google.com/go/longrunning/autogen"
|
||||||
"github.com/golang/protobuf/proto"
|
"github.com/golang/protobuf/proto"
|
||||||
"github.com/golang/protobuf/ptypes"
|
"github.com/golang/protobuf/ptypes"
|
||||||
gax "github.com/googleapis/gax-go"
|
gax "github.com/googleapis/gax-go/v2"
|
||||||
pb "google.golang.org/genproto/googleapis/longrunning"
|
pb "google.golang.org/genproto/googleapis/longrunning"
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
|
|
51
vendor/github.com/agext/levenshtein/.gitignore
generated
vendored
51
vendor/github.com/agext/levenshtein/.gitignore
generated
vendored
|
@ -1,2 +1,53 @@
|
||||||
|
# Ignore docs files
|
||||||
|
_gh_pages
|
||||||
|
_site
|
||||||
|
|
||||||
|
# Ignore temporary files
|
||||||
README.html
|
README.html
|
||||||
coverage.out
|
coverage.out
|
||||||
|
.tmp
|
||||||
|
|
||||||
|
# Numerous always-ignore extensions
|
||||||
|
*.diff
|
||||||
|
*.err
|
||||||
|
*.log
|
||||||
|
*.orig
|
||||||
|
*.rej
|
||||||
|
*.swo
|
||||||
|
*.swp
|
||||||
|
*.vi
|
||||||
|
*.zip
|
||||||
|
*~
|
||||||
|
|
||||||
|
# OS or Editor folders
|
||||||
|
._*
|
||||||
|
.cache
|
||||||
|
.DS_Store
|
||||||
|
.idea
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.tmproj
|
||||||
|
*.esproj
|
||||||
|
*.sublime-project
|
||||||
|
*.sublime-workspace
|
||||||
|
nbproject
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# Komodo
|
||||||
|
.komodotools
|
||||||
|
*.komodoproject
|
||||||
|
|
||||||
|
# SCSS-Lint
|
||||||
|
scss-lint-report.xml
|
||||||
|
|
||||||
|
# grunt-contrib-sass cache
|
||||||
|
.sass-cache
|
||||||
|
|
||||||
|
# Jekyll metadata
|
||||||
|
docs/.jekyll-metadata
|
||||||
|
|
||||||
|
# Folders to ignore
|
||||||
|
.build
|
||||||
|
.test
|
||||||
|
bower_components
|
||||||
|
node_modules
|
||||||
|
|
85
vendor/github.com/agext/levenshtein/.travis.yml
generated
vendored
85
vendor/github.com/agext/levenshtein/.travis.yml
generated
vendored
|
@ -1,70 +1,25 @@
|
||||||
language: go
|
language: go
|
||||||
sudo: false
|
sudo: false
|
||||||
go:
|
matrix:
|
||||||
- 1.8
|
fast_finish: true
|
||||||
- 1.7.5
|
include:
|
||||||
- 1.7.4
|
- go: 1.11.x
|
||||||
- 1.7.3
|
env: TEST_METHOD=goveralls
|
||||||
- 1.7.2
|
- go: 1.10.x
|
||||||
- 1.7.1
|
- go: tip
|
||||||
- 1.7
|
- go: 1.9.x
|
||||||
- tip
|
- go: 1.8.x
|
||||||
- 1.6.4
|
- go: 1.7.x
|
||||||
- 1.6.3
|
- go: 1.6.x
|
||||||
- 1.6.2
|
- go: 1.5.x
|
||||||
- 1.6.1
|
allow_failures:
|
||||||
- 1.6
|
- go: tip
|
||||||
- 1.5.4
|
- go: 1.9.x
|
||||||
- 1.5.3
|
- go: 1.8.x
|
||||||
- 1.5.2
|
- go: 1.7.x
|
||||||
- 1.5.1
|
- go: 1.6.x
|
||||||
- 1.5
|
- go: 1.5.x
|
||||||
- 1.4.3
|
script: ./test.sh $TEST_METHOD
|
||||||
- 1.4.2
|
|
||||||
- 1.4.1
|
|
||||||
- 1.4
|
|
||||||
- 1.3.3
|
|
||||||
- 1.3.2
|
|
||||||
- 1.3.1
|
|
||||||
- 1.3
|
|
||||||
- 1.2.2
|
|
||||||
- 1.2.1
|
|
||||||
- 1.2
|
|
||||||
- 1.1.2
|
|
||||||
- 1.1.1
|
|
||||||
- 1.1
|
|
||||||
before_install:
|
|
||||||
- go get github.com/mattn/goveralls
|
|
||||||
script:
|
|
||||||
- $HOME/gopath/bin/goveralls -service=travis-ci
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
on_success: never
|
on_success: never
|
||||||
matrix:
|
|
||||||
fast_finish: true
|
|
||||||
allow_failures:
|
|
||||||
- go: tip
|
|
||||||
- go: 1.6.4
|
|
||||||
- go: 1.6.3
|
|
||||||
- go: 1.6.2
|
|
||||||
- go: 1.6.1
|
|
||||||
- go: 1.6
|
|
||||||
- go: 1.5.4
|
|
||||||
- go: 1.5.3
|
|
||||||
- go: 1.5.2
|
|
||||||
- go: 1.5.1
|
|
||||||
- go: 1.5
|
|
||||||
- go: 1.4.3
|
|
||||||
- go: 1.4.2
|
|
||||||
- go: 1.4.1
|
|
||||||
- go: 1.4
|
|
||||||
- go: 1.3.3
|
|
||||||
- go: 1.3.2
|
|
||||||
- go: 1.3.1
|
|
||||||
- go: 1.3
|
|
||||||
- go: 1.2.2
|
|
||||||
- go: 1.2.1
|
|
||||||
- go: 1.2
|
|
||||||
- go: 1.1.2
|
|
||||||
- go: 1.1.1
|
|
||||||
- go: 1.1
|
|
||||||
|
|
2
vendor/github.com/agext/levenshtein/README.md
generated
vendored
2
vendor/github.com/agext/levenshtein/README.md
generated
vendored
|
@ -11,7 +11,7 @@ This package implements distance and similarity metrics for strings, based on th
|
||||||
|
|
||||||
## Project Status
|
## Project Status
|
||||||
|
|
||||||
v1.2.1 Stable: Guaranteed no breaking changes to the API in future v1.x releases. Probably safe to use in production, though provided on "AS IS" basis.
|
v1.2.2 Stable: Guaranteed no breaking changes to the API in future v1.x releases. Probably safe to use in production, though provided on "AS IS" basis.
|
||||||
|
|
||||||
This package is being actively maintained. If you encounter any problems or have any suggestions for improvement, please [open an issue](https://github.com/agext/levenshtein/issues). Pull requests are welcome.
|
This package is being actively maintained. If you encounter any problems or have any suggestions for improvement, please [open an issue](https://github.com/agext/levenshtein/issues). Pull requests are welcome.
|
||||||
|
|
||||||
|
|
1
vendor/github.com/agext/levenshtein/go.mod
generated
vendored
Normal file
1
vendor/github.com/agext/levenshtein/go.mod
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
module github.com/agext/levenshtein
|
10
vendor/github.com/agext/levenshtein/test.sh
generated
vendored
Normal file
10
vendor/github.com/agext/levenshtein/test.sh
generated
vendored
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
set -ev
|
||||||
|
|
||||||
|
if [[ "$1" == "goveralls" ]]; then
|
||||||
|
echo "Testing with goveralls..."
|
||||||
|
go get github.com/mattn/goveralls
|
||||||
|
$HOME/gopath/bin/goveralls -service=travis-ci
|
||||||
|
else
|
||||||
|
echo "Testing with go test..."
|
||||||
|
go test -v ./...
|
||||||
|
fi
|
1
vendor/github.com/armon/go-radix/go.mod
generated
vendored
Normal file
1
vendor/github.com/armon/go-radix/go.mod
generated
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
module github.com/armon/go-radix
|
274
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
274
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
|
@ -185,6 +185,107 @@ var awsPartition = partition{
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"api.ecr": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{
|
||||||
|
Hostname: "api.ecr.ap-northeast-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-northeast-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ap-northeast-2": endpoint{
|
||||||
|
Hostname: "api.ecr.ap-northeast-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-northeast-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ap-south-1": endpoint{
|
||||||
|
Hostname: "api.ecr.ap-south-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-south-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ap-southeast-1": endpoint{
|
||||||
|
Hostname: "api.ecr.ap-southeast-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-southeast-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ap-southeast-2": endpoint{
|
||||||
|
Hostname: "api.ecr.ap-southeast-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-southeast-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"ca-central-1": endpoint{
|
||||||
|
Hostname: "api.ecr.ca-central-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ca-central-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"eu-central-1": endpoint{
|
||||||
|
Hostname: "api.ecr.eu-central-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-central-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"eu-north-1": endpoint{
|
||||||
|
Hostname: "api.ecr.eu-north-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-north-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"eu-west-1": endpoint{
|
||||||
|
Hostname: "api.ecr.eu-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"eu-west-2": endpoint{
|
||||||
|
Hostname: "api.ecr.eu-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"eu-west-3": endpoint{
|
||||||
|
Hostname: "api.ecr.eu-west-3.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "eu-west-3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"sa-east-1": endpoint{
|
||||||
|
Hostname: "api.ecr.sa-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "sa-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-east-1": endpoint{
|
||||||
|
Hostname: "api.ecr.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-east-2": endpoint{
|
||||||
|
Hostname: "api.ecr.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-1": endpoint{
|
||||||
|
Hostname: "api.ecr.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-west-2": endpoint{
|
||||||
|
Hostname: "api.ecr.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"api.mediatailor": service{
|
"api.mediatailor": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -220,9 +321,33 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-1-fips": endpoint{
|
||||||
|
Hostname: "api-fips.sagemaker.us-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
"us-east-2-fips": endpoint{
|
||||||
|
Hostname: "api-fips.sagemaker.us-east-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-east-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-1": endpoint{},
|
"us-west-1": endpoint{},
|
||||||
|
"us-west-1-fips": endpoint{
|
||||||
|
Hostname: "api-fips.sagemaker.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
|
"us-west-2-fips": endpoint{
|
||||||
|
Hostname: "api-fips.sagemaker.us-west-2.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-2",
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"apigateway": service{
|
"apigateway": service{
|
||||||
|
@ -282,6 +407,7 @@ var awsPartition = partition{
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-southeast-1": endpoint{},
|
"ap-southeast-1": endpoint{},
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
|
@ -378,6 +504,7 @@ var awsPartition = partition{
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-north-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -772,7 +899,9 @@ var awsPartition = partition{
|
||||||
Protocols: []string{"https"},
|
Protocols: []string{"https"},
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-southeast-1": endpoint{},
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
@ -890,6 +1019,7 @@ var awsPartition = partition{
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-north-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -1012,27 +1142,6 @@ var awsPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"ecr": service{
|
|
||||||
|
|
||||||
Endpoints: endpoints{
|
|
||||||
"ap-northeast-1": endpoint{},
|
|
||||||
"ap-northeast-2": endpoint{},
|
|
||||||
"ap-south-1": endpoint{},
|
|
||||||
"ap-southeast-1": endpoint{},
|
|
||||||
"ap-southeast-2": endpoint{},
|
|
||||||
"ca-central-1": endpoint{},
|
|
||||||
"eu-central-1": endpoint{},
|
|
||||||
"eu-north-1": endpoint{},
|
|
||||||
"eu-west-1": endpoint{},
|
|
||||||
"eu-west-2": endpoint{},
|
|
||||||
"eu-west-3": endpoint{},
|
|
||||||
"sa-east-1": endpoint{},
|
|
||||||
"us-east-1": endpoint{},
|
|
||||||
"us-east-2": endpoint{},
|
|
||||||
"us-west-1": endpoint{},
|
|
||||||
"us-west-2": endpoint{},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"ecs": service{
|
"ecs": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -1111,6 +1220,7 @@ var awsPartition = partition{
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
|
"eu-west-2": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
"us-west-1": endpoint{},
|
"us-west-1": endpoint{},
|
||||||
|
@ -1213,6 +1323,12 @@ var awsPartition = partition{
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
"fips": endpoint{
|
||||||
|
Hostname: "es-fips.us-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
@ -1506,6 +1622,12 @@ var awsPartition = partition{
|
||||||
"kms": service{
|
"kms": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ProdFips": endpoint{
|
||||||
|
Hostname: "kms-fips.ca-central-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ca-central-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -1545,6 +1667,22 @@ var awsPartition = partition{
|
||||||
"us-west-2": endpoint{},
|
"us-west-2": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"license-manager": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
|
"ap-south-1": endpoint{},
|
||||||
|
"ap-southeast-1": endpoint{},
|
||||||
|
"ap-southeast-2": endpoint{},
|
||||||
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-west-1": endpoint{},
|
||||||
|
"eu-west-2": endpoint{},
|
||||||
|
"us-east-1": endpoint{},
|
||||||
|
"us-east-2": endpoint{},
|
||||||
|
"us-west-2": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"lightsail": service{
|
"lightsail": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -1760,6 +1898,12 @@ var awsPartition = partition{
|
||||||
"neptune": service{
|
"neptune": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-northeast-1": endpoint{
|
||||||
|
Hostname: "rds.ap-northeast-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "ap-northeast-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"ap-southeast-1": endpoint{
|
"ap-southeast-1": endpoint{
|
||||||
Hostname: "rds.ap-southeast-1.amazonaws.com",
|
Hostname: "rds.ap-southeast-1.amazonaws.com",
|
||||||
CredentialScope: credentialScope{
|
CredentialScope: credentialScope{
|
||||||
|
@ -1938,6 +2082,8 @@ var awsPartition = partition{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
|
"ap-northeast-2": endpoint{},
|
||||||
|
"ap-south-1": endpoint{},
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
|
@ -2389,6 +2535,7 @@ var awsPartition = partition{
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
"eu-central-1": endpoint{},
|
"eu-central-1": endpoint{},
|
||||||
|
"eu-north-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
"eu-west-2": endpoint{},
|
"eu-west-2": endpoint{},
|
||||||
"eu-west-3": endpoint{},
|
"eu-west-3": endpoint{},
|
||||||
|
@ -2771,6 +2918,7 @@ var awsPartition = partition{
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
"ap-south-1": endpoint{},
|
||||||
"ap-southeast-1": endpoint{},
|
"ap-southeast-1": endpoint{},
|
||||||
"ap-southeast-2": endpoint{},
|
"ap-southeast-2": endpoint{},
|
||||||
"ca-central-1": endpoint{},
|
"ca-central-1": endpoint{},
|
||||||
|
@ -2929,6 +3077,23 @@ var awscnPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Services: services{
|
Services: services{
|
||||||
|
"api.ecr": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{
|
||||||
|
Hostname: "api.ecr.cn-north-1.amazonaws.com.cn",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "cn-north-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"cn-northwest-1": endpoint{
|
||||||
|
Hostname: "api.ecr.cn-northwest-1.amazonaws.com.cn",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "cn-northwest-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"apigateway": service{
|
"apigateway": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3049,13 +3214,6 @@ var awscnPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"ecr": service{
|
|
||||||
|
|
||||||
Endpoints: endpoints{
|
|
||||||
"cn-north-1": endpoint{},
|
|
||||||
"cn-northwest-1": endpoint{},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"ecs": service{
|
"ecs": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3116,6 +3274,12 @@ var awscnPartition = partition{
|
||||||
"cn-northwest-1": endpoint{},
|
"cn-northwest-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"gamelift": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"glacier": service{
|
"glacier": service{
|
||||||
Defaults: endpoint{
|
Defaults: endpoint{
|
||||||
Protocols: []string{"http", "https"},
|
Protocols: []string{"http", "https"},
|
||||||
|
@ -3354,6 +3518,23 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"api.ecr": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-east-1": endpoint{
|
||||||
|
Hostname: "api.ecr.us-gov-east-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-east-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"us-gov-west-1": endpoint{
|
||||||
|
Hostname: "api.ecr.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
"api.sagemaker": service{
|
"api.sagemaker": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3379,6 +3560,12 @@ var awsusgovPartition = partition{
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"athena": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"autoscaling": service{
|
"autoscaling": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3502,13 +3689,6 @@ var awsusgovPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"ecr": service{
|
|
||||||
|
|
||||||
Endpoints: endpoints{
|
|
||||||
"us-gov-east-1": endpoint{},
|
|
||||||
"us-gov-west-1": endpoint{},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"ecs": service{
|
"ecs": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -3563,6 +3743,12 @@ var awsusgovPartition = partition{
|
||||||
"es": service{
|
"es": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"fips": endpoint{
|
||||||
|
Hostname: "es-fips.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-gov-east-1": endpoint{},
|
"us-gov-east-1": endpoint{},
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
|
@ -3589,6 +3775,12 @@ var awsusgovPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"glue": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"guardduty": service{
|
"guardduty": service{
|
||||||
IsRegionalized: boxedTrue,
|
IsRegionalized: boxedTrue,
|
||||||
Defaults: endpoint{
|
Defaults: endpoint{
|
||||||
|
@ -3638,6 +3830,12 @@ var awsusgovPartition = partition{
|
||||||
"kms": service{
|
"kms": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ProdFips": endpoint{
|
||||||
|
Hostname: "kms-fips.us-gov-west-1.amazonaws.com",
|
||||||
|
CredentialScope: credentialScope{
|
||||||
|
Region: "us-gov-west-1",
|
||||||
|
},
|
||||||
|
},
|
||||||
"us-gov-east-1": endpoint{},
|
"us-gov-east-1": endpoint{},
|
||||||
"us-gov-west-1": endpoint{},
|
"us-gov-west-1": endpoint{},
|
||||||
},
|
},
|
||||||
|
@ -3873,5 +4071,11 @@ var awsusgovPartition = partition{
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"workspaces": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"us-gov-west-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/version.go
generated
vendored
|
@ -5,4 +5,4 @@ package aws
|
||||||
const SDKName = "aws-sdk-go"
|
const SDKName = "aws-sdk-go"
|
||||||
|
|
||||||
// SDKVersion is the version of this SDK
|
// SDKVersion is the version of this SDK
|
||||||
const SDKVersion = "1.16.24"
|
const SDKVersion = "1.16.36"
|
||||||
|
|
1
vendor/github.com/golang/protobuf/proto/decode.go
generated
vendored
1
vendor/github.com/golang/protobuf/proto/decode.go
generated
vendored
|
@ -186,7 +186,6 @@ func (p *Buffer) DecodeVarint() (x uint64, err error) {
|
||||||
if b&0x80 == 0 {
|
if b&0x80 == 0 {
|
||||||
goto done
|
goto done
|
||||||
}
|
}
|
||||||
// x -= 0x80 << 63 // Always zero.
|
|
||||||
|
|
||||||
return 0, errOverflow
|
return 0, errOverflow
|
||||||
|
|
||||||
|
|
63
vendor/github.com/golang/protobuf/proto/deprecated.go
generated
vendored
Normal file
63
vendor/github.com/golang/protobuf/proto/deprecated.go
generated
vendored
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
// Go support for Protocol Buffers - Google's data interchange format
|
||||||
|
//
|
||||||
|
// Copyright 2018 The Go Authors. All rights reserved.
|
||||||
|
// https://github.com/golang/protobuf
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from
|
||||||
|
// this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
package proto
|
||||||
|
|
||||||
|
import "errors"
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
type Stats struct{ Emalloc, Dmalloc, Encode, Decode, Chit, Cmiss, Size uint64 }
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func GetStats() Stats { return Stats{} }
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func MarshalMessageSet(interface{}) ([]byte, error) {
|
||||||
|
return nil, errors.New("proto: not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func UnmarshalMessageSet([]byte, interface{}) error {
|
||||||
|
return errors.New("proto: not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func MarshalMessageSetJSON(interface{}) ([]byte, error) {
|
||||||
|
return nil, errors.New("proto: not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func UnmarshalMessageSetJSON([]byte, interface{}) error {
|
||||||
|
return errors.New("proto: not implemented")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: do not use.
|
||||||
|
func RegisterMessageSetType(Message, int32, string) {}
|
3
vendor/github.com/golang/protobuf/proto/equal.go
generated
vendored
3
vendor/github.com/golang/protobuf/proto/equal.go
generated
vendored
|
@ -246,7 +246,8 @@ func equalExtMap(base reflect.Type, em1, em2 map[int32]Extension) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
m1, m2 := e1.value, e2.value
|
m1 := extensionAsLegacyType(e1.value)
|
||||||
|
m2 := extensionAsLegacyType(e2.value)
|
||||||
|
|
||||||
if m1 == nil && m2 == nil {
|
if m1 == nil && m2 == nil {
|
||||||
// Both have only encoded form.
|
// Both have only encoded form.
|
||||||
|
|
74
vendor/github.com/golang/protobuf/proto/extensions.go
generated
vendored
74
vendor/github.com/golang/protobuf/proto/extensions.go
generated
vendored
|
@ -186,7 +186,23 @@ type Extension struct {
|
||||||
// accessed using GetExtension (or GetExtensions) desc and value
|
// accessed using GetExtension (or GetExtensions) desc and value
|
||||||
// will be set.
|
// will be set.
|
||||||
desc *ExtensionDesc
|
desc *ExtensionDesc
|
||||||
|
|
||||||
|
// value is a concrete value for the extension field. Let the type of
|
||||||
|
// desc.ExtensionType be the "API type" and the type of Extension.value
|
||||||
|
// be the "storage type". The API type and storage type are the same except:
|
||||||
|
// * For scalars (except []byte), the API type uses *T,
|
||||||
|
// while the storage type uses T.
|
||||||
|
// * For repeated fields, the API type uses []T, while the storage type
|
||||||
|
// uses *[]T.
|
||||||
|
//
|
||||||
|
// The reason for the divergence is so that the storage type more naturally
|
||||||
|
// matches what is expected of when retrieving the values through the
|
||||||
|
// protobuf reflection APIs.
|
||||||
|
//
|
||||||
|
// The value may only be populated if desc is also populated.
|
||||||
value interface{}
|
value interface{}
|
||||||
|
|
||||||
|
// enc is the raw bytes for the extension field.
|
||||||
enc []byte
|
enc []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,7 +350,7 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {
|
||||||
// descriptors with the same field number.
|
// descriptors with the same field number.
|
||||||
return nil, errors.New("proto: descriptor conflict")
|
return nil, errors.New("proto: descriptor conflict")
|
||||||
}
|
}
|
||||||
return e.value, nil
|
return extensionAsLegacyType(e.value), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if extension.ExtensionType == nil {
|
if extension.ExtensionType == nil {
|
||||||
|
@ -349,11 +365,11 @@ func GetExtension(pb Message, extension *ExtensionDesc) (interface{}, error) {
|
||||||
|
|
||||||
// Remember the decoded version and drop the encoded version.
|
// Remember the decoded version and drop the encoded version.
|
||||||
// That way it is safe to mutate what we return.
|
// That way it is safe to mutate what we return.
|
||||||
e.value = v
|
e.value = extensionAsStorageType(v)
|
||||||
e.desc = extension
|
e.desc = extension
|
||||||
e.enc = nil
|
e.enc = nil
|
||||||
emap[extension.Field] = e
|
emap[extension.Field] = e
|
||||||
return e.value, nil
|
return extensionAsLegacyType(e.value), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// defaultExtensionValue returns the default value for extension.
|
// defaultExtensionValue returns the default value for extension.
|
||||||
|
@ -488,7 +504,7 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error
|
||||||
}
|
}
|
||||||
typ := reflect.TypeOf(extension.ExtensionType)
|
typ := reflect.TypeOf(extension.ExtensionType)
|
||||||
if typ != reflect.TypeOf(value) {
|
if typ != reflect.TypeOf(value) {
|
||||||
return errors.New("proto: bad extension value type")
|
return fmt.Errorf("proto: bad extension value type. got: %T, want: %T", value, extension.ExtensionType)
|
||||||
}
|
}
|
||||||
// nil extension values need to be caught early, because the
|
// nil extension values need to be caught early, because the
|
||||||
// encoder can't distinguish an ErrNil due to a nil extension
|
// encoder can't distinguish an ErrNil due to a nil extension
|
||||||
|
@ -500,7 +516,7 @@ func SetExtension(pb Message, extension *ExtensionDesc, value interface{}) error
|
||||||
}
|
}
|
||||||
|
|
||||||
extmap := epb.extensionsWrite()
|
extmap := epb.extensionsWrite()
|
||||||
extmap[extension.Field] = Extension{desc: extension, value: value}
|
extmap[extension.Field] = Extension{desc: extension, value: extensionAsStorageType(value)}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -541,3 +557,51 @@ func RegisterExtension(desc *ExtensionDesc) {
|
||||||
func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
|
func RegisteredExtensions(pb Message) map[int32]*ExtensionDesc {
|
||||||
return extensionMaps[reflect.TypeOf(pb).Elem()]
|
return extensionMaps[reflect.TypeOf(pb).Elem()]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// extensionAsLegacyType converts an value in the storage type as the API type.
|
||||||
|
// See Extension.value.
|
||||||
|
func extensionAsLegacyType(v interface{}) interface{} {
|
||||||
|
switch rv := reflect.ValueOf(v); rv.Kind() {
|
||||||
|
case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
|
||||||
|
// Represent primitive types as a pointer to the value.
|
||||||
|
rv2 := reflect.New(rv.Type())
|
||||||
|
rv2.Elem().Set(rv)
|
||||||
|
v = rv2.Interface()
|
||||||
|
case reflect.Ptr:
|
||||||
|
// Represent slice types as the value itself.
|
||||||
|
switch rv.Type().Elem().Kind() {
|
||||||
|
case reflect.Slice:
|
||||||
|
if rv.IsNil() {
|
||||||
|
v = reflect.Zero(rv.Type().Elem()).Interface()
|
||||||
|
} else {
|
||||||
|
v = rv.Elem().Interface()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
// extensionAsStorageType converts an value in the API type as the storage type.
|
||||||
|
// See Extension.value.
|
||||||
|
func extensionAsStorageType(v interface{}) interface{} {
|
||||||
|
switch rv := reflect.ValueOf(v); rv.Kind() {
|
||||||
|
case reflect.Ptr:
|
||||||
|
// Represent slice types as the value itself.
|
||||||
|
switch rv.Type().Elem().Kind() {
|
||||||
|
case reflect.Bool, reflect.Int32, reflect.Int64, reflect.Uint32, reflect.Uint64, reflect.Float32, reflect.Float64, reflect.String:
|
||||||
|
if rv.IsNil() {
|
||||||
|
v = reflect.Zero(rv.Type().Elem()).Interface()
|
||||||
|
} else {
|
||||||
|
v = rv.Elem().Interface()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case reflect.Slice:
|
||||||
|
// Represent slice types as a pointer to the value.
|
||||||
|
if rv.Type().Elem().Kind() != reflect.Uint8 {
|
||||||
|
rv2 := reflect.New(rv.Type())
|
||||||
|
rv2.Elem().Set(rv)
|
||||||
|
v = rv2.Interface()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
38
vendor/github.com/golang/protobuf/proto/lib.go
generated
vendored
38
vendor/github.com/golang/protobuf/proto/lib.go
generated
vendored
|
@ -341,26 +341,6 @@ type Message interface {
|
||||||
ProtoMessage()
|
ProtoMessage()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stats records allocation details about the protocol buffer encoders
|
|
||||||
// and decoders. Useful for tuning the library itself.
|
|
||||||
type Stats struct {
|
|
||||||
Emalloc uint64 // mallocs in encode
|
|
||||||
Dmalloc uint64 // mallocs in decode
|
|
||||||
Encode uint64 // number of encodes
|
|
||||||
Decode uint64 // number of decodes
|
|
||||||
Chit uint64 // number of cache hits
|
|
||||||
Cmiss uint64 // number of cache misses
|
|
||||||
Size uint64 // number of sizes
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set to true to enable stats collection.
|
|
||||||
const collectStats = false
|
|
||||||
|
|
||||||
var stats Stats
|
|
||||||
|
|
||||||
// GetStats returns a copy of the global Stats structure.
|
|
||||||
func GetStats() Stats { return stats }
|
|
||||||
|
|
||||||
// A Buffer is a buffer manager for marshaling and unmarshaling
|
// A Buffer is a buffer manager for marshaling and unmarshaling
|
||||||
// protocol buffers. It may be reused between invocations to
|
// protocol buffers. It may be reused between invocations to
|
||||||
// reduce memory usage. It is not necessary to use a Buffer;
|
// reduce memory usage. It is not necessary to use a Buffer;
|
||||||
|
@ -960,13 +940,19 @@ func isProto3Zero(v reflect.Value) bool {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProtoPackageIsVersion2 is referenced from generated protocol buffer files
|
const (
|
||||||
// to assert that that code is compatible with this version of the proto package.
|
// ProtoPackageIsVersion3 is referenced from generated protocol buffer files
|
||||||
const ProtoPackageIsVersion2 = true
|
// to assert that that code is compatible with this version of the proto package.
|
||||||
|
ProtoPackageIsVersion3 = true
|
||||||
|
|
||||||
// ProtoPackageIsVersion1 is referenced from generated protocol buffer files
|
// ProtoPackageIsVersion2 is referenced from generated protocol buffer files
|
||||||
// to assert that that code is compatible with this version of the proto package.
|
// to assert that that code is compatible with this version of the proto package.
|
||||||
const ProtoPackageIsVersion1 = true
|
ProtoPackageIsVersion2 = true
|
||||||
|
|
||||||
|
// ProtoPackageIsVersion1 is referenced from generated protocol buffer files
|
||||||
|
// to assert that that code is compatible with this version of the proto package.
|
||||||
|
ProtoPackageIsVersion1 = true
|
||||||
|
)
|
||||||
|
|
||||||
// InternalMessageInfo is a type used internally by generated .pb.go files.
|
// InternalMessageInfo is a type used internally by generated .pb.go files.
|
||||||
// This type is not intended to be used by non-generated code.
|
// This type is not intended to be used by non-generated code.
|
||||||
|
|
137
vendor/github.com/golang/protobuf/proto/message_set.go
generated
vendored
137
vendor/github.com/golang/protobuf/proto/message_set.go
generated
vendored
|
@ -36,13 +36,7 @@ package proto
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"encoding/json"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"reflect"
|
|
||||||
"sort"
|
|
||||||
"sync"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.
|
// errNoMessageTypeID occurs when a protocol buffer does not have a message type ID.
|
||||||
|
@ -145,46 +139,9 @@ func skipVarint(buf []byte) []byte {
|
||||||
return buf[i+1:]
|
return buf[i+1:]
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalMessageSet encodes the extension map represented by m in the message set wire format.
|
// unmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.
|
||||||
// It is called by generated Marshal methods on protocol buffer messages with the message_set_wire_format option.
|
|
||||||
func MarshalMessageSet(exts interface{}) ([]byte, error) {
|
|
||||||
return marshalMessageSet(exts, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
// marshaMessageSet implements above function, with the opt to turn on / off deterministic during Marshal.
|
|
||||||
func marshalMessageSet(exts interface{}, deterministic bool) ([]byte, error) {
|
|
||||||
switch exts := exts.(type) {
|
|
||||||
case *XXX_InternalExtensions:
|
|
||||||
var u marshalInfo
|
|
||||||
siz := u.sizeMessageSet(exts)
|
|
||||||
b := make([]byte, 0, siz)
|
|
||||||
return u.appendMessageSet(b, exts, deterministic)
|
|
||||||
|
|
||||||
case map[int32]Extension:
|
|
||||||
// This is an old-style extension map.
|
|
||||||
// Wrap it in a new-style XXX_InternalExtensions.
|
|
||||||
ie := XXX_InternalExtensions{
|
|
||||||
p: &struct {
|
|
||||||
mu sync.Mutex
|
|
||||||
extensionMap map[int32]Extension
|
|
||||||
}{
|
|
||||||
extensionMap: exts,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
var u marshalInfo
|
|
||||||
siz := u.sizeMessageSet(&ie)
|
|
||||||
b := make([]byte, 0, siz)
|
|
||||||
return u.appendMessageSet(b, &ie, deterministic)
|
|
||||||
|
|
||||||
default:
|
|
||||||
return nil, errors.New("proto: not an extension map")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalMessageSet decodes the extension map encoded in buf in the message set wire format.
|
|
||||||
// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option.
|
// It is called by Unmarshal methods on protocol buffer messages with the message_set_wire_format option.
|
||||||
func UnmarshalMessageSet(buf []byte, exts interface{}) error {
|
func unmarshalMessageSet(buf []byte, exts interface{}) error {
|
||||||
var m map[int32]Extension
|
var m map[int32]Extension
|
||||||
switch exts := exts.(type) {
|
switch exts := exts.(type) {
|
||||||
case *XXX_InternalExtensions:
|
case *XXX_InternalExtensions:
|
||||||
|
@ -222,93 +179,3 @@ func UnmarshalMessageSet(buf []byte, exts interface{}) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// MarshalMessageSetJSON encodes the extension map represented by m in JSON format.
|
|
||||||
// It is called by generated MarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
|
|
||||||
func MarshalMessageSetJSON(exts interface{}) ([]byte, error) {
|
|
||||||
var m map[int32]Extension
|
|
||||||
switch exts := exts.(type) {
|
|
||||||
case *XXX_InternalExtensions:
|
|
||||||
var mu sync.Locker
|
|
||||||
m, mu = exts.extensionsRead()
|
|
||||||
if m != nil {
|
|
||||||
// Keep the extensions map locked until we're done marshaling to prevent
|
|
||||||
// races between marshaling and unmarshaling the lazily-{en,de}coded
|
|
||||||
// values.
|
|
||||||
mu.Lock()
|
|
||||||
defer mu.Unlock()
|
|
||||||
}
|
|
||||||
case map[int32]Extension:
|
|
||||||
m = exts
|
|
||||||
default:
|
|
||||||
return nil, errors.New("proto: not an extension map")
|
|
||||||
}
|
|
||||||
var b bytes.Buffer
|
|
||||||
b.WriteByte('{')
|
|
||||||
|
|
||||||
// Process the map in key order for deterministic output.
|
|
||||||
ids := make([]int32, 0, len(m))
|
|
||||||
for id := range m {
|
|
||||||
ids = append(ids, id)
|
|
||||||
}
|
|
||||||
sort.Sort(int32Slice(ids)) // int32Slice defined in text.go
|
|
||||||
|
|
||||||
for i, id := range ids {
|
|
||||||
ext := m[id]
|
|
||||||
msd, ok := messageSetMap[id]
|
|
||||||
if !ok {
|
|
||||||
// Unknown type; we can't render it, so skip it.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
if i > 0 && b.Len() > 1 {
|
|
||||||
b.WriteByte(',')
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Fprintf(&b, `"[%s]":`, msd.name)
|
|
||||||
|
|
||||||
x := ext.value
|
|
||||||
if x == nil {
|
|
||||||
x = reflect.New(msd.t.Elem()).Interface()
|
|
||||||
if err := Unmarshal(ext.enc, x.(Message)); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
d, err := json.Marshal(x)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
b.Write(d)
|
|
||||||
}
|
|
||||||
b.WriteByte('}')
|
|
||||||
return b.Bytes(), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// UnmarshalMessageSetJSON decodes the extension map encoded in buf in JSON format.
|
|
||||||
// It is called by generated UnmarshalJSON methods on protocol buffer messages with the message_set_wire_format option.
|
|
||||||
func UnmarshalMessageSetJSON(buf []byte, exts interface{}) error {
|
|
||||||
// Common-case fast path.
|
|
||||||
if len(buf) == 0 || bytes.Equal(buf, []byte("{}")) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is fairly tricky, and it's not clear that it is needed.
|
|
||||||
return errors.New("TODO: UnmarshalMessageSetJSON not yet implemented")
|
|
||||||
}
|
|
||||||
|
|
||||||
// A global registry of types that can be used in a MessageSet.
|
|
||||||
|
|
||||||
var messageSetMap = make(map[int32]messageSetDesc)
|
|
||||||
|
|
||||||
type messageSetDesc struct {
|
|
||||||
t reflect.Type // pointer to struct
|
|
||||||
name string
|
|
||||||
}
|
|
||||||
|
|
||||||
// RegisterMessageSetType is called from the generated code.
|
|
||||||
func RegisterMessageSetType(m Message, fieldNum int32, name string) {
|
|
||||||
messageSetMap[fieldNum] = messageSetDesc{
|
|
||||||
t: reflect.TypeOf(m),
|
|
||||||
name: name,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
5
vendor/github.com/golang/protobuf/proto/pointer_reflect.go
generated
vendored
5
vendor/github.com/golang/protobuf/proto/pointer_reflect.go
generated
vendored
|
@ -79,10 +79,13 @@ func toPointer(i *Message) pointer {
|
||||||
|
|
||||||
// toAddrPointer converts an interface to a pointer that points to
|
// toAddrPointer converts an interface to a pointer that points to
|
||||||
// the interface data.
|
// the interface data.
|
||||||
func toAddrPointer(i *interface{}, isptr bool) pointer {
|
func toAddrPointer(i *interface{}, isptr, deref bool) pointer {
|
||||||
v := reflect.ValueOf(*i)
|
v := reflect.ValueOf(*i)
|
||||||
u := reflect.New(v.Type())
|
u := reflect.New(v.Type())
|
||||||
u.Elem().Set(v)
|
u.Elem().Set(v)
|
||||||
|
if deref {
|
||||||
|
u = u.Elem()
|
||||||
|
}
|
||||||
return pointer{v: u}
|
return pointer{v: u}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
13
vendor/github.com/golang/protobuf/proto/pointer_unsafe.go
generated
vendored
13
vendor/github.com/golang/protobuf/proto/pointer_unsafe.go
generated
vendored
|
@ -85,16 +85,21 @@ func toPointer(i *Message) pointer {
|
||||||
|
|
||||||
// toAddrPointer converts an interface to a pointer that points to
|
// toAddrPointer converts an interface to a pointer that points to
|
||||||
// the interface data.
|
// the interface data.
|
||||||
func toAddrPointer(i *interface{}, isptr bool) pointer {
|
func toAddrPointer(i *interface{}, isptr, deref bool) (p pointer) {
|
||||||
// Super-tricky - read or get the address of data word of interface value.
|
// Super-tricky - read or get the address of data word of interface value.
|
||||||
if isptr {
|
if isptr {
|
||||||
// The interface is of pointer type, thus it is a direct interface.
|
// The interface is of pointer type, thus it is a direct interface.
|
||||||
// The data word is the pointer data itself. We take its address.
|
// The data word is the pointer data itself. We take its address.
|
||||||
return pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)}
|
p = pointer{p: unsafe.Pointer(uintptr(unsafe.Pointer(i)) + ptrSize)}
|
||||||
}
|
} else {
|
||||||
// The interface is not of pointer type. The data word is the pointer
|
// The interface is not of pointer type. The data word is the pointer
|
||||||
// to the data.
|
// to the data.
|
||||||
return pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
|
p = pointer{p: (*[2]unsafe.Pointer)(unsafe.Pointer(i))[1]}
|
||||||
|
}
|
||||||
|
if deref {
|
||||||
|
p.p = *(*unsafe.Pointer)(p.p)
|
||||||
|
}
|
||||||
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
// valToPointer converts v to a pointer. v must be of pointer type.
|
// valToPointer converts v to a pointer. v must be of pointer type.
|
||||||
|
|
31
vendor/github.com/golang/protobuf/proto/properties.go
generated
vendored
31
vendor/github.com/golang/protobuf/proto/properties.go
generated
vendored
|
@ -334,9 +334,6 @@ func GetProperties(t reflect.Type) *StructProperties {
|
||||||
sprop, ok := propertiesMap[t]
|
sprop, ok := propertiesMap[t]
|
||||||
propertiesMu.RUnlock()
|
propertiesMu.RUnlock()
|
||||||
if ok {
|
if ok {
|
||||||
if collectStats {
|
|
||||||
stats.Chit++
|
|
||||||
}
|
|
||||||
return sprop
|
return sprop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -346,17 +343,20 @@ func GetProperties(t reflect.Type) *StructProperties {
|
||||||
return sprop
|
return sprop
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type (
|
||||||
|
oneofFuncsIface interface {
|
||||||
|
XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
|
||||||
|
}
|
||||||
|
oneofWrappersIface interface {
|
||||||
|
XXX_OneofWrappers() []interface{}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
// getPropertiesLocked requires that propertiesMu is held.
|
// getPropertiesLocked requires that propertiesMu is held.
|
||||||
func getPropertiesLocked(t reflect.Type) *StructProperties {
|
func getPropertiesLocked(t reflect.Type) *StructProperties {
|
||||||
if prop, ok := propertiesMap[t]; ok {
|
if prop, ok := propertiesMap[t]; ok {
|
||||||
if collectStats {
|
|
||||||
stats.Chit++
|
|
||||||
}
|
|
||||||
return prop
|
return prop
|
||||||
}
|
}
|
||||||
if collectStats {
|
|
||||||
stats.Cmiss++
|
|
||||||
}
|
|
||||||
|
|
||||||
prop := new(StructProperties)
|
prop := new(StructProperties)
|
||||||
// in case of recursive protos, fill this in now.
|
// in case of recursive protos, fill this in now.
|
||||||
|
@ -391,13 +391,14 @@ func getPropertiesLocked(t reflect.Type) *StructProperties {
|
||||||
// Re-order prop.order.
|
// Re-order prop.order.
|
||||||
sort.Sort(prop)
|
sort.Sort(prop)
|
||||||
|
|
||||||
type oneofMessage interface {
|
|
||||||
XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
|
|
||||||
}
|
|
||||||
if om, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok {
|
|
||||||
var oots []interface{}
|
var oots []interface{}
|
||||||
_, _, _, oots = om.XXX_OneofFuncs()
|
switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
|
||||||
|
case oneofFuncsIface:
|
||||||
|
_, _, _, oots = m.XXX_OneofFuncs()
|
||||||
|
case oneofWrappersIface:
|
||||||
|
oots = m.XXX_OneofWrappers()
|
||||||
|
}
|
||||||
|
if len(oots) > 0 {
|
||||||
// Interpret oneof metadata.
|
// Interpret oneof metadata.
|
||||||
prop.OneofTypes = make(map[string]*OneofProperties)
|
prop.OneofTypes = make(map[string]*OneofProperties)
|
||||||
for _, oot := range oots {
|
for _, oot := range oots {
|
||||||
|
|
45
vendor/github.com/golang/protobuf/proto/table_marshal.go
generated
vendored
45
vendor/github.com/golang/protobuf/proto/table_marshal.go
generated
vendored
|
@ -87,6 +87,7 @@ type marshalElemInfo struct {
|
||||||
sizer sizer
|
sizer sizer
|
||||||
marshaler marshaler
|
marshaler marshaler
|
||||||
isptr bool // elem is pointer typed, thus interface of this type is a direct interface (extension only)
|
isptr bool // elem is pointer typed, thus interface of this type is a direct interface (extension only)
|
||||||
|
deref bool // dereference the pointer before operating on it; implies isptr
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -320,8 +321,11 @@ func (u *marshalInfo) computeMarshalInfo() {
|
||||||
|
|
||||||
// get oneof implementers
|
// get oneof implementers
|
||||||
var oneofImplementers []interface{}
|
var oneofImplementers []interface{}
|
||||||
if m, ok := reflect.Zero(reflect.PtrTo(t)).Interface().(oneofMessage); ok {
|
switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
|
||||||
|
case oneofFuncsIface:
|
||||||
_, _, _, oneofImplementers = m.XXX_OneofFuncs()
|
_, _, _, oneofImplementers = m.XXX_OneofFuncs()
|
||||||
|
case oneofWrappersIface:
|
||||||
|
oneofImplementers = m.XXX_OneofWrappers()
|
||||||
}
|
}
|
||||||
|
|
||||||
n := t.NumField()
|
n := t.NumField()
|
||||||
|
@ -407,13 +411,22 @@ func (u *marshalInfo) getExtElemInfo(desc *ExtensionDesc) *marshalElemInfo {
|
||||||
panic("tag is not an integer")
|
panic("tag is not an integer")
|
||||||
}
|
}
|
||||||
wt := wiretype(tags[0])
|
wt := wiretype(tags[0])
|
||||||
|
if t.Kind() == reflect.Ptr && t.Elem().Kind() != reflect.Struct {
|
||||||
|
t = t.Elem()
|
||||||
|
}
|
||||||
sizer, marshaler := typeMarshaler(t, tags, false, false)
|
sizer, marshaler := typeMarshaler(t, tags, false, false)
|
||||||
|
var deref bool
|
||||||
|
if t.Kind() == reflect.Slice && t.Elem().Kind() != reflect.Uint8 {
|
||||||
|
t = reflect.PtrTo(t)
|
||||||
|
deref = true
|
||||||
|
}
|
||||||
e = &marshalElemInfo{
|
e = &marshalElemInfo{
|
||||||
wiretag: uint64(tag)<<3 | wt,
|
wiretag: uint64(tag)<<3 | wt,
|
||||||
tagsize: SizeVarint(uint64(tag) << 3),
|
tagsize: SizeVarint(uint64(tag) << 3),
|
||||||
sizer: sizer,
|
sizer: sizer,
|
||||||
marshaler: marshaler,
|
marshaler: marshaler,
|
||||||
isptr: t.Kind() == reflect.Ptr,
|
isptr: t.Kind() == reflect.Ptr,
|
||||||
|
deref: deref,
|
||||||
}
|
}
|
||||||
|
|
||||||
// update cache
|
// update cache
|
||||||
|
@ -448,7 +461,7 @@ func (fi *marshalFieldInfo) computeMarshalFieldInfo(f *reflect.StructField) {
|
||||||
|
|
||||||
func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) {
|
func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofImplementers []interface{}) {
|
||||||
fi.field = toField(f)
|
fi.field = toField(f)
|
||||||
fi.wiretag = 1<<31 - 1 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire.
|
fi.wiretag = math.MaxInt32 // Use a large tag number, make oneofs sorted at the end. This tag will not appear on the wire.
|
||||||
fi.isPointer = true
|
fi.isPointer = true
|
||||||
fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f)
|
fi.sizer, fi.marshaler = makeOneOfMarshaler(fi, f)
|
||||||
fi.oneofElems = make(map[reflect.Type]*marshalElemInfo)
|
fi.oneofElems = make(map[reflect.Type]*marshalElemInfo)
|
||||||
|
@ -476,10 +489,6 @@ func (fi *marshalFieldInfo) computeOneofFieldInfo(f *reflect.StructField, oneofI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type oneofMessage interface {
|
|
||||||
XXX_OneofFuncs() (func(Message, *Buffer) error, func(Message, int, int, *Buffer) (bool, error), func(Message) int, []interface{})
|
|
||||||
}
|
|
||||||
|
|
||||||
// wiretype returns the wire encoding of the type.
|
// wiretype returns the wire encoding of the type.
|
||||||
func wiretype(encoding string) uint64 {
|
func wiretype(encoding string) uint64 {
|
||||||
switch encoding {
|
switch encoding {
|
||||||
|
@ -2310,8 +2319,8 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {
|
||||||
for _, k := range m.MapKeys() {
|
for _, k := range m.MapKeys() {
|
||||||
ki := k.Interface()
|
ki := k.Interface()
|
||||||
vi := m.MapIndex(k).Interface()
|
vi := m.MapIndex(k).Interface()
|
||||||
kaddr := toAddrPointer(&ki, false) // pointer to key
|
kaddr := toAddrPointer(&ki, false, false) // pointer to key
|
||||||
vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value
|
vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value
|
||||||
siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
|
siz := keySizer(kaddr, 1) + valSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
|
||||||
n += siz + SizeVarint(uint64(siz)) + tagsize
|
n += siz + SizeVarint(uint64(siz)) + tagsize
|
||||||
}
|
}
|
||||||
|
@ -2329,8 +2338,8 @@ func makeMapMarshaler(f *reflect.StructField) (sizer, marshaler) {
|
||||||
for _, k := range keys {
|
for _, k := range keys {
|
||||||
ki := k.Interface()
|
ki := k.Interface()
|
||||||
vi := m.MapIndex(k).Interface()
|
vi := m.MapIndex(k).Interface()
|
||||||
kaddr := toAddrPointer(&ki, false) // pointer to key
|
kaddr := toAddrPointer(&ki, false, false) // pointer to key
|
||||||
vaddr := toAddrPointer(&vi, valIsPtr) // pointer to value
|
vaddr := toAddrPointer(&vi, valIsPtr, false) // pointer to value
|
||||||
b = appendVarint(b, tag)
|
b = appendVarint(b, tag)
|
||||||
siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
|
siz := keySizer(kaddr, 1) + valCachedSizer(vaddr, 1) // tag of key = 1 (size=1), tag of val = 2 (size=1)
|
||||||
b = appendVarint(b, uint64(siz))
|
b = appendVarint(b, uint64(siz))
|
||||||
|
@ -2399,7 +2408,7 @@ func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {
|
||||||
// the last time this function was called.
|
// the last time this function was called.
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
n += ei.sizer(p, ei.tagsize)
|
n += ei.sizer(p, ei.tagsize)
|
||||||
}
|
}
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
|
@ -2434,7 +2443,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
||||||
if !nerr.Merge(err) {
|
if !nerr.Merge(err) {
|
||||||
return b, err
|
return b, err
|
||||||
|
@ -2465,7 +2474,7 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
||||||
if !nerr.Merge(err) {
|
if !nerr.Merge(err) {
|
||||||
return b, err
|
return b, err
|
||||||
|
@ -2510,7 +2519,7 @@ func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions) int {
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
n += ei.sizer(p, 1) // message, tag = 3 (size=1)
|
n += ei.sizer(p, 1) // message, tag = 3 (size=1)
|
||||||
}
|
}
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
|
@ -2553,7 +2562,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
|
b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
|
||||||
if !nerr.Merge(err) {
|
if !nerr.Merge(err) {
|
||||||
return b, err
|
return b, err
|
||||||
|
@ -2591,7 +2600,7 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, de
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
|
b, err = ei.marshaler(b, p, 3<<3|WireBytes, deterministic)
|
||||||
b = append(b, 1<<3|WireEndGroup)
|
b = append(b, 1<<3|WireEndGroup)
|
||||||
if !nerr.Merge(err) {
|
if !nerr.Merge(err) {
|
||||||
|
@ -2621,7 +2630,7 @@ func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
n += ei.sizer(p, ei.tagsize)
|
n += ei.sizer(p, ei.tagsize)
|
||||||
}
|
}
|
||||||
return n
|
return n
|
||||||
|
@ -2656,7 +2665,7 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ
|
||||||
|
|
||||||
ei := u.getExtElemInfo(e.desc)
|
ei := u.getExtElemInfo(e.desc)
|
||||||
v := e.value
|
v := e.value
|
||||||
p := toAddrPointer(&v, ei.isptr)
|
p := toAddrPointer(&v, ei.isptr, ei.deref)
|
||||||
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
b, err = ei.marshaler(b, p, ei.wiretag, deterministic)
|
||||||
if !nerr.Merge(err) {
|
if !nerr.Merge(err) {
|
||||||
return b, err
|
return b, err
|
||||||
|
|
24
vendor/github.com/golang/protobuf/proto/table_unmarshal.go
generated
vendored
24
vendor/github.com/golang/protobuf/proto/table_unmarshal.go
generated
vendored
|
@ -136,7 +136,7 @@ func (u *unmarshalInfo) unmarshal(m pointer, b []byte) error {
|
||||||
u.computeUnmarshalInfo()
|
u.computeUnmarshalInfo()
|
||||||
}
|
}
|
||||||
if u.isMessageSet {
|
if u.isMessageSet {
|
||||||
return UnmarshalMessageSet(b, m.offset(u.extensions).toExtensions())
|
return unmarshalMessageSet(b, m.offset(u.extensions).toExtensions())
|
||||||
}
|
}
|
||||||
var reqMask uint64 // bitmask of required fields we've seen.
|
var reqMask uint64 // bitmask of required fields we've seen.
|
||||||
var errLater error
|
var errLater error
|
||||||
|
@ -362,13 +362,15 @@ func (u *unmarshalInfo) computeUnmarshalInfo() {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find any types associated with oneof fields.
|
// Find any types associated with oneof fields.
|
||||||
// TODO: XXX_OneofFuncs returns more info than we need. Get rid of some of it?
|
var oneofImplementers []interface{}
|
||||||
fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("XXX_OneofFuncs")
|
switch m := reflect.Zero(reflect.PtrTo(t)).Interface().(type) {
|
||||||
if fn.IsValid() {
|
case oneofFuncsIface:
|
||||||
res := fn.Call(nil)[3] // last return value from XXX_OneofFuncs: []interface{}
|
_, _, _, oneofImplementers = m.XXX_OneofFuncs()
|
||||||
for i := res.Len() - 1; i >= 0; i-- {
|
case oneofWrappersIface:
|
||||||
v := res.Index(i) // interface{}
|
oneofImplementers = m.XXX_OneofWrappers()
|
||||||
tptr := reflect.ValueOf(v.Interface()).Type() // *Msg_X
|
}
|
||||||
|
for _, v := range oneofImplementers {
|
||||||
|
tptr := reflect.TypeOf(v) // *Msg_X
|
||||||
typ := tptr.Elem() // Msg_X
|
typ := tptr.Elem() // Msg_X
|
||||||
|
|
||||||
f := typ.Field(0) // oneof implementers have one field
|
f := typ.Field(0) // oneof implementers have one field
|
||||||
|
@ -397,11 +399,11 @@ func (u *unmarshalInfo) computeUnmarshalInfo() {
|
||||||
u.setTag(fieldNum, of.field, unmarshal, 0, name)
|
u.setTag(fieldNum, of.field, unmarshal, 0, name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get extension ranges, if any.
|
// Get extension ranges, if any.
|
||||||
fn = reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray")
|
fn := reflect.Zero(reflect.PtrTo(t)).MethodByName("ExtensionRangeArray")
|
||||||
if fn.IsValid() {
|
if fn.IsValid() {
|
||||||
if !u.extensions.IsValid() && !u.oldExtensions.IsValid() {
|
if !u.extensions.IsValid() && !u.oldExtensions.IsValid() {
|
||||||
panic("a message with extensions, but no extensions field in " + t.Name())
|
panic("a message with extensions, but no extensions field in " + t.Name())
|
||||||
|
@ -1948,7 +1950,7 @@ func encodeVarint(b []byte, x uint64) []byte {
|
||||||
// If there is an error, it returns 0,0.
|
// If there is an error, it returns 0,0.
|
||||||
func decodeVarint(b []byte) (uint64, int) {
|
func decodeVarint(b []byte) (uint64, int) {
|
||||||
var x, y uint64
|
var x, y uint64
|
||||||
if len(b) <= 0 {
|
if len(b) == 0 {
|
||||||
goto bad
|
goto bad
|
||||||
}
|
}
|
||||||
x = uint64(b[0])
|
x = uint64(b[0])
|
||||||
|
|
601
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
generated
vendored
601
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
generated
vendored
File diff suppressed because it is too large
Load Diff
11
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
generated
vendored
11
vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
generated
vendored
|
@ -417,6 +417,17 @@ message FileOptions {
|
||||||
// determining the namespace.
|
// determining the namespace.
|
||||||
optional string php_namespace = 41;
|
optional string php_namespace = 41;
|
||||||
|
|
||||||
|
|
||||||
|
// Use this option to change the namespace of php generated metadata classes.
|
||||||
|
// Default is empty. When this option is empty, the proto file name will be used
|
||||||
|
// for determining the namespace.
|
||||||
|
optional string php_metadata_namespace = 44;
|
||||||
|
|
||||||
|
// Use this option to change the package of ruby generated classes. Default
|
||||||
|
// is empty. When this option is not set, the package name will be used for
|
||||||
|
// determining the ruby package.
|
||||||
|
optional string ruby_package = 45;
|
||||||
|
|
||||||
// The parser stores options it doesn't recognize here.
|
// The parser stores options it doesn't recognize here.
|
||||||
// See the documentation for the "Options" section above.
|
// See the documentation for the "Options" section above.
|
||||||
repeated UninterpretedOption uninterpreted_option = 999;
|
repeated UninterpretedOption uninterpreted_option = 999;
|
||||||
|
|
45
vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
generated
vendored
45
vendor/github.com/golang/protobuf/ptypes/any/any.pb.go
generated
vendored
|
@ -1,11 +1,13 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/any.proto
|
// source: google/protobuf/any.proto
|
||||||
|
|
||||||
package any // import "github.com/golang/protobuf/ptypes/any"
|
package any
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
import (
|
||||||
import fmt "fmt"
|
fmt "fmt"
|
||||||
import math "math"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ = proto.Marshal
|
var _ = proto.Marshal
|
||||||
|
@ -16,7 +18,7 @@ var _ = math.Inf
|
||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
// `Any` contains an arbitrary serialized protocol buffer message along with a
|
||||||
// URL that describes the type of the serialized message.
|
// URL that describes the type of the serialized message.
|
||||||
|
@ -99,17 +101,18 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
type Any struct {
|
type Any struct {
|
||||||
// A URL/resource name whose content describes the type of the
|
// A URL/resource name that uniquely identifies the type of the serialized
|
||||||
// serialized protocol buffer message.
|
// protocol buffer message. The last segment of the URL's path must represent
|
||||||
|
// the fully qualified name of the type (as in
|
||||||
|
// `path/google.protobuf.Duration`). The name should be in a canonical form
|
||||||
|
// (e.g., leading "." is not accepted).
|
||||||
//
|
//
|
||||||
// For URLs which use the scheme `http`, `https`, or no scheme, the
|
// In practice, teams usually precompile into the binary all types that they
|
||||||
// following restrictions and interpretations apply:
|
// expect it to use in the context of Any. However, for URLs which use the
|
||||||
|
// scheme `http`, `https`, or no scheme, one can optionally set up a type
|
||||||
|
// server that maps type URLs to message definitions as follows:
|
||||||
//
|
//
|
||||||
// * If no scheme is provided, `https` is assumed.
|
// * If no scheme is provided, `https` is assumed.
|
||||||
// * The last segment of the URL's path must represent the fully
|
|
||||||
// qualified name of the type (as in `path/google.protobuf.Duration`).
|
|
||||||
// The name should be in a canonical form (e.g., leading "." is
|
|
||||||
// not accepted).
|
|
||||||
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
||||||
// value in binary format, or produce an error.
|
// value in binary format, or produce an error.
|
||||||
// * Applications are allowed to cache lookup results based on the
|
// * Applications are allowed to cache lookup results based on the
|
||||||
|
@ -118,6 +121,10 @@ type Any struct {
|
||||||
// on changes to types. (Use versioned type names to manage
|
// on changes to types. (Use versioned type names to manage
|
||||||
// breaking changes.)
|
// breaking changes.)
|
||||||
//
|
//
|
||||||
|
// Note: this functionality is not currently available in the official
|
||||||
|
// protobuf release, and it is not used for type URLs beginning with
|
||||||
|
// type.googleapis.com.
|
||||||
|
//
|
||||||
// Schemes other than `http`, `https` (or the empty scheme) might be
|
// Schemes other than `http`, `https` (or the empty scheme) might be
|
||||||
// used with implementation specific semantics.
|
// used with implementation specific semantics.
|
||||||
//
|
//
|
||||||
|
@ -133,17 +140,19 @@ func (m *Any) Reset() { *m = Any{} }
|
||||||
func (m *Any) String() string { return proto.CompactTextString(m) }
|
func (m *Any) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Any) ProtoMessage() {}
|
func (*Any) ProtoMessage() {}
|
||||||
func (*Any) Descriptor() ([]byte, []int) {
|
func (*Any) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_any_744b9ca530f228db, []int{0}
|
return fileDescriptor_b53526c13ae22eb4, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Any) XXX_WellKnownType() string { return "Any" }
|
func (*Any) XXX_WellKnownType() string { return "Any" }
|
||||||
|
|
||||||
func (m *Any) XXX_Unmarshal(b []byte) error {
|
func (m *Any) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Any.Unmarshal(m, b)
|
return xxx_messageInfo_Any.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Any) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Any.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Any.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Any) XXX_Merge(src proto.Message) {
|
func (m *Any) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Any.Merge(dst, src)
|
xxx_messageInfo_Any.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Any) XXX_Size() int {
|
func (m *Any) XXX_Size() int {
|
||||||
return xxx_messageInfo_Any.Size(m)
|
return xxx_messageInfo_Any.Size(m)
|
||||||
|
@ -172,9 +181,9 @@ func init() {
|
||||||
proto.RegisterType((*Any)(nil), "google.protobuf.Any")
|
proto.RegisterType((*Any)(nil), "google.protobuf.Any")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_any_744b9ca530f228db) }
|
func init() { proto.RegisterFile("google/protobuf/any.proto", fileDescriptor_b53526c13ae22eb4) }
|
||||||
|
|
||||||
var fileDescriptor_any_744b9ca530f228db = []byte{
|
var fileDescriptor_b53526c13ae22eb4 = []byte{
|
||||||
// 185 bytes of a gzipped FileDescriptorProto
|
// 185 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4c, 0xcf, 0xcf, 0x4f,
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4,
|
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0xd4,
|
||||||
|
|
21
vendor/github.com/golang/protobuf/ptypes/any/any.proto
generated
vendored
21
vendor/github.com/golang/protobuf/ptypes/any/any.proto
generated
vendored
|
@ -120,17 +120,18 @@ option objc_class_prefix = "GPB";
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
message Any {
|
message Any {
|
||||||
// A URL/resource name whose content describes the type of the
|
// A URL/resource name that uniquely identifies the type of the serialized
|
||||||
// serialized protocol buffer message.
|
// protocol buffer message. The last segment of the URL's path must represent
|
||||||
|
// the fully qualified name of the type (as in
|
||||||
|
// `path/google.protobuf.Duration`). The name should be in a canonical form
|
||||||
|
// (e.g., leading "." is not accepted).
|
||||||
//
|
//
|
||||||
// For URLs which use the scheme `http`, `https`, or no scheme, the
|
// In practice, teams usually precompile into the binary all types that they
|
||||||
// following restrictions and interpretations apply:
|
// expect it to use in the context of Any. However, for URLs which use the
|
||||||
|
// scheme `http`, `https`, or no scheme, one can optionally set up a type
|
||||||
|
// server that maps type URLs to message definitions as follows:
|
||||||
//
|
//
|
||||||
// * If no scheme is provided, `https` is assumed.
|
// * If no scheme is provided, `https` is assumed.
|
||||||
// * The last segment of the URL's path must represent the fully
|
|
||||||
// qualified name of the type (as in `path/google.protobuf.Duration`).
|
|
||||||
// The name should be in a canonical form (e.g., leading "." is
|
|
||||||
// not accepted).
|
|
||||||
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
// * An HTTP GET on the URL must yield a [google.protobuf.Type][]
|
||||||
// value in binary format, or produce an error.
|
// value in binary format, or produce an error.
|
||||||
// * Applications are allowed to cache lookup results based on the
|
// * Applications are allowed to cache lookup results based on the
|
||||||
|
@ -139,6 +140,10 @@ message Any {
|
||||||
// on changes to types. (Use versioned type names to manage
|
// on changes to types. (Use versioned type names to manage
|
||||||
// breaking changes.)
|
// breaking changes.)
|
||||||
//
|
//
|
||||||
|
// Note: this functionality is not currently available in the official
|
||||||
|
// protobuf release, and it is not used for type URLs beginning with
|
||||||
|
// type.googleapis.com.
|
||||||
|
//
|
||||||
// Schemes other than `http`, `https` (or the empty scheme) might be
|
// Schemes other than `http`, `https` (or the empty scheme) might be
|
||||||
// used with implementation specific semantics.
|
// used with implementation specific semantics.
|
||||||
//
|
//
|
||||||
|
|
2
vendor/github.com/golang/protobuf/ptypes/duration.go
generated
vendored
2
vendor/github.com/golang/protobuf/ptypes/duration.go
generated
vendored
|
@ -82,7 +82,7 @@ func Duration(p *durpb.Duration) (time.Duration, error) {
|
||||||
return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
|
return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
|
||||||
}
|
}
|
||||||
if p.Nanos != 0 {
|
if p.Nanos != 0 {
|
||||||
d += time.Duration(p.Nanos)
|
d += time.Duration(p.Nanos) * time.Nanosecond
|
||||||
if (d < 0) != (p.Nanos < 0) {
|
if (d < 0) != (p.Nanos < 0) {
|
||||||
return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
|
return 0, fmt.Errorf("duration: %v is out of range for time.Duration", p)
|
||||||
}
|
}
|
||||||
|
|
26
vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
generated
vendored
26
vendor/github.com/golang/protobuf/ptypes/duration/duration.pb.go
generated
vendored
|
@ -1,11 +1,13 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/duration.proto
|
// source: google/protobuf/duration.proto
|
||||||
|
|
||||||
package duration // import "github.com/golang/protobuf/ptypes/duration"
|
package duration
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
import (
|
||||||
import fmt "fmt"
|
fmt "fmt"
|
||||||
import math "math"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ = proto.Marshal
|
var _ = proto.Marshal
|
||||||
|
@ -16,7 +18,7 @@ var _ = math.Inf
|
||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
// A Duration represents a signed, fixed-length span of time represented
|
// A Duration represents a signed, fixed-length span of time represented
|
||||||
// as a count of seconds and fractions of seconds at nanosecond
|
// as a count of seconds and fractions of seconds at nanosecond
|
||||||
|
@ -99,17 +101,19 @@ func (m *Duration) Reset() { *m = Duration{} }
|
||||||
func (m *Duration) String() string { return proto.CompactTextString(m) }
|
func (m *Duration) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Duration) ProtoMessage() {}
|
func (*Duration) ProtoMessage() {}
|
||||||
func (*Duration) Descriptor() ([]byte, []int) {
|
func (*Duration) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_duration_e7d612259e3f0613, []int{0}
|
return fileDescriptor_23597b2ebd7ac6c5, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Duration) XXX_WellKnownType() string { return "Duration" }
|
func (*Duration) XXX_WellKnownType() string { return "Duration" }
|
||||||
|
|
||||||
func (m *Duration) XXX_Unmarshal(b []byte) error {
|
func (m *Duration) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Duration.Unmarshal(m, b)
|
return xxx_messageInfo_Duration.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Duration.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Duration.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Duration) XXX_Merge(src proto.Message) {
|
func (m *Duration) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Duration.Merge(dst, src)
|
xxx_messageInfo_Duration.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Duration) XXX_Size() int {
|
func (m *Duration) XXX_Size() int {
|
||||||
return xxx_messageInfo_Duration.Size(m)
|
return xxx_messageInfo_Duration.Size(m)
|
||||||
|
@ -138,11 +142,9 @@ func init() {
|
||||||
proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
|
proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() { proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_23597b2ebd7ac6c5) }
|
||||||
proto.RegisterFile("google/protobuf/duration.proto", fileDescriptor_duration_e7d612259e3f0613)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_duration_e7d612259e3f0613 = []byte{
|
var fileDescriptor_23597b2ebd7ac6c5 = []byte{
|
||||||
// 190 bytes of a gzipped FileDescriptorProto
|
// 190 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a,
|
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0x29, 0x2d, 0x4a,
|
||||||
|
|
24
vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
generated
vendored
24
vendor/github.com/golang/protobuf/ptypes/empty/empty.pb.go
generated
vendored
|
@ -1,11 +1,13 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/empty.proto
|
// source: google/protobuf/empty.proto
|
||||||
|
|
||||||
package empty // import "github.com/golang/protobuf/ptypes/empty"
|
package empty
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
import (
|
||||||
import fmt "fmt"
|
fmt "fmt"
|
||||||
import math "math"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ = proto.Marshal
|
var _ = proto.Marshal
|
||||||
|
@ -16,7 +18,7 @@ var _ = math.Inf
|
||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
// A generic empty message that you can re-use to avoid defining duplicated
|
// A generic empty message that you can re-use to avoid defining duplicated
|
||||||
// empty messages in your APIs. A typical example is to use it as the request
|
// empty messages in your APIs. A typical example is to use it as the request
|
||||||
|
@ -37,17 +39,19 @@ func (m *Empty) Reset() { *m = Empty{} }
|
||||||
func (m *Empty) String() string { return proto.CompactTextString(m) }
|
func (m *Empty) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Empty) ProtoMessage() {}
|
func (*Empty) ProtoMessage() {}
|
||||||
func (*Empty) Descriptor() ([]byte, []int) {
|
func (*Empty) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_empty_39e6d6db0632e5b2, []int{0}
|
return fileDescriptor_900544acb223d5b8, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Empty) XXX_WellKnownType() string { return "Empty" }
|
func (*Empty) XXX_WellKnownType() string { return "Empty" }
|
||||||
|
|
||||||
func (m *Empty) XXX_Unmarshal(b []byte) error {
|
func (m *Empty) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Empty.Unmarshal(m, b)
|
return xxx_messageInfo_Empty.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Empty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Empty.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Empty) XXX_Merge(src proto.Message) {
|
func (m *Empty) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Empty.Merge(dst, src)
|
xxx_messageInfo_Empty.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Empty) XXX_Size() int {
|
func (m *Empty) XXX_Size() int {
|
||||||
return xxx_messageInfo_Empty.Size(m)
|
return xxx_messageInfo_Empty.Size(m)
|
||||||
|
@ -62,9 +66,9 @@ func init() {
|
||||||
proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
|
proto.RegisterType((*Empty)(nil), "google.protobuf.Empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_empty_39e6d6db0632e5b2) }
|
func init() { proto.RegisterFile("google/protobuf/empty.proto", fileDescriptor_900544acb223d5b8) }
|
||||||
|
|
||||||
var fileDescriptor_empty_39e6d6db0632e5b2 = []byte{
|
var fileDescriptor_900544acb223d5b8 = []byte{
|
||||||
// 148 bytes of a gzipped FileDescriptorProto
|
// 148 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4e, 0xcf, 0xcf, 0x4f,
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28,
|
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x4f, 0xcd, 0x2d, 0x28,
|
||||||
|
|
6
vendor/github.com/golang/protobuf/ptypes/timestamp.go
generated
vendored
6
vendor/github.com/golang/protobuf/ptypes/timestamp.go
generated
vendored
|
@ -111,11 +111,9 @@ func TimestampNow() *tspb.Timestamp {
|
||||||
// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.
|
// TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.
|
||||||
// It returns an error if the resulting Timestamp is invalid.
|
// It returns an error if the resulting Timestamp is invalid.
|
||||||
func TimestampProto(t time.Time) (*tspb.Timestamp, error) {
|
func TimestampProto(t time.Time) (*tspb.Timestamp, error) {
|
||||||
seconds := t.Unix()
|
|
||||||
nanos := int32(t.Sub(time.Unix(seconds, 0)))
|
|
||||||
ts := &tspb.Timestamp{
|
ts := &tspb.Timestamp{
|
||||||
Seconds: seconds,
|
Seconds: t.Unix(),
|
||||||
Nanos: nanos,
|
Nanos: int32(t.Nanosecond()),
|
||||||
}
|
}
|
||||||
if err := validateTimestamp(ts); err != nil {
|
if err := validateTimestamp(ts); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
34
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
generated
vendored
34
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.pb.go
generated
vendored
|
@ -1,11 +1,13 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/timestamp.proto
|
// source: google/protobuf/timestamp.proto
|
||||||
|
|
||||||
package timestamp // import "github.com/golang/protobuf/ptypes/timestamp"
|
package timestamp
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
import (
|
||||||
import fmt "fmt"
|
fmt "fmt"
|
||||||
import math "math"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ = proto.Marshal
|
var _ = proto.Marshal
|
||||||
|
@ -16,7 +18,7 @@ var _ = math.Inf
|
||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
// A Timestamp represents a point in time independent of any time zone
|
// A Timestamp represents a point in time independent of any time zone
|
||||||
// or calendar, represented as seconds and fractions of seconds at
|
// or calendar, represented as seconds and fractions of seconds at
|
||||||
|
@ -81,7 +83,9 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
||||||
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
||||||
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
||||||
// is required, though only UTC (as indicated by "Z") is presently supported.
|
// is required. A proto3 JSON serializer should always use UTC (as indicated by
|
||||||
|
// "Z") when printing the Timestamp type and a proto3 JSON parser should be
|
||||||
|
// able to accept both UTC and other timezones (as indicated by an offset).
|
||||||
//
|
//
|
||||||
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
||||||
// 01:30 UTC on January 15, 2017.
|
// 01:30 UTC on January 15, 2017.
|
||||||
|
@ -92,8 +96,8 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
||||||
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
||||||
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
||||||
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
||||||
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--)
|
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--
|
||||||
// to obtain a formatter capable of generating timestamps in this format.
|
// ) to obtain a formatter capable of generating timestamps in this format.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
type Timestamp struct {
|
type Timestamp struct {
|
||||||
|
@ -115,17 +119,19 @@ func (m *Timestamp) Reset() { *m = Timestamp{} }
|
||||||
func (m *Timestamp) String() string { return proto.CompactTextString(m) }
|
func (m *Timestamp) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Timestamp) ProtoMessage() {}
|
func (*Timestamp) ProtoMessage() {}
|
||||||
func (*Timestamp) Descriptor() ([]byte, []int) {
|
func (*Timestamp) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_timestamp_b826e8e5fba671a8, []int{0}
|
return fileDescriptor_292007bbfe81227e, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
|
func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
|
||||||
|
|
||||||
func (m *Timestamp) XXX_Unmarshal(b []byte) error {
|
func (m *Timestamp) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Timestamp.Unmarshal(m, b)
|
return xxx_messageInfo_Timestamp.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Timestamp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Timestamp.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Timestamp) XXX_Merge(src proto.Message) {
|
func (m *Timestamp) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Timestamp.Merge(dst, src)
|
xxx_messageInfo_Timestamp.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Timestamp) XXX_Size() int {
|
func (m *Timestamp) XXX_Size() int {
|
||||||
return xxx_messageInfo_Timestamp.Size(m)
|
return xxx_messageInfo_Timestamp.Size(m)
|
||||||
|
@ -154,11 +160,9 @@ func init() {
|
||||||
proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
|
proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() { proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_292007bbfe81227e) }
|
||||||
proto.RegisterFile("google/protobuf/timestamp.proto", fileDescriptor_timestamp_b826e8e5fba671a8)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_timestamp_b826e8e5fba671a8 = []byte{
|
var fileDescriptor_292007bbfe81227e = []byte{
|
||||||
// 191 bytes of a gzipped FileDescriptorProto
|
// 191 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xcf, 0xcf, 0x4f,
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d,
|
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0xc9, 0xcc, 0x4d,
|
||||||
|
|
8
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
generated
vendored
8
vendor/github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
generated
vendored
|
@ -103,7 +103,9 @@ option objc_class_prefix = "GPB";
|
||||||
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
|
||||||
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
|
||||||
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
|
||||||
// is required, though only UTC (as indicated by "Z") is presently supported.
|
// is required. A proto3 JSON serializer should always use UTC (as indicated by
|
||||||
|
// "Z") when printing the Timestamp type and a proto3 JSON parser should be
|
||||||
|
// able to accept both UTC and other timezones (as indicated by an offset).
|
||||||
//
|
//
|
||||||
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
|
||||||
// 01:30 UTC on January 15, 2017.
|
// 01:30 UTC on January 15, 2017.
|
||||||
|
@ -114,8 +116,8 @@ option objc_class_prefix = "GPB";
|
||||||
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
// to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
|
||||||
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
// with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
|
||||||
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
// can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
|
||||||
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--)
|
// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime--
|
||||||
// to obtain a formatter capable of generating timestamps in this format.
|
// ) to obtain a formatter capable of generating timestamps in this format.
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
message Timestamp {
|
message Timestamp {
|
||||||
|
|
90
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go
generated
vendored
90
vendor/github.com/golang/protobuf/ptypes/wrappers/wrappers.pb.go
generated
vendored
|
@ -1,11 +1,13 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: google/protobuf/wrappers.proto
|
// source: google/protobuf/wrappers.proto
|
||||||
|
|
||||||
package wrappers // import "github.com/golang/protobuf/ptypes/wrappers"
|
package wrappers
|
||||||
|
|
||||||
import proto "github.com/golang/protobuf/proto"
|
import (
|
||||||
import fmt "fmt"
|
fmt "fmt"
|
||||||
import math "math"
|
proto "github.com/golang/protobuf/proto"
|
||||||
|
math "math"
|
||||||
|
)
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
var _ = proto.Marshal
|
var _ = proto.Marshal
|
||||||
|
@ -16,7 +18,7 @@ var _ = math.Inf
|
||||||
// is compatible with the proto package it is being compiled against.
|
// is compatible with the proto package it is being compiled against.
|
||||||
// A compilation error at this line likely means your copy of the
|
// A compilation error at this line likely means your copy of the
|
||||||
// proto package needs to be updated.
|
// proto package needs to be updated.
|
||||||
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
|
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
|
||||||
|
|
||||||
// Wrapper message for `double`.
|
// Wrapper message for `double`.
|
||||||
//
|
//
|
||||||
|
@ -33,17 +35,19 @@ func (m *DoubleValue) Reset() { *m = DoubleValue{} }
|
||||||
func (m *DoubleValue) String() string { return proto.CompactTextString(m) }
|
func (m *DoubleValue) String() string { return proto.CompactTextString(m) }
|
||||||
func (*DoubleValue) ProtoMessage() {}
|
func (*DoubleValue) ProtoMessage() {}
|
||||||
func (*DoubleValue) Descriptor() ([]byte, []int) {
|
func (*DoubleValue) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{0}
|
return fileDescriptor_5377b62bda767935, []int{0}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
|
func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
|
||||||
|
|
||||||
func (m *DoubleValue) XXX_Unmarshal(b []byte) error {
|
func (m *DoubleValue) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_DoubleValue.Unmarshal(m, b)
|
return xxx_messageInfo_DoubleValue.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *DoubleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *DoubleValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_DoubleValue.Marshal(b, m, deterministic)
|
return xxx_messageInfo_DoubleValue.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *DoubleValue) XXX_Merge(src proto.Message) {
|
func (m *DoubleValue) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_DoubleValue.Merge(dst, src)
|
xxx_messageInfo_DoubleValue.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *DoubleValue) XXX_Size() int {
|
func (m *DoubleValue) XXX_Size() int {
|
||||||
return xxx_messageInfo_DoubleValue.Size(m)
|
return xxx_messageInfo_DoubleValue.Size(m)
|
||||||
|
@ -76,17 +80,19 @@ func (m *FloatValue) Reset() { *m = FloatValue{} }
|
||||||
func (m *FloatValue) String() string { return proto.CompactTextString(m) }
|
func (m *FloatValue) String() string { return proto.CompactTextString(m) }
|
||||||
func (*FloatValue) ProtoMessage() {}
|
func (*FloatValue) ProtoMessage() {}
|
||||||
func (*FloatValue) Descriptor() ([]byte, []int) {
|
func (*FloatValue) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{1}
|
return fileDescriptor_5377b62bda767935, []int{1}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
|
func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
|
||||||
|
|
||||||
func (m *FloatValue) XXX_Unmarshal(b []byte) error {
|
func (m *FloatValue) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_FloatValue.Unmarshal(m, b)
|
return xxx_messageInfo_FloatValue.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *FloatValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *FloatValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_FloatValue.Marshal(b, m, deterministic)
|
return xxx_messageInfo_FloatValue.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *FloatValue) XXX_Merge(src proto.Message) {
|
func (m *FloatValue) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_FloatValue.Merge(dst, src)
|
xxx_messageInfo_FloatValue.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *FloatValue) XXX_Size() int {
|
func (m *FloatValue) XXX_Size() int {
|
||||||
return xxx_messageInfo_FloatValue.Size(m)
|
return xxx_messageInfo_FloatValue.Size(m)
|
||||||
|
@ -119,17 +125,19 @@ func (m *Int64Value) Reset() { *m = Int64Value{} }
|
||||||
func (m *Int64Value) String() string { return proto.CompactTextString(m) }
|
func (m *Int64Value) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Int64Value) ProtoMessage() {}
|
func (*Int64Value) ProtoMessage() {}
|
||||||
func (*Int64Value) Descriptor() ([]byte, []int) {
|
func (*Int64Value) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{2}
|
return fileDescriptor_5377b62bda767935, []int{2}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
|
func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
|
||||||
|
|
||||||
func (m *Int64Value) XXX_Unmarshal(b []byte) error {
|
func (m *Int64Value) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Int64Value.Unmarshal(m, b)
|
return xxx_messageInfo_Int64Value.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Int64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Int64Value.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Int64Value) XXX_Merge(src proto.Message) {
|
func (m *Int64Value) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Int64Value.Merge(dst, src)
|
xxx_messageInfo_Int64Value.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Int64Value) XXX_Size() int {
|
func (m *Int64Value) XXX_Size() int {
|
||||||
return xxx_messageInfo_Int64Value.Size(m)
|
return xxx_messageInfo_Int64Value.Size(m)
|
||||||
|
@ -162,17 +170,19 @@ func (m *UInt64Value) Reset() { *m = UInt64Value{} }
|
||||||
func (m *UInt64Value) String() string { return proto.CompactTextString(m) }
|
func (m *UInt64Value) String() string { return proto.CompactTextString(m) }
|
||||||
func (*UInt64Value) ProtoMessage() {}
|
func (*UInt64Value) ProtoMessage() {}
|
||||||
func (*UInt64Value) Descriptor() ([]byte, []int) {
|
func (*UInt64Value) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{3}
|
return fileDescriptor_5377b62bda767935, []int{3}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
|
func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
|
||||||
|
|
||||||
func (m *UInt64Value) XXX_Unmarshal(b []byte) error {
|
func (m *UInt64Value) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_UInt64Value.Unmarshal(m, b)
|
return xxx_messageInfo_UInt64Value.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *UInt64Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic)
|
return xxx_messageInfo_UInt64Value.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *UInt64Value) XXX_Merge(src proto.Message) {
|
func (m *UInt64Value) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_UInt64Value.Merge(dst, src)
|
xxx_messageInfo_UInt64Value.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *UInt64Value) XXX_Size() int {
|
func (m *UInt64Value) XXX_Size() int {
|
||||||
return xxx_messageInfo_UInt64Value.Size(m)
|
return xxx_messageInfo_UInt64Value.Size(m)
|
||||||
|
@ -205,17 +215,19 @@ func (m *Int32Value) Reset() { *m = Int32Value{} }
|
||||||
func (m *Int32Value) String() string { return proto.CompactTextString(m) }
|
func (m *Int32Value) String() string { return proto.CompactTextString(m) }
|
||||||
func (*Int32Value) ProtoMessage() {}
|
func (*Int32Value) ProtoMessage() {}
|
||||||
func (*Int32Value) Descriptor() ([]byte, []int) {
|
func (*Int32Value) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{4}
|
return fileDescriptor_5377b62bda767935, []int{4}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
|
func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
|
||||||
|
|
||||||
func (m *Int32Value) XXX_Unmarshal(b []byte) error {
|
func (m *Int32Value) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_Int32Value.Unmarshal(m, b)
|
return xxx_messageInfo_Int32Value.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *Int32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *Int32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_Int32Value.Marshal(b, m, deterministic)
|
return xxx_messageInfo_Int32Value.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *Int32Value) XXX_Merge(src proto.Message) {
|
func (m *Int32Value) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_Int32Value.Merge(dst, src)
|
xxx_messageInfo_Int32Value.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *Int32Value) XXX_Size() int {
|
func (m *Int32Value) XXX_Size() int {
|
||||||
return xxx_messageInfo_Int32Value.Size(m)
|
return xxx_messageInfo_Int32Value.Size(m)
|
||||||
|
@ -248,17 +260,19 @@ func (m *UInt32Value) Reset() { *m = UInt32Value{} }
|
||||||
func (m *UInt32Value) String() string { return proto.CompactTextString(m) }
|
func (m *UInt32Value) String() string { return proto.CompactTextString(m) }
|
||||||
func (*UInt32Value) ProtoMessage() {}
|
func (*UInt32Value) ProtoMessage() {}
|
||||||
func (*UInt32Value) Descriptor() ([]byte, []int) {
|
func (*UInt32Value) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{5}
|
return fileDescriptor_5377b62bda767935, []int{5}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
|
func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
|
||||||
|
|
||||||
func (m *UInt32Value) XXX_Unmarshal(b []byte) error {
|
func (m *UInt32Value) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_UInt32Value.Unmarshal(m, b)
|
return xxx_messageInfo_UInt32Value.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *UInt32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *UInt32Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_UInt32Value.Marshal(b, m, deterministic)
|
return xxx_messageInfo_UInt32Value.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *UInt32Value) XXX_Merge(src proto.Message) {
|
func (m *UInt32Value) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_UInt32Value.Merge(dst, src)
|
xxx_messageInfo_UInt32Value.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *UInt32Value) XXX_Size() int {
|
func (m *UInt32Value) XXX_Size() int {
|
||||||
return xxx_messageInfo_UInt32Value.Size(m)
|
return xxx_messageInfo_UInt32Value.Size(m)
|
||||||
|
@ -291,17 +305,19 @@ func (m *BoolValue) Reset() { *m = BoolValue{} }
|
||||||
func (m *BoolValue) String() string { return proto.CompactTextString(m) }
|
func (m *BoolValue) String() string { return proto.CompactTextString(m) }
|
||||||
func (*BoolValue) ProtoMessage() {}
|
func (*BoolValue) ProtoMessage() {}
|
||||||
func (*BoolValue) Descriptor() ([]byte, []int) {
|
func (*BoolValue) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{6}
|
return fileDescriptor_5377b62bda767935, []int{6}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
|
func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
|
||||||
|
|
||||||
func (m *BoolValue) XXX_Unmarshal(b []byte) error {
|
func (m *BoolValue) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_BoolValue.Unmarshal(m, b)
|
return xxx_messageInfo_BoolValue.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *BoolValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic)
|
return xxx_messageInfo_BoolValue.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *BoolValue) XXX_Merge(src proto.Message) {
|
func (m *BoolValue) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_BoolValue.Merge(dst, src)
|
xxx_messageInfo_BoolValue.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *BoolValue) XXX_Size() int {
|
func (m *BoolValue) XXX_Size() int {
|
||||||
return xxx_messageInfo_BoolValue.Size(m)
|
return xxx_messageInfo_BoolValue.Size(m)
|
||||||
|
@ -334,17 +350,19 @@ func (m *StringValue) Reset() { *m = StringValue{} }
|
||||||
func (m *StringValue) String() string { return proto.CompactTextString(m) }
|
func (m *StringValue) String() string { return proto.CompactTextString(m) }
|
||||||
func (*StringValue) ProtoMessage() {}
|
func (*StringValue) ProtoMessage() {}
|
||||||
func (*StringValue) Descriptor() ([]byte, []int) {
|
func (*StringValue) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{7}
|
return fileDescriptor_5377b62bda767935, []int{7}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
|
func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
|
||||||
|
|
||||||
func (m *StringValue) XXX_Unmarshal(b []byte) error {
|
func (m *StringValue) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_StringValue.Unmarshal(m, b)
|
return xxx_messageInfo_StringValue.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *StringValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *StringValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_StringValue.Marshal(b, m, deterministic)
|
return xxx_messageInfo_StringValue.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *StringValue) XXX_Merge(src proto.Message) {
|
func (m *StringValue) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_StringValue.Merge(dst, src)
|
xxx_messageInfo_StringValue.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *StringValue) XXX_Size() int {
|
func (m *StringValue) XXX_Size() int {
|
||||||
return xxx_messageInfo_StringValue.Size(m)
|
return xxx_messageInfo_StringValue.Size(m)
|
||||||
|
@ -377,17 +395,19 @@ func (m *BytesValue) Reset() { *m = BytesValue{} }
|
||||||
func (m *BytesValue) String() string { return proto.CompactTextString(m) }
|
func (m *BytesValue) String() string { return proto.CompactTextString(m) }
|
||||||
func (*BytesValue) ProtoMessage() {}
|
func (*BytesValue) ProtoMessage() {}
|
||||||
func (*BytesValue) Descriptor() ([]byte, []int) {
|
func (*BytesValue) Descriptor() ([]byte, []int) {
|
||||||
return fileDescriptor_wrappers_16c7c35c009f3253, []int{8}
|
return fileDescriptor_5377b62bda767935, []int{8}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
|
func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
|
||||||
|
|
||||||
func (m *BytesValue) XXX_Unmarshal(b []byte) error {
|
func (m *BytesValue) XXX_Unmarshal(b []byte) error {
|
||||||
return xxx_messageInfo_BytesValue.Unmarshal(m, b)
|
return xxx_messageInfo_BytesValue.Unmarshal(m, b)
|
||||||
}
|
}
|
||||||
func (m *BytesValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
func (m *BytesValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
||||||
return xxx_messageInfo_BytesValue.Marshal(b, m, deterministic)
|
return xxx_messageInfo_BytesValue.Marshal(b, m, deterministic)
|
||||||
}
|
}
|
||||||
func (dst *BytesValue) XXX_Merge(src proto.Message) {
|
func (m *BytesValue) XXX_Merge(src proto.Message) {
|
||||||
xxx_messageInfo_BytesValue.Merge(dst, src)
|
xxx_messageInfo_BytesValue.Merge(m, src)
|
||||||
}
|
}
|
||||||
func (m *BytesValue) XXX_Size() int {
|
func (m *BytesValue) XXX_Size() int {
|
||||||
return xxx_messageInfo_BytesValue.Size(m)
|
return xxx_messageInfo_BytesValue.Size(m)
|
||||||
|
@ -417,11 +437,9 @@ func init() {
|
||||||
proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue")
|
proto.RegisterType((*BytesValue)(nil), "google.protobuf.BytesValue")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() { proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor_5377b62bda767935) }
|
||||||
proto.RegisterFile("google/protobuf/wrappers.proto", fileDescriptor_wrappers_16c7c35c009f3253)
|
|
||||||
}
|
|
||||||
|
|
||||||
var fileDescriptor_wrappers_16c7c35c009f3253 = []byte{
|
var fileDescriptor_5377b62bda767935 = []byte{
|
||||||
// 259 bytes of a gzipped FileDescriptorProto
|
// 259 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4b, 0xcf, 0xcf, 0x4f,
|
||||||
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c,
|
0xcf, 0x49, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x2f, 0x4a, 0x2c,
|
||||||
|
|
1
vendor/github.com/googleapis/gax-go/.gitignore
generated
vendored
1
vendor/github.com/googleapis/gax-go/.gitignore
generated
vendored
|
@ -1 +0,0 @@
|
||||||
*.cover
|
|
12
vendor/github.com/googleapis/gax-go/.travis.yml
generated
vendored
12
vendor/github.com/googleapis/gax-go/.travis.yml
generated
vendored
|
@ -1,12 +0,0 @@
|
||||||
sudo: false
|
|
||||||
language: go
|
|
||||||
go:
|
|
||||||
- 1.9.x
|
|
||||||
- 1.10.x
|
|
||||||
- 1.11.x
|
|
||||||
script:
|
|
||||||
- gofmt -l .
|
|
||||||
- go tool vet .
|
|
||||||
- go test -coverprofile=coverage.txt -covermode=atomic
|
|
||||||
after_success:
|
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
|
43
vendor/github.com/googleapis/gax-go/CODE_OF_CONDUCT.md
generated
vendored
43
vendor/github.com/googleapis/gax-go/CODE_OF_CONDUCT.md
generated
vendored
|
@ -1,43 +0,0 @@
|
||||||
# Contributor Code of Conduct
|
|
||||||
|
|
||||||
As contributors and maintainers of this project,
|
|
||||||
and in the interest of fostering an open and welcoming community,
|
|
||||||
we pledge to respect all people who contribute through reporting issues,
|
|
||||||
posting feature requests, updating documentation,
|
|
||||||
submitting pull requests or patches, and other activities.
|
|
||||||
|
|
||||||
We are committed to making participation in this project
|
|
||||||
a harassment-free experience for everyone,
|
|
||||||
regardless of level of experience, gender, gender identity and expression,
|
|
||||||
sexual orientation, disability, personal appearance,
|
|
||||||
body size, race, ethnicity, age, religion, or nationality.
|
|
||||||
|
|
||||||
Examples of unacceptable behavior by participants include:
|
|
||||||
|
|
||||||
* The use of sexualized language or imagery
|
|
||||||
* Personal attacks
|
|
||||||
* Trolling or insulting/derogatory comments
|
|
||||||
* Public or private harassment
|
|
||||||
* Publishing other's private information,
|
|
||||||
such as physical or electronic
|
|
||||||
addresses, without explicit permission
|
|
||||||
* Other unethical or unprofessional conduct.
|
|
||||||
|
|
||||||
Project maintainers have the right and responsibility to remove, edit, or reject
|
|
||||||
comments, commits, code, wiki edits, issues, and other contributions
|
|
||||||
that are not aligned to this Code of Conduct.
|
|
||||||
By adopting this Code of Conduct,
|
|
||||||
project maintainers commit themselves to fairly and consistently
|
|
||||||
applying these principles to every aspect of managing this project.
|
|
||||||
Project maintainers who do not follow or enforce the Code of Conduct
|
|
||||||
may be permanently removed from the project team.
|
|
||||||
|
|
||||||
This code of conduct applies both within project spaces and in public spaces
|
|
||||||
when an individual is representing the project or its community.
|
|
||||||
|
|
||||||
Instances of abusive, harassing, or otherwise unacceptable behavior
|
|
||||||
may be reported by opening an issue
|
|
||||||
or contacting one or more of the project maintainers.
|
|
||||||
|
|
||||||
This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.2.0,
|
|
||||||
available at [http://contributor-covenant.org/version/1/2/0/](http://contributor-covenant.org/version/1/2/0/)
|
|
27
vendor/github.com/googleapis/gax-go/CONTRIBUTING.md
generated
vendored
27
vendor/github.com/googleapis/gax-go/CONTRIBUTING.md
generated
vendored
|
@ -1,27 +0,0 @@
|
||||||
Want to contribute? Great! First, read this page (including the small print at the end).
|
|
||||||
|
|
||||||
### Before you contribute
|
|
||||||
Before we can use your code, you must sign the
|
|
||||||
[Google Individual Contributor License Agreement]
|
|
||||||
(https://cla.developers.google.com/about/google-individual)
|
|
||||||
(CLA), which you can do online. The CLA is necessary mainly because you own the
|
|
||||||
copyright to your changes, even after your contribution becomes part of our
|
|
||||||
codebase, so we need your permission to use and distribute your code. We also
|
|
||||||
need to be sure of various other things—for instance that you'll tell us if you
|
|
||||||
know that your code infringes on other people's patents. You don't have to sign
|
|
||||||
the CLA until after you've submitted your code for review and a member has
|
|
||||||
approved it, but you must do it before we can put your code into our codebase.
|
|
||||||
Before you start working on a larger contribution, you should get in touch with
|
|
||||||
us first through the issue tracker with your idea so that we can help out and
|
|
||||||
possibly guide you. Coordinating up front makes it much easier to avoid
|
|
||||||
frustration later on.
|
|
||||||
|
|
||||||
### Code reviews
|
|
||||||
All submissions, including submissions by project members, require review. We
|
|
||||||
use Github pull requests for this purpose.
|
|
||||||
|
|
||||||
### The small print
|
|
||||||
Contributions made by corporations are covered by a different agreement than
|
|
||||||
the one above, the
|
|
||||||
[Software Grant and Corporate Contributor License Agreement]
|
|
||||||
(https://cla.developers.google.com/about/google-corporate).
|
|
29
vendor/github.com/googleapis/gax-go/README.md
generated
vendored
29
vendor/github.com/googleapis/gax-go/README.md
generated
vendored
|
@ -1,29 +0,0 @@
|
||||||
Google API Extensions for Go
|
|
||||||
============================
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/googleapis/gax-go.svg?branch=master)](https://travis-ci.org/googleapis/gax-go)
|
|
||||||
[![Code Coverage](https://img.shields.io/codecov/c/github/googleapis/gax-go.svg)](https://codecov.io/github/googleapis/gax-go)
|
|
||||||
[![GoDoc](https://godoc.org/github.com/googleapis/gax-go?status.svg)](https://godoc.org/github.com/googleapis/gax-go)
|
|
||||||
|
|
||||||
Google API Extensions for Go (gax-go) is a set of modules which aids the
|
|
||||||
development of APIs for clients and servers based on `gRPC` and Google API
|
|
||||||
conventions.
|
|
||||||
|
|
||||||
To install the API extensions, use:
|
|
||||||
|
|
||||||
```
|
|
||||||
go get -u github.com/googleapis/gax-go
|
|
||||||
```
|
|
||||||
|
|
||||||
**Note:** Application code will rarely need to use this library directly,
|
|
||||||
but the code generated automatically from API definition files can use it
|
|
||||||
to simplify code generation and to provide more convenient and idiomatic API surface.
|
|
||||||
|
|
||||||
Go Versions
|
|
||||||
===========
|
|
||||||
This library requires Go 1.6 or above.
|
|
||||||
|
|
||||||
License
|
|
||||||
=======
|
|
||||||
BSD - please see [LICENSE](https://github.com/googleapis/gax-go/blob/master/LICENSE)
|
|
||||||
for more information.
|
|
24
vendor/github.com/googleapis/gax-go/header.go
generated
vendored
24
vendor/github.com/googleapis/gax-go/header.go
generated
vendored
|
@ -1,24 +0,0 @@
|
||||||
package gax
|
|
||||||
|
|
||||||
import "bytes"
|
|
||||||
|
|
||||||
// XGoogHeader is for use by the Google Cloud Libraries only.
|
|
||||||
//
|
|
||||||
// XGoogHeader formats key-value pairs.
|
|
||||||
// The resulting string is suitable for x-goog-api-client header.
|
|
||||||
func XGoogHeader(keyval ...string) string {
|
|
||||||
if len(keyval) == 0 {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
if len(keyval)%2 != 0 {
|
|
||||||
panic("gax.Header: odd argument count")
|
|
||||||
}
|
|
||||||
var buf bytes.Buffer
|
|
||||||
for i := 0; i < len(keyval); i += 2 {
|
|
||||||
buf.WriteByte(' ')
|
|
||||||
buf.WriteString(keyval[i])
|
|
||||||
buf.WriteByte('/')
|
|
||||||
buf.WriteString(keyval[i+1])
|
|
||||||
}
|
|
||||||
return buf.String()[1:]
|
|
||||||
}
|
|
|
@ -113,6 +113,7 @@ type Backoff struct {
|
||||||
cur time.Duration
|
cur time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Pause returns the next time.Duration that the caller should use to backoff.
|
||||||
func (bo *Backoff) Pause() time.Duration {
|
func (bo *Backoff) Pause() time.Duration {
|
||||||
if bo.Initial == 0 {
|
if bo.Initial == 0 {
|
||||||
bo.Initial = time.Second
|
bo.Initial = time.Second
|
||||||
|
@ -126,10 +127,11 @@ func (bo *Backoff) Pause() time.Duration {
|
||||||
if bo.Multiplier < 1 {
|
if bo.Multiplier < 1 {
|
||||||
bo.Multiplier = 2
|
bo.Multiplier = 2
|
||||||
}
|
}
|
||||||
// Select a duration between zero and the current max. It might seem counterintuitive to
|
// Select a duration between 1ns and the current max. It might seem
|
||||||
// have so much jitter, but https://www.awsarchitectureblog.com/2015/03/backoff.html
|
// counterintuitive to have so much jitter, but
|
||||||
// argues that that is the best strategy.
|
// https://www.awsarchitectureblog.com/2015/03/backoff.html argues that
|
||||||
d := time.Duration(rand.Int63n(int64(bo.cur)))
|
// that is the best strategy.
|
||||||
|
d := time.Duration(1 + rand.Int63n(int64(bo.cur)))
|
||||||
bo.cur = time.Duration(float64(bo.cur) * bo.Multiplier)
|
bo.cur = time.Duration(float64(bo.cur) * bo.Multiplier)
|
||||||
if bo.cur > bo.Max {
|
if bo.cur > bo.Max {
|
||||||
bo.cur = bo.Max
|
bo.cur = bo.Max
|
||||||
|
@ -143,10 +145,12 @@ func (o grpcOpt) Resolve(s *CallSettings) {
|
||||||
s.GRPC = o
|
s.GRPC = o
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithGRPCOptions allows passing gRPC call options during client creation.
|
||||||
func WithGRPCOptions(opt ...grpc.CallOption) CallOption {
|
func WithGRPCOptions(opt ...grpc.CallOption) CallOption {
|
||||||
return grpcOpt(append([]grpc.CallOption(nil), opt...))
|
return grpcOpt(append([]grpc.CallOption(nil), opt...))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CallSettings allow fine-grained control over how calls are made.
|
||||||
type CallSettings struct {
|
type CallSettings struct {
|
||||||
// Retry returns a Retryer to be used to control retry logic of a method call.
|
// Retry returns a Retryer to be used to control retry logic of a method call.
|
||||||
// If Retry is nil or the returned Retryer is nil, the call will not be retried.
|
// If Retry is nil or the returned Retryer is nil, the call will not be retried.
|
|
@ -35,4 +35,5 @@
|
||||||
// to simplify code generation and to provide more convenient and idiomatic API surfaces.
|
// to simplify code generation and to provide more convenient and idiomatic API surfaces.
|
||||||
package gax
|
package gax
|
||||||
|
|
||||||
const Version = "2.0.0"
|
// Version specifies the gax-go version being used.
|
||||||
|
const Version = "2.0.3"
|
3
vendor/github.com/googleapis/gax-go/v2/go.mod
generated
vendored
Normal file
3
vendor/github.com/googleapis/gax-go/v2/go.mod
generated
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module github.com/googleapis/gax-go/v2
|
||||||
|
|
||||||
|
require google.golang.org/grpc v1.16.0
|
26
vendor/github.com/googleapis/gax-go/v2/go.sum
generated
vendored
Normal file
26
vendor/github.com/googleapis/gax-go/v2/go.sum
generated
vendored
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||||
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
|
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||||
|
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
|
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||||
|
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
|
||||||
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
||||||
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f h1:wMNYb4v58l5UBM7MYRLPG6ZhfOqbKu7X5eyFl8ZhKvA=
|
||||||
|
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522 h1:Ve1ORMCxvRmSXBwJK+t3Oy+V2vRW2OetUQBq4rJIkZE=
|
||||||
|
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
|
||||||
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||||
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||||
|
google.golang.org/grpc v1.16.0 h1:dz5IJGuC2BB7qXR5AyHNwAUBhZscK2xVez7mznh72sY=
|
||||||
|
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
|
||||||
|
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
53
vendor/github.com/googleapis/gax-go/v2/header.go
generated
vendored
Normal file
53
vendor/github.com/googleapis/gax-go/v2/header.go
generated
vendored
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
// Copyright 2018, Google Inc.
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are
|
||||||
|
// met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright
|
||||||
|
// notice, this list of conditions and the following disclaimer.
|
||||||
|
// * Redistributions in binary form must reproduce the above
|
||||||
|
// copyright notice, this list of conditions and the following disclaimer
|
||||||
|
// in the documentation and/or other materials provided with the
|
||||||
|
// distribution.
|
||||||
|
// * Neither the name of Google Inc. nor the names of its
|
||||||
|
// contributors may be used to endorse or promote products derived from
|
||||||
|
// this software without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
package gax
|
||||||
|
|
||||||
|
import "bytes"
|
||||||
|
|
||||||
|
// XGoogHeader is for use by the Google Cloud Libraries only.
|
||||||
|
//
|
||||||
|
// XGoogHeader formats key-value pairs.
|
||||||
|
// The resulting string is suitable for x-goog-api-client header.
|
||||||
|
func XGoogHeader(keyval ...string) string {
|
||||||
|
if len(keyval) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if len(keyval)%2 != 0 {
|
||||||
|
panic("gax.Header: odd argument count")
|
||||||
|
}
|
||||||
|
var buf bytes.Buffer
|
||||||
|
for i := 0; i < len(keyval); i += 2 {
|
||||||
|
buf.WriteByte(' ')
|
||||||
|
buf.WriteString(keyval[i])
|
||||||
|
buf.WriteByte('/')
|
||||||
|
buf.WriteString(keyval[i+1])
|
||||||
|
}
|
||||||
|
return buf.String()[1:]
|
||||||
|
}
|
|
@ -31,10 +31,11 @@ package gax
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
// A user defined call stub.
|
// APICall is a user defined call stub.
|
||||||
type APICall func(context.Context, CallSettings) error
|
type APICall func(context.Context, CallSettings) error
|
||||||
|
|
||||||
// Invoke calls the given APICall,
|
// Invoke calls the given APICall,
|
||||||
|
@ -73,6 +74,15 @@ func invoke(ctx context.Context, call APICall, settings CallSettings, sp sleeper
|
||||||
if settings.Retry == nil {
|
if settings.Retry == nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
// Never retry permanent certificate errors. (e.x. if ca-certificates
|
||||||
|
// are not installed). We should only make very few, targeted
|
||||||
|
// exceptions: many (other) status=Unavailable should be retried, such
|
||||||
|
// as if there's a network hiccup, or the internet goes out for a
|
||||||
|
// minute. This is also why here we are doing string parsing instead of
|
||||||
|
// simply making Unavailable a non-retried code elsewhere.
|
||||||
|
if strings.Contains(err.Error(), "x509: certificate signed by unknown authority") {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if retryer == nil {
|
if retryer == nil {
|
||||||
if r := settings.Retry(); r != nil {
|
if r := settings.Retry(); r != nil {
|
||||||
retryer = r
|
retryer = r
|
4
vendor/github.com/hashicorp/go-getter/.travis.yml
generated
vendored
4
vendor/github.com/hashicorp/go-getter/.travis.yml
generated
vendored
|
@ -9,6 +9,10 @@ addons:
|
||||||
|
|
||||||
language: go
|
language: go
|
||||||
|
|
||||||
|
os:
|
||||||
|
- linux
|
||||||
|
- osx
|
||||||
|
|
||||||
go:
|
go:
|
||||||
- "1.11.x"
|
- "1.11.x"
|
||||||
|
|
||||||
|
|
3
vendor/github.com/hashicorp/go-getter/README.md
generated
vendored
3
vendor/github.com/hashicorp/go-getter/README.md
generated
vendored
|
@ -276,6 +276,9 @@ None
|
||||||
|
|
||||||
**Note**: Git 2.3+ is required to use this feature.
|
**Note**: Git 2.3+ is required to use this feature.
|
||||||
|
|
||||||
|
* `depth` - The Git clone depth. The provided number specifies the last `n`
|
||||||
|
revisions to clone from the repository.
|
||||||
|
|
||||||
### Mercurial (`hg`)
|
### Mercurial (`hg`)
|
||||||
|
|
||||||
* `rev` - The Mercurial revision to checkout.
|
* `rev` - The Mercurial revision to checkout.
|
||||||
|
|
2
vendor/github.com/hashicorp/go-getter/appveyor.yml
generated
vendored
2
vendor/github.com/hashicorp/go-getter/appveyor.yml
generated
vendored
|
@ -13,4 +13,4 @@ install:
|
||||||
|
|
||||||
go get -d -v -t ./...
|
go get -d -v -t ./...
|
||||||
build_script:
|
build_script:
|
||||||
- cmd: go test -v ./...
|
- cmd: go test ./...
|
||||||
|
|
16
vendor/github.com/hashicorp/go-getter/checksum.go
generated
vendored
16
vendor/github.com/hashicorp/go-getter/checksum.go
generated
vendored
|
@ -36,6 +36,7 @@ func (c *fileChecksum) checksum(source string) error {
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
|
c.Hash.Reset()
|
||||||
if _, err := io.Copy(c.Hash, f); err != nil {
|
if _, err := io.Copy(c.Hash, f); err != nil {
|
||||||
return fmt.Errorf("Failed to hash: %s", err)
|
return fmt.Errorf("Failed to hash: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -179,6 +180,7 @@ func (c *Client) checksumFromFile(checksumFile string, src *url.URL) (*fileCheck
|
||||||
defer os.Remove(tempfile)
|
defer os.Remove(tempfile)
|
||||||
|
|
||||||
c2 := &Client{
|
c2 := &Client{
|
||||||
|
Ctx: c.Ctx,
|
||||||
Getters: c.Getters,
|
Getters: c.Getters,
|
||||||
Decompressors: c.Decompressors,
|
Decompressors: c.Decompressors,
|
||||||
Detectors: c.Detectors,
|
Detectors: c.Detectors,
|
||||||
|
@ -186,6 +188,7 @@ func (c *Client) checksumFromFile(checksumFile string, src *url.URL) (*fileCheck
|
||||||
Dir: false,
|
Dir: false,
|
||||||
Src: checksumFile,
|
Src: checksumFile,
|
||||||
Dst: tempfile,
|
Dst: tempfile,
|
||||||
|
ProgressListener: c.ProgressListener,
|
||||||
}
|
}
|
||||||
if err = c2.Get(); err != nil {
|
if err = c2.Get(); err != nil {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
|
@ -197,8 +200,15 @@ func (c *Client) checksumFromFile(checksumFile string, src *url.URL) (*fileCheck
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
relpath, err := filepath.Rel(filepath.Dir(checksumFileURL.Path), absPath)
|
checksumFileDir := filepath.Dir(checksumFileURL.Path)
|
||||||
if err != nil {
|
relpath, err := filepath.Rel(checksumFileDir, absPath)
|
||||||
|
switch {
|
||||||
|
case err == nil ||
|
||||||
|
err.Error() == "Rel: can't make "+absPath+" relative to "+checksumFileDir:
|
||||||
|
// ex: on windows C:\gopath\...\content.txt cannot be relative to \
|
||||||
|
// which is okay, may be another expected path will work.
|
||||||
|
break
|
||||||
|
default:
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -238,7 +248,7 @@ func (c *Client) checksumFromFile(checksumFile string, src *url.URL) (*fileCheck
|
||||||
}
|
}
|
||||||
// make sure the checksum is for the right file
|
// make sure the checksum is for the right file
|
||||||
for _, option := range options {
|
for _, option := range options {
|
||||||
if checksum.Filename == option {
|
if option != "" && checksum.Filename == option {
|
||||||
// any checksum will work so we return the first one
|
// any checksum will work so we return the first one
|
||||||
return checksum, nil
|
return checksum, nil
|
||||||
}
|
}
|
||||||
|
|
1
vendor/github.com/hashicorp/go-getter/common.go
generated
vendored
1
vendor/github.com/hashicorp/go-getter/common.go
generated
vendored
|
@ -9,5 +9,6 @@ func tmpFile(dir, pattern string) (string, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
f.Close()
|
||||||
return f.Name(), nil
|
return f.Name(), nil
|
||||||
}
|
}
|
||||||
|
|
4
vendor/github.com/hashicorp/go-getter/get_file.go
generated
vendored
4
vendor/github.com/hashicorp/go-getter/get_file.go
generated
vendored
|
@ -10,7 +10,9 @@ import (
|
||||||
type FileGetter struct {
|
type FileGetter struct {
|
||||||
getter
|
getter
|
||||||
|
|
||||||
// Copy, if set to true, will copy data instead of using a symlink
|
// Copy, if set to true, will copy data instead of using a symlink. If
|
||||||
|
// false, attempts to symlink to speed up the operation and to lower the
|
||||||
|
// disk space usage. If the symlink fails, may attempt to copy on windows.
|
||||||
Copy bool
|
Copy bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
17
vendor/github.com/hashicorp/go-getter/get_file_windows.go
generated
vendored
17
vendor/github.com/hashicorp/go-getter/get_file_windows.go
generated
vendored
|
@ -9,6 +9,7 @@ import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (g *FileGetter) Get(dst string, u *url.URL) error {
|
func (g *FileGetter) Get(dst string, u *url.URL) error {
|
||||||
|
@ -93,7 +94,21 @@ func (g *FileGetter) GetFile(dst string, u *url.URL) error {
|
||||||
|
|
||||||
// If we're not copying, just symlink and we're done
|
// If we're not copying, just symlink and we're done
|
||||||
if !g.Copy {
|
if !g.Copy {
|
||||||
return os.Symlink(path, dst)
|
if err = os.Symlink(path, dst); err == nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
lerr, ok := err.(*os.LinkError)
|
||||||
|
if !ok {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
switch lerr.Err {
|
||||||
|
case syscall.ERROR_PRIVILEGE_NOT_HELD:
|
||||||
|
// no symlink privilege, let's
|
||||||
|
// fallback to a copy to avoid an error.
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy
|
// Copy
|
||||||
|
|
56
vendor/github.com/hashicorp/go-getter/get_git.go
generated
vendored
56
vendor/github.com/hashicorp/go-getter/get_git.go
generated
vendored
|
@ -9,6 +9,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"runtime"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
urlhelper "github.com/hashicorp/go-getter/helper/url"
|
urlhelper "github.com/hashicorp/go-getter/helper/url"
|
||||||
|
@ -34,6 +36,7 @@ func (g *GitGetter) Get(dst string, u *url.URL) error {
|
||||||
|
|
||||||
// Extract some query parameters we use
|
// Extract some query parameters we use
|
||||||
var ref, sshKey string
|
var ref, sshKey string
|
||||||
|
var depth int
|
||||||
q := u.Query()
|
q := u.Query()
|
||||||
if len(q) > 0 {
|
if len(q) > 0 {
|
||||||
ref = q.Get("ref")
|
ref = q.Get("ref")
|
||||||
|
@ -42,6 +45,11 @@ func (g *GitGetter) Get(dst string, u *url.URL) error {
|
||||||
sshKey = q.Get("sshkey")
|
sshKey = q.Get("sshkey")
|
||||||
q.Del("sshkey")
|
q.Del("sshkey")
|
||||||
|
|
||||||
|
if n, err := strconv.Atoi(q.Get("depth")); err == nil {
|
||||||
|
depth = n
|
||||||
|
}
|
||||||
|
q.Del("depth")
|
||||||
|
|
||||||
// Copy the URL
|
// Copy the URL
|
||||||
var newU url.URL = *u
|
var newU url.URL = *u
|
||||||
u = &newU
|
u = &newU
|
||||||
|
@ -108,9 +116,9 @@ func (g *GitGetter) Get(dst string, u *url.URL) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
err = g.update(ctx, dst, sshKeyFile, ref)
|
err = g.update(ctx, dst, sshKeyFile, ref, depth)
|
||||||
} else {
|
} else {
|
||||||
err = g.clone(ctx, dst, sshKeyFile, u)
|
err = g.clone(ctx, dst, sshKeyFile, u, depth)
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -124,7 +132,7 @@ func (g *GitGetter) Get(dst string, u *url.URL) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Lastly, download any/all submodules.
|
// Lastly, download any/all submodules.
|
||||||
return g.fetchSubmodules(ctx, dst, sshKeyFile)
|
return g.fetchSubmodules(ctx, dst, sshKeyFile, depth)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetFile for Git doesn't support updating at this time. It will download
|
// GetFile for Git doesn't support updating at this time. It will download
|
||||||
|
@ -162,13 +170,20 @@ func (g *GitGetter) checkout(dst string, ref string) error {
|
||||||
return getRunCommand(cmd)
|
return getRunCommand(cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GitGetter) clone(ctx context.Context, dst, sshKeyFile string, u *url.URL) error {
|
func (g *GitGetter) clone(ctx context.Context, dst, sshKeyFile string, u *url.URL, depth int) error {
|
||||||
cmd := exec.CommandContext(ctx, "git", "clone", u.String(), dst)
|
args := []string{"clone"}
|
||||||
|
|
||||||
|
if depth > 0 {
|
||||||
|
args = append(args, "--depth", strconv.Itoa(depth))
|
||||||
|
}
|
||||||
|
|
||||||
|
args = append(args, u.String(), dst)
|
||||||
|
cmd := exec.CommandContext(ctx, "git", args...)
|
||||||
setupGitEnv(cmd, sshKeyFile)
|
setupGitEnv(cmd, sshKeyFile)
|
||||||
return getRunCommand(cmd)
|
return getRunCommand(cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (g *GitGetter) update(ctx context.Context, dst, sshKeyFile, ref string) error {
|
func (g *GitGetter) update(ctx context.Context, dst, sshKeyFile, ref string, depth int) error {
|
||||||
// Determine if we're a branch. If we're NOT a branch, then we just
|
// Determine if we're a branch. If we're NOT a branch, then we just
|
||||||
// switch to master prior to checking out
|
// switch to master prior to checking out
|
||||||
cmd := exec.CommandContext(ctx, "git", "show-ref", "-q", "--verify", "refs/heads/"+ref)
|
cmd := exec.CommandContext(ctx, "git", "show-ref", "-q", "--verify", "refs/heads/"+ref)
|
||||||
|
@ -186,15 +201,24 @@ func (g *GitGetter) update(ctx context.Context, dst, sshKeyFile, ref string) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if depth > 0 {
|
||||||
|
cmd = exec.Command("git", "pull", "--depth", strconv.Itoa(depth), "--ff-only")
|
||||||
|
} else {
|
||||||
cmd = exec.Command("git", "pull", "--ff-only")
|
cmd = exec.Command("git", "pull", "--ff-only")
|
||||||
|
}
|
||||||
|
|
||||||
cmd.Dir = dst
|
cmd.Dir = dst
|
||||||
setupGitEnv(cmd, sshKeyFile)
|
setupGitEnv(cmd, sshKeyFile)
|
||||||
return getRunCommand(cmd)
|
return getRunCommand(cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
// fetchSubmodules downloads any configured submodules recursively.
|
// fetchSubmodules downloads any configured submodules recursively.
|
||||||
func (g *GitGetter) fetchSubmodules(ctx context.Context, dst, sshKeyFile string) error {
|
func (g *GitGetter) fetchSubmodules(ctx context.Context, dst, sshKeyFile string, depth int) error {
|
||||||
cmd := exec.CommandContext(ctx, "git", "submodule", "update", "--init", "--recursive")
|
args := []string{"submodule", "update", "--init", "--recursive"}
|
||||||
|
if depth > 0 {
|
||||||
|
args = append(args, "--depth", strconv.Itoa(depth))
|
||||||
|
}
|
||||||
|
cmd := exec.CommandContext(ctx, "git", args...)
|
||||||
cmd.Dir = dst
|
cmd.Dir = dst
|
||||||
setupGitEnv(cmd, sshKeyFile)
|
setupGitEnv(cmd, sshKeyFile)
|
||||||
return getRunCommand(cmd)
|
return getRunCommand(cmd)
|
||||||
|
@ -211,7 +235,7 @@ func setupGitEnv(cmd *exec.Cmd, sshKeyFile string) {
|
||||||
// with versions of Go < 1.9.
|
// with versions of Go < 1.9.
|
||||||
env := os.Environ()
|
env := os.Environ()
|
||||||
for i, v := range env {
|
for i, v := range env {
|
||||||
if strings.HasPrefix(v, gitSSHCommand) {
|
if strings.HasPrefix(v, gitSSHCommand) && len(v) > len(gitSSHCommand) {
|
||||||
sshCmd = []string{v}
|
sshCmd = []string{v}
|
||||||
|
|
||||||
env[i], env[len(env)-1] = env[len(env)-1], env[i]
|
env[i], env[len(env)-1] = env[len(env)-1], env[i]
|
||||||
|
@ -226,6 +250,9 @@ func setupGitEnv(cmd *exec.Cmd, sshKeyFile string) {
|
||||||
|
|
||||||
if sshKeyFile != "" {
|
if sshKeyFile != "" {
|
||||||
// We have an SSH key temp file configured, tell ssh about this.
|
// We have an SSH key temp file configured, tell ssh about this.
|
||||||
|
if runtime.GOOS == "windows" {
|
||||||
|
sshKeyFile = strings.Replace(sshKeyFile, `\`, `/`, -1)
|
||||||
|
}
|
||||||
sshCmd = append(sshCmd, "-i", sshKeyFile)
|
sshCmd = append(sshCmd, "-i", sshKeyFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,8 +278,17 @@ func checkGitVersion(min string) error {
|
||||||
if len(fields) < 3 {
|
if len(fields) < 3 {
|
||||||
return fmt.Errorf("Unexpected 'git version' output: %q", string(out))
|
return fmt.Errorf("Unexpected 'git version' output: %q", string(out))
|
||||||
}
|
}
|
||||||
|
v := fields[2]
|
||||||
|
if runtime.GOOS == "windows" && strings.Contains(v, ".windows.") {
|
||||||
|
// on windows, git version will return for example:
|
||||||
|
// git version 2.20.1.windows.1
|
||||||
|
// Which does not follow the semantic versionning specs
|
||||||
|
// https://semver.org. We remove that part in order for
|
||||||
|
// go-version to not error.
|
||||||
|
v = v[:strings.Index(v, ".windows.")]
|
||||||
|
}
|
||||||
|
|
||||||
have, err := version.NewVersion(fields[2])
|
have, err := version.NewVersion(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
4
vendor/github.com/hashicorp/go-getter/get_http.go
generated
vendored
4
vendor/github.com/hashicorp/go-getter/get_http.go
generated
vendored
|
@ -146,6 +146,7 @@ func (g *HttpGetter) GetFile(dst string, src *url.URL) error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
defer f.Close()
|
||||||
|
|
||||||
if g.Client == nil {
|
if g.Client == nil {
|
||||||
g.Client = httpClient
|
g.Client = httpClient
|
||||||
|
@ -211,9 +212,6 @@ func (g *HttpGetter) GetFile(dst string, src *url.URL) error {
|
||||||
if err == nil && n < resp.ContentLength {
|
if err == nil && n < resp.ContentLength {
|
||||||
err = io.ErrShortWrite
|
err = io.ErrShortWrite
|
||||||
}
|
}
|
||||||
if err1 := f.Close(); err == nil {
|
|
||||||
err = err1
|
|
||||||
}
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
vendor/github.com/hashicorp/go-getter/go.mod
generated
vendored
2
vendor/github.com/hashicorp/go-getter/go.mod
generated
vendored
|
@ -8,7 +8,7 @@ require (
|
||||||
github.com/fatih/color v1.7.0 // indirect
|
github.com/fatih/color v1.7.0 // indirect
|
||||||
github.com/hashicorp/go-cleanhttp v0.5.0
|
github.com/hashicorp/go-cleanhttp v0.5.0
|
||||||
github.com/hashicorp/go-safetemp v1.0.0
|
github.com/hashicorp/go-safetemp v1.0.0
|
||||||
github.com/hashicorp/go-version v1.0.0
|
github.com/hashicorp/go-version v1.1.0
|
||||||
github.com/mattn/go-colorable v0.0.9 // indirect
|
github.com/mattn/go-colorable v0.0.9 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.4 // indirect
|
github.com/mattn/go-isatty v0.0.4 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.4 // indirect
|
github.com/mattn/go-runewidth v0.0.4 // indirect
|
||||||
|
|
2
vendor/github.com/hashicorp/go-getter/go.sum
generated
vendored
2
vendor/github.com/hashicorp/go-getter/go.sum
generated
vendored
|
@ -14,6 +14,8 @@ github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhE
|
||||||
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
|
github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I=
|
||||||
github.com/hashicorp/go-version v1.0.0 h1:21MVWPKDphxa7ineQQTrCU5brh7OuVVAzGOCnnCPtE8=
|
github.com/hashicorp/go-version v1.0.0 h1:21MVWPKDphxa7ineQQTrCU5brh7OuVVAzGOCnnCPtE8=
|
||||||
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
|
github.com/hashicorp/go-version v1.1.0 h1:bPIoEKD27tNdebFGGxxYwcL4nepeY4j1QP23PFRGzg0=
|
||||||
|
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
|
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
|
||||||
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||||
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
|
||||||
|
|
15
vendor/github.com/hashicorp/go-getter/helper/url/url_windows.go
generated
vendored
15
vendor/github.com/hashicorp/go-getter/helper/url/url_windows.go
generated
vendored
|
@ -11,19 +11,18 @@ func parse(rawURL string) (*url.URL, error) {
|
||||||
// Make sure we're using "/" since URLs are "/"-based.
|
// Make sure we're using "/" since URLs are "/"-based.
|
||||||
rawURL = filepath.ToSlash(rawURL)
|
rawURL = filepath.ToSlash(rawURL)
|
||||||
|
|
||||||
|
if len(rawURL) > 1 && rawURL[1] == ':' {
|
||||||
|
// Assume we're dealing with a drive letter. In which case we
|
||||||
|
// force the 'file' scheme to avoid "net/url" URL.String() prepending
|
||||||
|
// our url with "./".
|
||||||
|
rawURL = "file://" + rawURL
|
||||||
|
}
|
||||||
|
|
||||||
u, err := url.Parse(rawURL)
|
u, err := url.Parse(rawURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(rawURL) > 1 && rawURL[1] == ':' {
|
|
||||||
// Assume we're dealing with a drive letter file path where the drive
|
|
||||||
// letter has been parsed into the URL Scheme, and the rest of the path
|
|
||||||
// has been parsed into the URL Path without the leading ':' character.
|
|
||||||
u.Path = fmt.Sprintf("%s:%s", string(rawURL[0]), u.Path)
|
|
||||||
u.Scheme = ""
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(u.Host) > 1 && u.Host[1] == ':' && strings.HasPrefix(rawURL, "file://") {
|
if len(u.Host) > 1 && u.Host[1] == ':' && strings.HasPrefix(rawURL, "file://") {
|
||||||
// Assume we're dealing with a drive letter file path where the drive
|
// Assume we're dealing with a drive letter file path where the drive
|
||||||
// letter has been parsed into the URL Host.
|
// letter has been parsed into the URL Host.
|
||||||
|
|
64
vendor/github.com/hashicorp/go-plugin/client.go
generated
vendored
64
vendor/github.com/hashicorp/go-plugin/client.go
generated
vendored
|
@ -21,7 +21,6 @@ import (
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
"unicode"
|
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
hclog "github.com/hashicorp/go-hclog"
|
||||||
)
|
)
|
||||||
|
@ -933,21 +932,63 @@ func (c *Client) dialer(_ string, timeout time.Duration) (net.Conn, error) {
|
||||||
return conn, nil
|
return conn, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var stdErrBufferSize = 64 * 1024
|
||||||
|
|
||||||
func (c *Client) logStderr(r io.Reader) {
|
func (c *Client) logStderr(r io.Reader) {
|
||||||
defer c.clientWaitGroup.Done()
|
defer c.clientWaitGroup.Done()
|
||||||
|
|
||||||
scanner := bufio.NewScanner(r)
|
|
||||||
l := c.logger.Named(filepath.Base(c.config.Cmd.Path))
|
l := c.logger.Named(filepath.Base(c.config.Cmd.Path))
|
||||||
|
|
||||||
for scanner.Scan() {
|
reader := bufio.NewReaderSize(r, stdErrBufferSize)
|
||||||
line := scanner.Text()
|
// continuation indicates the previous line was a prefix
|
||||||
c.config.Stderr.Write([]byte(line + "\n"))
|
continuation := false
|
||||||
line = strings.TrimRightFunc(line, unicode.IsSpace)
|
|
||||||
|
for {
|
||||||
|
line, isPrefix, err := reader.ReadLine()
|
||||||
|
switch {
|
||||||
|
case err == io.EOF:
|
||||||
|
return
|
||||||
|
case err != nil:
|
||||||
|
l.Error("reading plugin stderr", "error", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
c.config.Stderr.Write(line)
|
||||||
|
|
||||||
|
// The line was longer than our max token size, so it's likely
|
||||||
|
// incomplete and won't unmarshal.
|
||||||
|
if isPrefix || continuation {
|
||||||
|
l.Debug(string(line))
|
||||||
|
|
||||||
|
// if we're finishing a continued line, add the newline back in
|
||||||
|
if !isPrefix {
|
||||||
|
c.config.Stderr.Write([]byte{'\n'})
|
||||||
|
}
|
||||||
|
|
||||||
|
continuation = isPrefix
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
c.config.Stderr.Write([]byte{'\n'})
|
||||||
|
|
||||||
entry, err := parseJSON(line)
|
entry, err := parseJSON(line)
|
||||||
// If output is not JSON format, print directly to Debug
|
// If output is not JSON format, print directly to Debug
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
// Attempt to infer the desired log level from the commonly used
|
||||||
|
// string prefixes
|
||||||
|
switch line := string(line); {
|
||||||
|
case strings.HasPrefix("[TRACE]", line):
|
||||||
|
l.Trace(line)
|
||||||
|
case strings.HasPrefix("[DEBUG]", line):
|
||||||
l.Debug(line)
|
l.Debug(line)
|
||||||
|
case strings.HasPrefix("[INFO]", line):
|
||||||
|
l.Info(line)
|
||||||
|
case strings.HasPrefix("[WARN]", line):
|
||||||
|
l.Warn(line)
|
||||||
|
case strings.HasPrefix("[ERROR]", line):
|
||||||
|
l.Error(line)
|
||||||
|
default:
|
||||||
|
l.Debug(line)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
out := flattenKVPairs(entry.KVPairs)
|
out := flattenKVPairs(entry.KVPairs)
|
||||||
|
|
||||||
|
@ -963,11 +1004,12 @@ func (c *Client) logStderr(r io.Reader) {
|
||||||
l.Warn(entry.Message, out...)
|
l.Warn(entry.Message, out...)
|
||||||
case hclog.Error:
|
case hclog.Error:
|
||||||
l.Error(entry.Message, out...)
|
l.Error(entry.Message, out...)
|
||||||
|
default:
|
||||||
|
// if there was no log level, it's likely this is unexpected
|
||||||
|
// json from something other than hclog, and we should output
|
||||||
|
// it verbatim.
|
||||||
|
l.Debug(string(line))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := scanner.Err(); err != nil {
|
|
||||||
l.Error("reading plugin stderr", "error", err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
4
vendor/github.com/hashicorp/go-plugin/go.mod
generated
vendored
4
vendor/github.com/hashicorp/go-plugin/go.mod
generated
vendored
|
@ -1,12 +1,16 @@
|
||||||
module github.com/hashicorp/go-plugin
|
module github.com/hashicorp/go-plugin
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect
|
||||||
github.com/golang/protobuf v1.2.0
|
github.com/golang/protobuf v1.2.0
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd
|
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd
|
||||||
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb
|
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb
|
||||||
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77
|
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77
|
||||||
github.com/oklog/run v1.0.0
|
github.com/oklog/run v1.0.0
|
||||||
|
github.com/stretchr/testify v1.3.0 // indirect
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect
|
||||||
|
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc // indirect
|
||||||
golang.org/x/text v0.3.0 // indirect
|
golang.org/x/text v0.3.0 // indirect
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 // indirect
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 // indirect
|
||||||
google.golang.org/grpc v1.14.0
|
google.golang.org/grpc v1.14.0
|
||||||
|
|
13
vendor/github.com/hashicorp/go-plugin/go.sum
generated
vendored
13
vendor/github.com/hashicorp/go-plugin/go.sum
generated
vendored
|
@ -1,3 +1,7 @@
|
||||||
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
||||||
|
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||||
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM=
|
||||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd h1:rNuUHR+CvK1IS89MMtcF0EpcVMZtjKfPRp4MEmt/aTs=
|
github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd h1:rNuUHR+CvK1IS89MMtcF0EpcVMZtjKfPRp4MEmt/aTs=
|
||||||
|
@ -8,8 +12,17 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77 h1:
|
||||||
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
|
||||||
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
|
||||||
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q=
|
||||||
|
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d h1:g9qWBGx4puODJTMVyoPrpoxPFgVGd+z1DZwjfRu4d0I=
|
||||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 h1:YUO/7uOKsKeq9UokNS62b8FYywz3ker1l1vDZRCRefw=
|
||||||
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc h1:WiYx1rIFmx8c0mXAFtv5D/mHyKe1+jmuP7PViuwqwuQ=
|
||||||
|
golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8 h1:Nw54tB0rB7hY/N0NQvRW8DG4Yk3Q6T9cu9RcFQDu1tc=
|
||||||
|
|
38
vendor/github.com/hashicorp/go-plugin/grpc_broker.go
generated
vendored
38
vendor/github.com/hashicorp/go-plugin/grpc_broker.go
generated
vendored
|
@ -11,7 +11,7 @@ import (
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-plugin/internal/proto"
|
"github.com/hashicorp/go-plugin/internal/plugin"
|
||||||
|
|
||||||
"github.com/oklog/run"
|
"github.com/oklog/run"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
|
@ -21,14 +21,14 @@ import (
|
||||||
// streamer interface is used in the broker to send/receive connection
|
// streamer interface is used in the broker to send/receive connection
|
||||||
// information.
|
// information.
|
||||||
type streamer interface {
|
type streamer interface {
|
||||||
Send(*proto.ConnInfo) error
|
Send(*plugin.ConnInfo) error
|
||||||
Recv() (*proto.ConnInfo, error)
|
Recv() (*plugin.ConnInfo, error)
|
||||||
Close()
|
Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// sendErr is used to pass errors back during a send.
|
// sendErr is used to pass errors back during a send.
|
||||||
type sendErr struct {
|
type sendErr struct {
|
||||||
i *proto.ConnInfo
|
i *plugin.ConnInfo
|
||||||
ch chan error
|
ch chan error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ type gRPCBrokerServer struct {
|
||||||
send chan *sendErr
|
send chan *sendErr
|
||||||
|
|
||||||
// recv is used to receive connection info from the gRPC stream.
|
// recv is used to receive connection info from the gRPC stream.
|
||||||
recv chan *proto.ConnInfo
|
recv chan *plugin.ConnInfo
|
||||||
|
|
||||||
// quit closes down the stream.
|
// quit closes down the stream.
|
||||||
quit chan struct{}
|
quit chan struct{}
|
||||||
|
@ -52,7 +52,7 @@ type gRPCBrokerServer struct {
|
||||||
func newGRPCBrokerServer() *gRPCBrokerServer {
|
func newGRPCBrokerServer() *gRPCBrokerServer {
|
||||||
return &gRPCBrokerServer{
|
return &gRPCBrokerServer{
|
||||||
send: make(chan *sendErr),
|
send: make(chan *sendErr),
|
||||||
recv: make(chan *proto.ConnInfo),
|
recv: make(chan *plugin.ConnInfo),
|
||||||
quit: make(chan struct{}),
|
quit: make(chan struct{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -60,7 +60,7 @@ func newGRPCBrokerServer() *gRPCBrokerServer {
|
||||||
// StartStream implements the GRPCBrokerServer interface and will block until
|
// StartStream implements the GRPCBrokerServer interface and will block until
|
||||||
// the quit channel is closed or the context reports Done. The stream will pass
|
// the quit channel is closed or the context reports Done. The stream will pass
|
||||||
// connection information to/from the client.
|
// connection information to/from the client.
|
||||||
func (s *gRPCBrokerServer) StartStream(stream proto.GRPCBroker_StartStreamServer) error {
|
func (s *gRPCBrokerServer) StartStream(stream plugin.GRPCBroker_StartStreamServer) error {
|
||||||
doneCh := stream.Context().Done()
|
doneCh := stream.Context().Done()
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ func (s *gRPCBrokerServer) StartStream(stream proto.GRPCBroker_StartStreamServer
|
||||||
|
|
||||||
// Send is used by the GRPCBroker to pass connection information into the stream
|
// Send is used by the GRPCBroker to pass connection information into the stream
|
||||||
// to the client.
|
// to the client.
|
||||||
func (s *gRPCBrokerServer) Send(i *proto.ConnInfo) error {
|
func (s *gRPCBrokerServer) Send(i *plugin.ConnInfo) error {
|
||||||
ch := make(chan error)
|
ch := make(chan error)
|
||||||
defer close(ch)
|
defer close(ch)
|
||||||
|
|
||||||
|
@ -117,7 +117,7 @@ func (s *gRPCBrokerServer) Send(i *proto.ConnInfo) error {
|
||||||
|
|
||||||
// Recv is used by the GRPCBroker to pass connection information that has been
|
// Recv is used by the GRPCBroker to pass connection information that has been
|
||||||
// sent from the client from the stream to the broker.
|
// sent from the client from the stream to the broker.
|
||||||
func (s *gRPCBrokerServer) Recv() (*proto.ConnInfo, error) {
|
func (s *gRPCBrokerServer) Recv() (*plugin.ConnInfo, error) {
|
||||||
select {
|
select {
|
||||||
case <-s.quit:
|
case <-s.quit:
|
||||||
return nil, errors.New("broker closed")
|
return nil, errors.New("broker closed")
|
||||||
|
@ -138,13 +138,13 @@ func (s *gRPCBrokerServer) Close() {
|
||||||
// streamer interfaces.
|
// streamer interfaces.
|
||||||
type gRPCBrokerClientImpl struct {
|
type gRPCBrokerClientImpl struct {
|
||||||
// client is the underlying GRPC client used to make calls to the server.
|
// client is the underlying GRPC client used to make calls to the server.
|
||||||
client proto.GRPCBrokerClient
|
client plugin.GRPCBrokerClient
|
||||||
|
|
||||||
// send is used to send connection info to the gRPC stream.
|
// send is used to send connection info to the gRPC stream.
|
||||||
send chan *sendErr
|
send chan *sendErr
|
||||||
|
|
||||||
// recv is used to receive connection info from the gRPC stream.
|
// recv is used to receive connection info from the gRPC stream.
|
||||||
recv chan *proto.ConnInfo
|
recv chan *plugin.ConnInfo
|
||||||
|
|
||||||
// quit closes down the stream.
|
// quit closes down the stream.
|
||||||
quit chan struct{}
|
quit chan struct{}
|
||||||
|
@ -155,9 +155,9 @@ type gRPCBrokerClientImpl struct {
|
||||||
|
|
||||||
func newGRPCBrokerClient(conn *grpc.ClientConn) *gRPCBrokerClientImpl {
|
func newGRPCBrokerClient(conn *grpc.ClientConn) *gRPCBrokerClientImpl {
|
||||||
return &gRPCBrokerClientImpl{
|
return &gRPCBrokerClientImpl{
|
||||||
client: proto.NewGRPCBrokerClient(conn),
|
client: plugin.NewGRPCBrokerClient(conn),
|
||||||
send: make(chan *sendErr),
|
send: make(chan *sendErr),
|
||||||
recv: make(chan *proto.ConnInfo),
|
recv: make(chan *plugin.ConnInfo),
|
||||||
quit: make(chan struct{}),
|
quit: make(chan struct{}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -209,7 +209,7 @@ func (s *gRPCBrokerClientImpl) StartStream() error {
|
||||||
|
|
||||||
// Send is used by the GRPCBroker to pass connection information into the stream
|
// Send is used by the GRPCBroker to pass connection information into the stream
|
||||||
// to the plugin.
|
// to the plugin.
|
||||||
func (s *gRPCBrokerClientImpl) Send(i *proto.ConnInfo) error {
|
func (s *gRPCBrokerClientImpl) Send(i *plugin.ConnInfo) error {
|
||||||
ch := make(chan error)
|
ch := make(chan error)
|
||||||
defer close(ch)
|
defer close(ch)
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ func (s *gRPCBrokerClientImpl) Send(i *proto.ConnInfo) error {
|
||||||
|
|
||||||
// Recv is used by the GRPCBroker to pass connection information that has been
|
// Recv is used by the GRPCBroker to pass connection information that has been
|
||||||
// sent from the plugin to the broker.
|
// sent from the plugin to the broker.
|
||||||
func (s *gRPCBrokerClientImpl) Recv() (*proto.ConnInfo, error) {
|
func (s *gRPCBrokerClientImpl) Recv() (*plugin.ConnInfo, error) {
|
||||||
select {
|
select {
|
||||||
case <-s.quit:
|
case <-s.quit:
|
||||||
return nil, errors.New("broker closed")
|
return nil, errors.New("broker closed")
|
||||||
|
@ -268,7 +268,7 @@ type GRPCBroker struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
type gRPCBrokerPending struct {
|
type gRPCBrokerPending struct {
|
||||||
ch chan *proto.ConnInfo
|
ch chan *plugin.ConnInfo
|
||||||
doneCh chan struct{}
|
doneCh chan struct{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -290,7 +290,7 @@ func (b *GRPCBroker) Accept(id uint32) (net.Listener, error) {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
err = b.streamer.Send(&proto.ConnInfo{
|
err = b.streamer.Send(&plugin.ConnInfo{
|
||||||
ServiceId: id,
|
ServiceId: id,
|
||||||
Network: listener.Addr().Network(),
|
Network: listener.Addr().Network(),
|
||||||
Address: listener.Addr().String(),
|
Address: listener.Addr().String(),
|
||||||
|
@ -365,7 +365,7 @@ func (b *GRPCBroker) Close() error {
|
||||||
|
|
||||||
// Dial opens a connection by ID.
|
// Dial opens a connection by ID.
|
||||||
func (b *GRPCBroker) Dial(id uint32) (conn *grpc.ClientConn, err error) {
|
func (b *GRPCBroker) Dial(id uint32) (conn *grpc.ClientConn, err error) {
|
||||||
var c *proto.ConnInfo
|
var c *plugin.ConnInfo
|
||||||
|
|
||||||
// Open the stream
|
// Open the stream
|
||||||
p := b.getStream(id)
|
p := b.getStream(id)
|
||||||
|
@ -435,7 +435,7 @@ func (m *GRPCBroker) getStream(id uint32) *gRPCBrokerPending {
|
||||||
}
|
}
|
||||||
|
|
||||||
m.streams[id] = &gRPCBrokerPending{
|
m.streams[id] = &gRPCBrokerPending{
|
||||||
ch: make(chan *proto.ConnInfo, 1),
|
ch: make(chan *plugin.ConnInfo, 1),
|
||||||
doneCh: make(chan struct{}),
|
doneCh: make(chan struct{}),
|
||||||
}
|
}
|
||||||
return m.streams[id]
|
return m.streams[id]
|
||||||
|
|
8
vendor/github.com/hashicorp/go-plugin/grpc_client.go
generated
vendored
8
vendor/github.com/hashicorp/go-plugin/grpc_client.go
generated
vendored
|
@ -6,7 +6,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/hashicorp/go-plugin/internal/proto"
|
"github.com/hashicorp/go-plugin/internal/plugin"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials"
|
"google.golang.org/grpc/credentials"
|
||||||
|
@ -61,7 +61,7 @@ func newGRPCClient(doneCtx context.Context, c *Client) (*GRPCClient, error) {
|
||||||
Plugins: c.config.Plugins,
|
Plugins: c.config.Plugins,
|
||||||
doneCtx: doneCtx,
|
doneCtx: doneCtx,
|
||||||
broker: broker,
|
broker: broker,
|
||||||
controller: proto.NewGRPCControllerClient(conn),
|
controller: plugin.NewGRPCControllerClient(conn),
|
||||||
}
|
}
|
||||||
|
|
||||||
return cl, nil
|
return cl, nil
|
||||||
|
@ -75,13 +75,13 @@ type GRPCClient struct {
|
||||||
doneCtx context.Context
|
doneCtx context.Context
|
||||||
broker *GRPCBroker
|
broker *GRPCBroker
|
||||||
|
|
||||||
controller proto.GRPCControllerClient
|
controller plugin.GRPCControllerClient
|
||||||
}
|
}
|
||||||
|
|
||||||
// ClientProtocol impl.
|
// ClientProtocol impl.
|
||||||
func (c *GRPCClient) Close() error {
|
func (c *GRPCClient) Close() error {
|
||||||
c.broker.Close()
|
c.broker.Close()
|
||||||
c.controller.Shutdown(c.doneCtx, &proto.Empty{})
|
c.controller.Shutdown(c.doneCtx, &plugin.Empty{})
|
||||||
return c.Conn.Close()
|
return c.Conn.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
6
vendor/github.com/hashicorp/go-plugin/grpc_controller.go
generated
vendored
6
vendor/github.com/hashicorp/go-plugin/grpc_controller.go
generated
vendored
|
@ -3,7 +3,7 @@ package plugin
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/hashicorp/go-plugin/internal/proto"
|
"github.com/hashicorp/go-plugin/internal/plugin"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GRPCControllerServer handles shutdown calls to terminate the server when the
|
// GRPCControllerServer handles shutdown calls to terminate the server when the
|
||||||
|
@ -14,8 +14,8 @@ type grpcControllerServer struct {
|
||||||
|
|
||||||
// Shutdown stops the grpc server. It first will attempt a graceful stop, then a
|
// Shutdown stops the grpc server. It first will attempt a graceful stop, then a
|
||||||
// full stop on the server.
|
// full stop on the server.
|
||||||
func (s *grpcControllerServer) Shutdown(ctx context.Context, _ *proto.Empty) (*proto.Empty, error) {
|
func (s *grpcControllerServer) Shutdown(ctx context.Context, _ *plugin.Empty) (*plugin.Empty, error) {
|
||||||
resp := &proto.Empty{}
|
resp := &plugin.Empty{}
|
||||||
|
|
||||||
// TODO: figure out why GracefullStop doesn't work.
|
// TODO: figure out why GracefullStop doesn't work.
|
||||||
s.server.Stop()
|
s.server.Stop()
|
||||||
|
|
6
vendor/github.com/hashicorp/go-plugin/grpc_server.go
generated
vendored
6
vendor/github.com/hashicorp/go-plugin/grpc_server.go
generated
vendored
|
@ -9,7 +9,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
hclog "github.com/hashicorp/go-hclog"
|
||||||
"github.com/hashicorp/go-plugin/internal/proto"
|
"github.com/hashicorp/go-plugin/internal/plugin"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"google.golang.org/grpc/credentials"
|
"google.golang.org/grpc/credentials"
|
||||||
"google.golang.org/grpc/health"
|
"google.golang.org/grpc/health"
|
||||||
|
@ -75,7 +75,7 @@ func (s *GRPCServer) Init() error {
|
||||||
|
|
||||||
// Register the broker service
|
// Register the broker service
|
||||||
brokerServer := newGRPCBrokerServer()
|
brokerServer := newGRPCBrokerServer()
|
||||||
proto.RegisterGRPCBrokerServer(s.server, brokerServer)
|
plugin.RegisterGRPCBrokerServer(s.server, brokerServer)
|
||||||
s.broker = newGRPCBroker(brokerServer, s.TLS)
|
s.broker = newGRPCBroker(brokerServer, s.TLS)
|
||||||
go s.broker.Run()
|
go s.broker.Run()
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ func (s *GRPCServer) Init() error {
|
||||||
controllerServer := &grpcControllerServer{
|
controllerServer := &grpcControllerServer{
|
||||||
server: s,
|
server: s,
|
||||||
}
|
}
|
||||||
proto.RegisterGRPCControllerServer(s.server, controllerServer)
|
plugin.RegisterGRPCControllerServer(s.server, controllerServer)
|
||||||
|
|
||||||
// Register all our plugins onto the gRPC server.
|
// Register all our plugins onto the gRPC server.
|
||||||
for k, raw := range s.Plugins {
|
for k, raw := range s.Plugins {
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
//go:generate protoc -I ./ ./grpc_broker.proto ./grpc_controller.proto --go_out=plugins=grpc:.
|
//go:generate protoc -I ./ ./grpc_broker.proto ./grpc_controller.proto --go_out=plugins=grpc:.
|
||||||
|
|
||||||
package proto
|
package plugin
|
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: grpc_broker.proto
|
// source: grpc_broker.proto
|
||||||
|
|
||||||
package proto
|
package plugin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
|
@ -78,24 +78,24 @@ func (m *ConnInfo) GetAddress() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*ConnInfo)(nil), "proto.ConnInfo")
|
proto.RegisterType((*ConnInfo)(nil), "plugin.ConnInfo")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("grpc_broker.proto", fileDescriptor_802e9beed3ec3b28) }
|
func init() { proto.RegisterFile("grpc_broker.proto", fileDescriptor_802e9beed3ec3b28) }
|
||||||
|
|
||||||
var fileDescriptor_802e9beed3ec3b28 = []byte{
|
var fileDescriptor_802e9beed3ec3b28 = []byte{
|
||||||
// 164 bytes of a gzipped FileDescriptorProto
|
// 175 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4c, 0x2f, 0x2a, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4c, 0x2f, 0x2a, 0x48,
|
||||||
0x8e, 0x4f, 0x2a, 0xca, 0xcf, 0x4e, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x05,
|
0x8e, 0x4f, 0x2a, 0xca, 0xcf, 0x4e, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2b,
|
||||||
0x53, 0x4a, 0xb1, 0x5c, 0x1c, 0xce, 0xf9, 0x79, 0x79, 0x9e, 0x79, 0x69, 0xf9, 0x42, 0xb2, 0x5c,
|
0xc8, 0x29, 0x4d, 0xcf, 0xcc, 0x53, 0x8a, 0xe5, 0xe2, 0x70, 0xce, 0xcf, 0xcb, 0xf3, 0xcc, 0x4b,
|
||||||
0x5c, 0xc5, 0xa9, 0x45, 0x65, 0x99, 0xc9, 0xa9, 0xf1, 0x99, 0x29, 0x12, 0x8c, 0x0a, 0x8c, 0x1a,
|
0xcb, 0x17, 0x92, 0xe5, 0xe2, 0x2a, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0x8d, 0xcf, 0x4c, 0x91,
|
||||||
0xbc, 0x41, 0x9c, 0x50, 0x11, 0xcf, 0x14, 0x21, 0x09, 0x2e, 0xf6, 0xbc, 0xd4, 0x92, 0xf2, 0xfc,
|
0x60, 0x54, 0x60, 0xd4, 0xe0, 0x0d, 0xe2, 0x84, 0x8a, 0x78, 0xa6, 0x08, 0x49, 0x70, 0xb1, 0xe7,
|
||||||
0xa2, 0x6c, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xce, 0x20, 0x18, 0x17, 0x24, 0x93, 0x98, 0x92, 0x52,
|
0xa5, 0x96, 0x94, 0xe7, 0x17, 0x65, 0x4b, 0x30, 0x29, 0x30, 0x6a, 0x70, 0x06, 0xc1, 0xb8, 0x20,
|
||||||
0x94, 0x5a, 0x5c, 0x2c, 0xc1, 0x0c, 0x91, 0x81, 0x72, 0x8d, 0x1c, 0xb9, 0xb8, 0xdc, 0x83, 0x02,
|
0x99, 0xc4, 0x94, 0x94, 0xa2, 0xd4, 0xe2, 0x62, 0x09, 0x66, 0x88, 0x0c, 0x94, 0x6b, 0xe4, 0xcc,
|
||||||
0x9c, 0x9d, 0xc0, 0x36, 0x0b, 0x19, 0x73, 0x71, 0x07, 0x97, 0x24, 0x16, 0x95, 0x04, 0x97, 0x14,
|
0xc5, 0xe5, 0x1e, 0x14, 0xe0, 0xec, 0x04, 0xb6, 0x5a, 0xc8, 0x94, 0x8b, 0x3b, 0xb8, 0x24, 0xb1,
|
||||||
0xa5, 0x26, 0xe6, 0x0a, 0xf1, 0x43, 0x9c, 0xa2, 0x07, 0x73, 0x80, 0x14, 0xba, 0x80, 0x06, 0xa3,
|
0xa8, 0x24, 0xb8, 0xa4, 0x28, 0x35, 0x31, 0x57, 0x48, 0x40, 0x0f, 0xe2, 0x08, 0x3d, 0x98, 0x0b,
|
||||||
0x01, 0x63, 0x12, 0x1b, 0x58, 0xcc, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7a, 0xda, 0xd5, 0x84,
|
0xa4, 0x30, 0x44, 0x34, 0x18, 0x0d, 0x18, 0x9d, 0x38, 0xa2, 0xa0, 0xae, 0x4d, 0x62, 0x03, 0x3b,
|
||||||
0xc4, 0x00, 0x00, 0x00,
|
0xde, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x10, 0x15, 0x39, 0x47, 0xd1, 0x00, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
@ -122,7 +122,7 @@ func NewGRPCBrokerClient(cc *grpc.ClientConn) GRPCBrokerClient {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *gRPCBrokerClient) StartStream(ctx context.Context, opts ...grpc.CallOption) (GRPCBroker_StartStreamClient, error) {
|
func (c *gRPCBrokerClient) StartStream(ctx context.Context, opts ...grpc.CallOption) (GRPCBroker_StartStreamClient, error) {
|
||||||
stream, err := c.cc.NewStream(ctx, &_GRPCBroker_serviceDesc.Streams[0], "/proto.GRPCBroker/StartStream", opts...)
|
stream, err := c.cc.NewStream(ctx, &_GRPCBroker_serviceDesc.Streams[0], "/plugin.GRPCBroker/StartStream", opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -188,7 +188,7 @@ func (x *gRPCBrokerStartStreamServer) Recv() (*ConnInfo, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var _GRPCBroker_serviceDesc = grpc.ServiceDesc{
|
var _GRPCBroker_serviceDesc = grpc.ServiceDesc{
|
||||||
ServiceName: "proto.GRPCBroker",
|
ServiceName: "plugin.GRPCBroker",
|
||||||
HandlerType: (*GRPCBrokerServer)(nil),
|
HandlerType: (*GRPCBrokerServer)(nil),
|
||||||
Methods: []grpc.MethodDesc{},
|
Methods: []grpc.MethodDesc{},
|
||||||
Streams: []grpc.StreamDesc{
|
Streams: []grpc.StreamDesc{
|
|
@ -1,5 +1,6 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package proto;
|
package plugin;
|
||||||
|
option go_package = "plugin";
|
||||||
|
|
||||||
message ConnInfo {
|
message ConnInfo {
|
||||||
uint32 service_id = 1;
|
uint32 service_id = 1;
|
|
@ -1,7 +1,7 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
// source: grpc_controller.proto
|
// source: grpc_controller.proto
|
||||||
|
|
||||||
package proto
|
package plugin
|
||||||
|
|
||||||
import (
|
import (
|
||||||
fmt "fmt"
|
fmt "fmt"
|
||||||
|
@ -54,20 +54,20 @@ func (m *Empty) XXX_DiscardUnknown() {
|
||||||
var xxx_messageInfo_Empty proto.InternalMessageInfo
|
var xxx_messageInfo_Empty proto.InternalMessageInfo
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
proto.RegisterType((*Empty)(nil), "proto.Empty")
|
proto.RegisterType((*Empty)(nil), "plugin.Empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { proto.RegisterFile("grpc_controller.proto", fileDescriptor_23c2c7e42feab570) }
|
func init() { proto.RegisterFile("grpc_controller.proto", fileDescriptor_23c2c7e42feab570) }
|
||||||
|
|
||||||
var fileDescriptor_23c2c7e42feab570 = []byte{
|
var fileDescriptor_23c2c7e42feab570 = []byte{
|
||||||
// 97 bytes of a gzipped FileDescriptorProto
|
// 108 bytes of a gzipped FileDescriptorProto
|
||||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x2f, 0x2a, 0x48,
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4d, 0x2f, 0x2a, 0x48,
|
||||||
0x8e, 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f,
|
0x8e, 0x4f, 0xce, 0xcf, 0x2b, 0x29, 0xca, 0xcf, 0xc9, 0x49, 0x2d, 0xd2, 0x2b, 0x28, 0xca, 0x2f,
|
||||||
0xc9, 0x17, 0x62, 0x05, 0x53, 0x4a, 0xec, 0x5c, 0xac, 0xae, 0xb9, 0x05, 0x25, 0x95, 0x46, 0x16,
|
0xc9, 0x17, 0x62, 0x2b, 0xc8, 0x29, 0x4d, 0xcf, 0xcc, 0x53, 0x62, 0xe7, 0x62, 0x75, 0xcd, 0x2d,
|
||||||
0x5c, 0x7c, 0xee, 0x41, 0x01, 0xce, 0xce, 0x70, 0x75, 0x42, 0x6a, 0x5c, 0x1c, 0xc1, 0x19, 0xa5,
|
0x28, 0xa9, 0x34, 0xb2, 0xe2, 0xe2, 0x73, 0x0f, 0x0a, 0x70, 0x76, 0x86, 0x2b, 0x14, 0xd2, 0xe0,
|
||||||
0x25, 0x29, 0xf9, 0xe5, 0x79, 0x42, 0x3c, 0x10, 0x5d, 0x7a, 0x60, 0xb5, 0x52, 0x28, 0xbc, 0x24,
|
0xe2, 0x08, 0xce, 0x28, 0x2d, 0x49, 0xc9, 0x2f, 0xcf, 0x13, 0xe2, 0xd5, 0x83, 0xa8, 0xd7, 0x03,
|
||||||
0x36, 0x30, 0xc7, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x69, 0xa1, 0xad, 0x79, 0x69, 0x00, 0x00,
|
0x2b, 0x96, 0x42, 0xe5, 0x3a, 0x71, 0x44, 0x41, 0x8d, 0x4b, 0x62, 0x03, 0x9b, 0x6e, 0x0c, 0x08,
|
||||||
0x00,
|
0x00, 0x00, 0xff, 0xff, 0xab, 0x7c, 0x27, 0xe5, 0x76, 0x00, 0x00, 0x00,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reference imports to suppress errors if they are not otherwise used.
|
// Reference imports to suppress errors if they are not otherwise used.
|
||||||
|
@ -95,7 +95,7 @@ func NewGRPCControllerClient(cc *grpc.ClientConn) GRPCControllerClient {
|
||||||
|
|
||||||
func (c *gRPCControllerClient) Shutdown(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
|
func (c *gRPCControllerClient) Shutdown(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) {
|
||||||
out := new(Empty)
|
out := new(Empty)
|
||||||
err := c.cc.Invoke(ctx, "/proto.GRPCController/Shutdown", in, out, opts...)
|
err := c.cc.Invoke(ctx, "/plugin.GRPCController/Shutdown", in, out, opts...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ func _GRPCController_Shutdown_Handler(srv interface{}, ctx context.Context, dec
|
||||||
}
|
}
|
||||||
info := &grpc.UnaryServerInfo{
|
info := &grpc.UnaryServerInfo{
|
||||||
Server: srv,
|
Server: srv,
|
||||||
FullMethod: "/proto.GRPCController/Shutdown",
|
FullMethod: "/plugin.GRPCController/Shutdown",
|
||||||
}
|
}
|
||||||
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
|
||||||
return srv.(GRPCControllerServer).Shutdown(ctx, req.(*Empty))
|
return srv.(GRPCControllerServer).Shutdown(ctx, req.(*Empty))
|
||||||
|
@ -130,7 +130,7 @@ func _GRPCController_Shutdown_Handler(srv interface{}, ctx context.Context, dec
|
||||||
}
|
}
|
||||||
|
|
||||||
var _GRPCController_serviceDesc = grpc.ServiceDesc{
|
var _GRPCController_serviceDesc = grpc.ServiceDesc{
|
||||||
ServiceName: "proto.GRPCController",
|
ServiceName: "plugin.GRPCController",
|
||||||
HandlerType: (*GRPCControllerServer)(nil),
|
HandlerType: (*GRPCControllerServer)(nil),
|
||||||
Methods: []grpc.MethodDesc{
|
Methods: []grpc.MethodDesc{
|
||||||
{
|
{
|
|
@ -1,5 +1,6 @@
|
||||||
syntax = "proto3";
|
syntax = "proto3";
|
||||||
package proto;
|
package plugin;
|
||||||
|
option go_package = "plugin";
|
||||||
|
|
||||||
message Empty {
|
message Empty {
|
||||||
}
|
}
|
4
vendor/github.com/hashicorp/go-plugin/log_entry.go
generated
vendored
4
vendor/github.com/hashicorp/go-plugin/log_entry.go
generated
vendored
|
@ -32,11 +32,11 @@ func flattenKVPairs(kvs []*logEntryKV) []interface{} {
|
||||||
}
|
}
|
||||||
|
|
||||||
// parseJSON handles parsing JSON output
|
// parseJSON handles parsing JSON output
|
||||||
func parseJSON(input string) (*logEntry, error) {
|
func parseJSON(input []byte) (*logEntry, error) {
|
||||||
var raw map[string]interface{}
|
var raw map[string]interface{}
|
||||||
entry := &logEntry{}
|
entry := &logEntry{}
|
||||||
|
|
||||||
err := json.Unmarshal([]byte(input), &raw)
|
err := json.Unmarshal(input, &raw)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
6
vendor/github.com/hashicorp/go-plugin/testing.go
generated
vendored
6
vendor/github.com/hashicorp/go-plugin/testing.go
generated
vendored
|
@ -7,9 +7,9 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"net/rpc"
|
"net/rpc"
|
||||||
|
|
||||||
hclog "github.com/hashicorp/go-hclog"
|
|
||||||
"github.com/hashicorp/go-plugin/internal/proto"
|
|
||||||
"github.com/mitchellh/go-testing-interface"
|
"github.com/mitchellh/go-testing-interface"
|
||||||
|
hclog "github.com/hashicorp/go-hclog"
|
||||||
|
"github.com/hashicorp/go-plugin/internal/plugin"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -173,7 +173,7 @@ func TestPluginGRPCConn(t testing.T, ps map[string]Plugin) (*GRPCClient, *GRPCSe
|
||||||
Plugins: ps,
|
Plugins: ps,
|
||||||
broker: broker,
|
broker: broker,
|
||||||
doneCtx: context.Background(),
|
doneCtx: context.Background(),
|
||||||
controller: proto.NewGRPCControllerClient(conn),
|
controller: plugin.NewGRPCControllerClient(conn),
|
||||||
}
|
}
|
||||||
|
|
||||||
return client, server
|
return client, server
|
||||||
|
|
24
vendor/github.com/hashicorp/go-uuid/uuid.go
generated
vendored
24
vendor/github.com/hashicorp/go-uuid/uuid.go
generated
vendored
|
@ -15,9 +15,11 @@ func GenerateRandomBytes(size int) ([]byte, error) {
|
||||||
return buf, nil
|
return buf, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uuidLen = 16
|
||||||
|
|
||||||
// GenerateUUID is used to generate a random UUID
|
// GenerateUUID is used to generate a random UUID
|
||||||
func GenerateUUID() (string, error) {
|
func GenerateUUID() (string, error) {
|
||||||
buf, err := GenerateRandomBytes(16)
|
buf, err := GenerateRandomBytes(uuidLen)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
|
@ -25,11 +27,11 @@ func GenerateUUID() (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func FormatUUID(buf []byte) (string, error) {
|
func FormatUUID(buf []byte) (string, error) {
|
||||||
if len(buf) != 16 {
|
if buflen := len(buf); buflen != uuidLen {
|
||||||
return "", fmt.Errorf("wrong length byte slice (%d)", len(buf))
|
return "", fmt.Errorf("wrong length byte slice (%d)", buflen)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("%08x-%04x-%04x-%04x-%12x",
|
return fmt.Sprintf("%x-%x-%x-%x-%x",
|
||||||
buf[0:4],
|
buf[0:4],
|
||||||
buf[4:6],
|
buf[4:6],
|
||||||
buf[6:8],
|
buf[6:8],
|
||||||
|
@ -38,16 +40,14 @@ func FormatUUID(buf []byte) (string, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func ParseUUID(uuid string) ([]byte, error) {
|
func ParseUUID(uuid string) ([]byte, error) {
|
||||||
if len(uuid) != 36 {
|
if len(uuid) != 2 * uuidLen + 4 {
|
||||||
return nil, fmt.Errorf("uuid string is wrong length")
|
return nil, fmt.Errorf("uuid string is wrong length")
|
||||||
}
|
}
|
||||||
|
|
||||||
hyph := []byte("-")
|
if uuid[8] != '-' ||
|
||||||
|
uuid[13] != '-' ||
|
||||||
if uuid[8] != hyph[0] ||
|
uuid[18] != '-' ||
|
||||||
uuid[13] != hyph[0] ||
|
uuid[23] != '-' {
|
||||||
uuid[18] != hyph[0] ||
|
|
||||||
uuid[23] != hyph[0] {
|
|
||||||
return nil, fmt.Errorf("uuid is improperly formatted")
|
return nil, fmt.Errorf("uuid is improperly formatted")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ func ParseUUID(uuid string) ([]byte, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if len(ret) != 16 {
|
if len(ret) != uuidLen {
|
||||||
return nil, fmt.Errorf("decoded hex is the wrong length")
|
return nil, fmt.Errorf("decoded hex is the wrong length")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
184
vendor/github.com/hashicorp/hcl2/ext/dynblock/README.md
generated
vendored
Normal file
184
vendor/github.com/hashicorp/hcl2/ext/dynblock/README.md
generated
vendored
Normal file
|
@ -0,0 +1,184 @@
|
||||||
|
# HCL Dynamic Blocks Extension
|
||||||
|
|
||||||
|
This HCL extension implements a special block type named "dynamic" that can
|
||||||
|
be used to dynamically generate blocks of other types by iterating over
|
||||||
|
collection values.
|
||||||
|
|
||||||
|
Normally the block structure in an HCL configuration file is rigid, even
|
||||||
|
though dynamic expressions can be used within attribute values. This is
|
||||||
|
convenient for most applications since it allows the overall structure of
|
||||||
|
the document to be decoded easily, but in some applications it is desirable
|
||||||
|
to allow dynamic block generation within certain portions of the configuration.
|
||||||
|
|
||||||
|
Dynamic block generation is performed using the `dynamic` block type:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
toplevel {
|
||||||
|
nested {
|
||||||
|
foo = "static block 1"
|
||||||
|
}
|
||||||
|
|
||||||
|
dynamic "nested" {
|
||||||
|
for_each = ["a", "b", "c"]
|
||||||
|
iterator = nested
|
||||||
|
content {
|
||||||
|
foo = "dynamic block ${nested.value}"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
nested {
|
||||||
|
foo = "static block 2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The above is interpreted as if it were written as follows:
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
toplevel {
|
||||||
|
nested {
|
||||||
|
foo = "static block 1"
|
||||||
|
}
|
||||||
|
|
||||||
|
nested {
|
||||||
|
foo = "dynamic block a"
|
||||||
|
}
|
||||||
|
|
||||||
|
nested {
|
||||||
|
foo = "dynamic block b"
|
||||||
|
}
|
||||||
|
|
||||||
|
nested {
|
||||||
|
foo = "dynamic block c"
|
||||||
|
}
|
||||||
|
|
||||||
|
nested {
|
||||||
|
foo = "static block 2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Since HCL block syntax is not normally exposed to the possibility of unknown
|
||||||
|
values, this extension must make some compromises when asked to iterate over
|
||||||
|
an unknown collection. If the length of the collection cannot be statically
|
||||||
|
recognized (because it is an unknown value of list, map, or set type) then
|
||||||
|
the `dynamic` construct will generate a _single_ dynamic block whose iterator
|
||||||
|
key and value are both unknown values of the dynamic pseudo-type, thus causing
|
||||||
|
any attribute values derived from iteration to appear as unknown values. There
|
||||||
|
is no explicit representation of the fact that the length of the collection may
|
||||||
|
eventually be different than one.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Pass a body to function `Expand` to obtain a new body that will, on access
|
||||||
|
to its content, evaluate and expand any nested `dynamic` blocks.
|
||||||
|
Dynamic block processing is also automatically propagated into any nested
|
||||||
|
blocks that are returned, allowing users to nest dynamic blocks inside
|
||||||
|
one another and to nest dynamic blocks inside other static blocks.
|
||||||
|
|
||||||
|
HCL structural decoding does not normally have access to an `EvalContext`, so
|
||||||
|
any variables and functions that should be available to the `for_each`
|
||||||
|
and `labels` expressions must be passed in when calling `Expand`. Expressions
|
||||||
|
within the `content` block are evaluated separately and so can be passed a
|
||||||
|
separate `EvalContext` if desired, during normal attribute expression
|
||||||
|
evaluation.
|
||||||
|
|
||||||
|
## Detecting Variables
|
||||||
|
|
||||||
|
Some applications dynamically generate an `EvalContext` by analyzing which
|
||||||
|
variables are referenced by an expression before evaluating it.
|
||||||
|
|
||||||
|
This unfortunately requires some extra effort when this analysis is required
|
||||||
|
for the context passed to `Expand`: the HCL API requires a schema to be
|
||||||
|
provided in order to do any analysis of the blocks in a body, but the low-level
|
||||||
|
schema model provides a description of only one level of nested blocks at
|
||||||
|
a time, and thus a new schema must be provided for each additional level of
|
||||||
|
nesting.
|
||||||
|
|
||||||
|
To make this arduous process as convenient as possbile, this package provides
|
||||||
|
a helper function `WalkForEachVariables`, which returns a `WalkVariablesNode`
|
||||||
|
instance that can be used to find variables directly in a given body and also
|
||||||
|
determine which nested blocks require recursive calls. Using this mechanism
|
||||||
|
requires that the caller be able to look up a schema given a nested block type.
|
||||||
|
For _simple_ formats where a specific block type name always has the same schema
|
||||||
|
regardless of context, a walk can be implemented as follows:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func walkVariables(node dynblock.WalkVariablesNode, schema *hcl.BodySchema) []hcl.Traversal {
|
||||||
|
vars, children := node.Visit(schema)
|
||||||
|
|
||||||
|
for _, child := range children {
|
||||||
|
var childSchema *hcl.BodySchema
|
||||||
|
switch child.BlockTypeName {
|
||||||
|
case "a":
|
||||||
|
childSchema = &hcl.BodySchema{
|
||||||
|
Blocks: []hcl.BlockHeaderSchema{
|
||||||
|
{
|
||||||
|
Type: "b",
|
||||||
|
LabelNames: []string{"key"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
case "b":
|
||||||
|
childSchema = &hcl.BodySchema{
|
||||||
|
Attributes: []hcl.AttributeSchema{
|
||||||
|
{
|
||||||
|
Name: "val",
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
// Should never happen, because the above cases should be exhaustive
|
||||||
|
// for the application's configuration format.
|
||||||
|
panic(fmt.Errorf("can't find schema for unknown block type %q", child.BlockTypeName))
|
||||||
|
}
|
||||||
|
|
||||||
|
vars = append(vars, testWalkAndAccumVars(child.Node, childSchema)...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Detecting Variables with `hcldec` Specifications
|
||||||
|
|
||||||
|
For applications that use the higher-level `hcldec` package to decode nested
|
||||||
|
configuration structures into `cty` values, the same specification can be used
|
||||||
|
to automatically drive the recursive variable-detection walk described above.
|
||||||
|
|
||||||
|
The helper function `ForEachVariablesHCLDec` allows an entire recursive
|
||||||
|
configuration structure to be analyzed in a single call given a `hcldec.Spec`
|
||||||
|
that describes the nested block structure. This means a `hcldec`-based
|
||||||
|
application can support dynamic blocks with only a little additional effort:
|
||||||
|
|
||||||
|
```go
|
||||||
|
func decodeBody(body hcl.Body, spec hcldec.Spec) (cty.Value, hcl.Diagnostics) {
|
||||||
|
// Determine which variables are needed to expand dynamic blocks
|
||||||
|
neededForDynamic := dynblock.ForEachVariablesHCLDec(body, spec)
|
||||||
|
|
||||||
|
// Build a suitable EvalContext and expand dynamic blocks
|
||||||
|
dynCtx := buildEvalContext(neededForDynamic)
|
||||||
|
dynBody := dynblock.Expand(body, dynCtx)
|
||||||
|
|
||||||
|
// Determine which variables are needed to fully decode the expanded body
|
||||||
|
// This will analyze expressions that came both from static blocks in the
|
||||||
|
// original body and from blocks that were dynamically added by Expand.
|
||||||
|
neededForDecode := hcldec.Variables(dynBody, spec)
|
||||||
|
|
||||||
|
// Build a suitable EvalContext and then fully decode the body as per the
|
||||||
|
// hcldec specification.
|
||||||
|
decCtx := buildEvalContext(neededForDecode)
|
||||||
|
return hcldec.Decode(dynBody, spec, decCtx)
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildEvalContext(needed []hcl.Traversal) *hcl.EvalContext {
|
||||||
|
// (to be implemented by your application)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
# Performance
|
||||||
|
|
||||||
|
This extension is going quite harshly against the grain of the HCL API, and
|
||||||
|
so it uses lots of wrapping objects and temporary data structures to get its
|
||||||
|
work done. HCL in general is not suitable for use in high-performance situations
|
||||||
|
or situations sensitive to memory pressure, but that is _especially_ true for
|
||||||
|
this extension.
|
252
vendor/github.com/hashicorp/hcl2/ext/dynblock/expand_body.go
generated
vendored
Normal file
252
vendor/github.com/hashicorp/hcl2/ext/dynblock/expand_body.go
generated
vendored
Normal file
|
@ -0,0 +1,252 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// expandBody wraps another hcl.Body and expands any "dynamic" blocks found
|
||||||
|
// inside whenever Content or PartialContent is called.
|
||||||
|
type expandBody struct {
|
||||||
|
original hcl.Body
|
||||||
|
forEachCtx *hcl.EvalContext
|
||||||
|
iteration *iteration // non-nil if we're nested inside another "dynamic" block
|
||||||
|
|
||||||
|
// These are used with PartialContent to produce a "remaining items"
|
||||||
|
// body to return. They are nil on all bodies fresh out of the transformer.
|
||||||
|
//
|
||||||
|
// Note that this is re-implemented here rather than delegating to the
|
||||||
|
// existing support required by the underlying body because we need to
|
||||||
|
// retain access to the entire original body on subsequent decode operations
|
||||||
|
// so we can retain any "dynamic" blocks for types we didn't take consume
|
||||||
|
// on the first pass.
|
||||||
|
hiddenAttrs map[string]struct{}
|
||||||
|
hiddenBlocks map[string]hcl.BlockHeaderSchema
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) Content(schema *hcl.BodySchema) (*hcl.BodyContent, hcl.Diagnostics) {
|
||||||
|
extSchema := b.extendSchema(schema)
|
||||||
|
rawContent, diags := b.original.Content(extSchema)
|
||||||
|
|
||||||
|
blocks, blockDiags := b.expandBlocks(schema, rawContent.Blocks, false)
|
||||||
|
diags = append(diags, blockDiags...)
|
||||||
|
attrs := b.prepareAttributes(rawContent.Attributes)
|
||||||
|
|
||||||
|
content := &hcl.BodyContent{
|
||||||
|
Attributes: attrs,
|
||||||
|
Blocks: blocks,
|
||||||
|
MissingItemRange: b.original.MissingItemRange(),
|
||||||
|
}
|
||||||
|
|
||||||
|
return content, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) PartialContent(schema *hcl.BodySchema) (*hcl.BodyContent, hcl.Body, hcl.Diagnostics) {
|
||||||
|
extSchema := b.extendSchema(schema)
|
||||||
|
rawContent, _, diags := b.original.PartialContent(extSchema)
|
||||||
|
// We discard the "remain" argument above because we're going to construct
|
||||||
|
// our own remain that also takes into account remaining "dynamic" blocks.
|
||||||
|
|
||||||
|
blocks, blockDiags := b.expandBlocks(schema, rawContent.Blocks, true)
|
||||||
|
diags = append(diags, blockDiags...)
|
||||||
|
attrs := b.prepareAttributes(rawContent.Attributes)
|
||||||
|
|
||||||
|
content := &hcl.BodyContent{
|
||||||
|
Attributes: attrs,
|
||||||
|
Blocks: blocks,
|
||||||
|
MissingItemRange: b.original.MissingItemRange(),
|
||||||
|
}
|
||||||
|
|
||||||
|
remain := &expandBody{
|
||||||
|
original: b.original,
|
||||||
|
forEachCtx: b.forEachCtx,
|
||||||
|
iteration: b.iteration,
|
||||||
|
hiddenAttrs: make(map[string]struct{}),
|
||||||
|
hiddenBlocks: make(map[string]hcl.BlockHeaderSchema),
|
||||||
|
}
|
||||||
|
for name := range b.hiddenAttrs {
|
||||||
|
remain.hiddenAttrs[name] = struct{}{}
|
||||||
|
}
|
||||||
|
for typeName, blockS := range b.hiddenBlocks {
|
||||||
|
remain.hiddenBlocks[typeName] = blockS
|
||||||
|
}
|
||||||
|
for _, attrS := range schema.Attributes {
|
||||||
|
remain.hiddenAttrs[attrS.Name] = struct{}{}
|
||||||
|
}
|
||||||
|
for _, blockS := range schema.Blocks {
|
||||||
|
remain.hiddenBlocks[blockS.Type] = blockS
|
||||||
|
}
|
||||||
|
|
||||||
|
return content, remain, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) extendSchema(schema *hcl.BodySchema) *hcl.BodySchema {
|
||||||
|
// We augment the requested schema to also include our special "dynamic"
|
||||||
|
// block type, since then we'll get instances of it interleaved with
|
||||||
|
// all of the literal child blocks we must also include.
|
||||||
|
extSchema := &hcl.BodySchema{
|
||||||
|
Attributes: schema.Attributes,
|
||||||
|
Blocks: make([]hcl.BlockHeaderSchema, len(schema.Blocks), len(schema.Blocks)+len(b.hiddenBlocks)+1),
|
||||||
|
}
|
||||||
|
copy(extSchema.Blocks, schema.Blocks)
|
||||||
|
extSchema.Blocks = append(extSchema.Blocks, dynamicBlockHeaderSchema)
|
||||||
|
|
||||||
|
// If we have any hiddenBlocks then we also need to register those here
|
||||||
|
// so that a call to "Content" on the underlying body won't fail.
|
||||||
|
// (We'll filter these out again once we process the result of either
|
||||||
|
// Content or PartialContent.)
|
||||||
|
for _, blockS := range b.hiddenBlocks {
|
||||||
|
extSchema.Blocks = append(extSchema.Blocks, blockS)
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we have any hiddenAttrs then we also need to register these, for
|
||||||
|
// the same reason as we deal with hiddenBlocks above.
|
||||||
|
if len(b.hiddenAttrs) != 0 {
|
||||||
|
newAttrs := make([]hcl.AttributeSchema, len(schema.Attributes), len(schema.Attributes)+len(b.hiddenAttrs))
|
||||||
|
copy(newAttrs, extSchema.Attributes)
|
||||||
|
for name := range b.hiddenAttrs {
|
||||||
|
newAttrs = append(newAttrs, hcl.AttributeSchema{
|
||||||
|
Name: name,
|
||||||
|
Required: false,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
extSchema.Attributes = newAttrs
|
||||||
|
}
|
||||||
|
|
||||||
|
return extSchema
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) prepareAttributes(rawAttrs hcl.Attributes) hcl.Attributes {
|
||||||
|
if len(b.hiddenAttrs) == 0 && b.iteration == nil {
|
||||||
|
// Easy path: just pass through the attrs from the original body verbatim
|
||||||
|
return rawAttrs
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise we have some work to do: we must filter out any attributes
|
||||||
|
// that are hidden (since a previous PartialContent call already saw these)
|
||||||
|
// and wrap the expressions of the inner attributes so that they will
|
||||||
|
// have access to our iteration variables.
|
||||||
|
attrs := make(hcl.Attributes, len(rawAttrs))
|
||||||
|
for name, rawAttr := range rawAttrs {
|
||||||
|
if _, hidden := b.hiddenAttrs[name]; hidden {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if b.iteration != nil {
|
||||||
|
attr := *rawAttr // shallow copy so we can mutate it
|
||||||
|
attr.Expr = exprWrap{
|
||||||
|
Expression: attr.Expr,
|
||||||
|
i: b.iteration,
|
||||||
|
}
|
||||||
|
attrs[name] = &attr
|
||||||
|
} else {
|
||||||
|
// If we have no active iteration then no wrapping is required.
|
||||||
|
attrs[name] = rawAttr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return attrs
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) expandBlocks(schema *hcl.BodySchema, rawBlocks hcl.Blocks, partial bool) (hcl.Blocks, hcl.Diagnostics) {
|
||||||
|
var blocks hcl.Blocks
|
||||||
|
var diags hcl.Diagnostics
|
||||||
|
|
||||||
|
for _, rawBlock := range rawBlocks {
|
||||||
|
switch rawBlock.Type {
|
||||||
|
case "dynamic":
|
||||||
|
realBlockType := rawBlock.Labels[0]
|
||||||
|
if _, hidden := b.hiddenBlocks[realBlockType]; hidden {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var blockS *hcl.BlockHeaderSchema
|
||||||
|
for _, candidate := range schema.Blocks {
|
||||||
|
if candidate.Type == realBlockType {
|
||||||
|
blockS = &candidate
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if blockS == nil {
|
||||||
|
// Not a block type that the caller requested.
|
||||||
|
if !partial {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Unsupported block type",
|
||||||
|
Detail: fmt.Sprintf("Blocks of type %q are not expected here.", realBlockType),
|
||||||
|
Subject: &rawBlock.LabelRanges[0],
|
||||||
|
})
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
spec, specDiags := b.decodeSpec(blockS, rawBlock)
|
||||||
|
diags = append(diags, specDiags...)
|
||||||
|
if specDiags.HasErrors() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if spec.forEachVal.IsKnown() {
|
||||||
|
for it := spec.forEachVal.ElementIterator(); it.Next(); {
|
||||||
|
key, value := it.Element()
|
||||||
|
i := b.iteration.MakeChild(spec.iteratorName, key, value)
|
||||||
|
|
||||||
|
block, blockDiags := spec.newBlock(i, b.forEachCtx)
|
||||||
|
diags = append(diags, blockDiags...)
|
||||||
|
if block != nil {
|
||||||
|
// Attach our new iteration context so that attributes
|
||||||
|
// and other nested blocks can refer to our iterator.
|
||||||
|
block.Body = b.expandChild(block.Body, i)
|
||||||
|
blocks = append(blocks, block)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// If our top-level iteration value isn't known then we're forced
|
||||||
|
// to compromise since HCL doesn't have any concept of an
|
||||||
|
// "unknown block". In this case then, we'll produce a single
|
||||||
|
// dynamic block with the iterator values set to DynamicVal,
|
||||||
|
// which at least makes the potential for a block visible
|
||||||
|
// in our result, even though it's not represented in a fully-accurate
|
||||||
|
// way.
|
||||||
|
i := b.iteration.MakeChild(spec.iteratorName, cty.DynamicVal, cty.DynamicVal)
|
||||||
|
block, blockDiags := spec.newBlock(i, b.forEachCtx)
|
||||||
|
diags = append(diags, blockDiags...)
|
||||||
|
if block != nil {
|
||||||
|
block.Body = b.expandChild(block.Body, i)
|
||||||
|
blocks = append(blocks, block)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
if _, hidden := b.hiddenBlocks[rawBlock.Type]; !hidden {
|
||||||
|
// A static block doesn't create a new iteration context, but
|
||||||
|
// it does need to inherit _our own_ iteration context in
|
||||||
|
// case it contains expressions that refer to our inherited
|
||||||
|
// iterators, or nested "dynamic" blocks.
|
||||||
|
expandedBlock := *rawBlock // shallow copy
|
||||||
|
expandedBlock.Body = b.expandChild(rawBlock.Body, b.iteration)
|
||||||
|
blocks = append(blocks, &expandedBlock)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return blocks, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) expandChild(child hcl.Body, i *iteration) hcl.Body {
|
||||||
|
chiCtx := i.EvalContext(b.forEachCtx)
|
||||||
|
ret := Expand(child, chiCtx)
|
||||||
|
ret.(*expandBody).iteration = i
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) JustAttributes() (hcl.Attributes, hcl.Diagnostics) {
|
||||||
|
// blocks aren't allowed in JustAttributes mode and this body can
|
||||||
|
// only produce blocks, so we'll just pass straight through to our
|
||||||
|
// underlying body here.
|
||||||
|
return b.original.JustAttributes()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) MissingItemRange() hcl.Range {
|
||||||
|
return b.original.MissingItemRange()
|
||||||
|
}
|
215
vendor/github.com/hashicorp/hcl2/ext/dynblock/expand_spec.go
generated
vendored
Normal file
215
vendor/github.com/hashicorp/hcl2/ext/dynblock/expand_spec.go
generated
vendored
Normal file
|
@ -0,0 +1,215 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
"github.com/zclconf/go-cty/cty/convert"
|
||||||
|
)
|
||||||
|
|
||||||
|
type expandSpec struct {
|
||||||
|
blockType string
|
||||||
|
blockTypeRange hcl.Range
|
||||||
|
defRange hcl.Range
|
||||||
|
forEachVal cty.Value
|
||||||
|
iteratorName string
|
||||||
|
labelExprs []hcl.Expression
|
||||||
|
contentBody hcl.Body
|
||||||
|
inherited map[string]*iteration
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *expandBody) decodeSpec(blockS *hcl.BlockHeaderSchema, rawSpec *hcl.Block) (*expandSpec, hcl.Diagnostics) {
|
||||||
|
var diags hcl.Diagnostics
|
||||||
|
|
||||||
|
var schema *hcl.BodySchema
|
||||||
|
if len(blockS.LabelNames) != 0 {
|
||||||
|
schema = dynamicBlockBodySchemaLabels
|
||||||
|
} else {
|
||||||
|
schema = dynamicBlockBodySchemaNoLabels
|
||||||
|
}
|
||||||
|
|
||||||
|
specContent, specDiags := rawSpec.Body.Content(schema)
|
||||||
|
diags = append(diags, specDiags...)
|
||||||
|
if specDiags.HasErrors() {
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
//// for_each attribute
|
||||||
|
|
||||||
|
eachAttr := specContent.Attributes["for_each"]
|
||||||
|
eachVal, eachDiags := eachAttr.Expr.Value(b.forEachCtx)
|
||||||
|
diags = append(diags, eachDiags...)
|
||||||
|
|
||||||
|
if !eachVal.CanIterateElements() && eachVal.Type() != cty.DynamicPseudoType {
|
||||||
|
// We skip this error for DynamicPseudoType because that means we either
|
||||||
|
// have a null (which is checked immediately below) or an unknown
|
||||||
|
// (which is handled in the expandBody Content methods).
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic for_each value",
|
||||||
|
Detail: fmt.Sprintf("Cannot use a %s value in for_each. An iterable collection is required.", eachVal.Type().FriendlyName()),
|
||||||
|
Subject: eachAttr.Expr.Range().Ptr(),
|
||||||
|
Expression: eachAttr.Expr,
|
||||||
|
EvalContext: b.forEachCtx,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
if eachVal.IsNull() {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic for_each value",
|
||||||
|
Detail: "Cannot use a null value in for_each.",
|
||||||
|
Subject: eachAttr.Expr.Range().Ptr(),
|
||||||
|
Expression: eachAttr.Expr,
|
||||||
|
EvalContext: b.forEachCtx,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
//// iterator attribute
|
||||||
|
|
||||||
|
iteratorName := blockS.Type
|
||||||
|
if iteratorAttr := specContent.Attributes["iterator"]; iteratorAttr != nil {
|
||||||
|
itTraversal, itDiags := hcl.AbsTraversalForExpr(iteratorAttr.Expr)
|
||||||
|
diags = append(diags, itDiags...)
|
||||||
|
if itDiags.HasErrors() {
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(itTraversal) != 1 {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic iterator name",
|
||||||
|
Detail: "Dynamic iterator must be a single variable name.",
|
||||||
|
Subject: itTraversal.SourceRange().Ptr(),
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
iteratorName = itTraversal.RootName()
|
||||||
|
}
|
||||||
|
|
||||||
|
var labelExprs []hcl.Expression
|
||||||
|
if labelsAttr := specContent.Attributes["labels"]; labelsAttr != nil {
|
||||||
|
var labelDiags hcl.Diagnostics
|
||||||
|
labelExprs, labelDiags = hcl.ExprList(labelsAttr.Expr)
|
||||||
|
diags = append(diags, labelDiags...)
|
||||||
|
if labelDiags.HasErrors() {
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(labelExprs) > len(blockS.LabelNames) {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Extraneous dynamic block label",
|
||||||
|
Detail: fmt.Sprintf("Blocks of type %q require %d label(s).", blockS.Type, len(blockS.LabelNames)),
|
||||||
|
Subject: labelExprs[len(blockS.LabelNames)].Range().Ptr(),
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
} else if len(labelExprs) < len(blockS.LabelNames) {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Insufficient dynamic block labels",
|
||||||
|
Detail: fmt.Sprintf("Blocks of type %q require %d label(s).", blockS.Type, len(blockS.LabelNames)),
|
||||||
|
Subject: labelsAttr.Expr.Range().Ptr(),
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Since our schema requests only blocks of type "content", we can assume
|
||||||
|
// that all entries in specContent.Blocks are content blocks.
|
||||||
|
if len(specContent.Blocks) == 0 {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Missing dynamic content block",
|
||||||
|
Detail: "A dynamic block must have a nested block of type \"content\" to describe the body of each generated block.",
|
||||||
|
Subject: &specContent.MissingItemRange,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
if len(specContent.Blocks) > 1 {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Extraneous dynamic content block",
|
||||||
|
Detail: "Only one nested content block is allowed for each dynamic block.",
|
||||||
|
Subject: &specContent.Blocks[1].DefRange,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
return &expandSpec{
|
||||||
|
blockType: blockS.Type,
|
||||||
|
blockTypeRange: rawSpec.LabelRanges[0],
|
||||||
|
defRange: rawSpec.DefRange,
|
||||||
|
forEachVal: eachVal,
|
||||||
|
iteratorName: iteratorName,
|
||||||
|
labelExprs: labelExprs,
|
||||||
|
contentBody: specContent.Blocks[0].Body,
|
||||||
|
}, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *expandSpec) newBlock(i *iteration, ctx *hcl.EvalContext) (*hcl.Block, hcl.Diagnostics) {
|
||||||
|
var diags hcl.Diagnostics
|
||||||
|
var labels []string
|
||||||
|
var labelRanges []hcl.Range
|
||||||
|
lCtx := i.EvalContext(ctx)
|
||||||
|
for _, labelExpr := range s.labelExprs {
|
||||||
|
labelVal, labelDiags := labelExpr.Value(lCtx)
|
||||||
|
diags = append(diags, labelDiags...)
|
||||||
|
if labelDiags.HasErrors() {
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
var convErr error
|
||||||
|
labelVal, convErr = convert.Convert(labelVal, cty.String)
|
||||||
|
if convErr != nil {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic block label",
|
||||||
|
Detail: fmt.Sprintf("Cannot use this value as a dynamic block label: %s.", convErr),
|
||||||
|
Subject: labelExpr.Range().Ptr(),
|
||||||
|
Expression: labelExpr,
|
||||||
|
EvalContext: lCtx,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
if labelVal.IsNull() {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic block label",
|
||||||
|
Detail: "Cannot use a null value as a dynamic block label.",
|
||||||
|
Subject: labelExpr.Range().Ptr(),
|
||||||
|
Expression: labelExpr,
|
||||||
|
EvalContext: lCtx,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
if !labelVal.IsKnown() {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Invalid dynamic block label",
|
||||||
|
Detail: "This value is not yet known. Dynamic block labels must be immediately-known values.",
|
||||||
|
Subject: labelExpr.Range().Ptr(),
|
||||||
|
Expression: labelExpr,
|
||||||
|
EvalContext: lCtx,
|
||||||
|
})
|
||||||
|
return nil, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
labels = append(labels, labelVal.AsString())
|
||||||
|
labelRanges = append(labelRanges, labelExpr.Range())
|
||||||
|
}
|
||||||
|
|
||||||
|
block := &hcl.Block{
|
||||||
|
Type: s.blockType,
|
||||||
|
TypeRange: s.blockTypeRange,
|
||||||
|
Labels: labels,
|
||||||
|
LabelRanges: labelRanges,
|
||||||
|
DefRange: s.defRange,
|
||||||
|
Body: s.contentBody,
|
||||||
|
}
|
||||||
|
|
||||||
|
return block, diags
|
||||||
|
}
|
42
vendor/github.com/hashicorp/hcl2/ext/dynblock/expr_wrap.go
generated
vendored
Normal file
42
vendor/github.com/hashicorp/hcl2/ext/dynblock/expr_wrap.go
generated
vendored
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
type exprWrap struct {
|
||||||
|
hcl.Expression
|
||||||
|
i *iteration
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e exprWrap) Variables() []hcl.Traversal {
|
||||||
|
raw := e.Expression.Variables()
|
||||||
|
ret := make([]hcl.Traversal, 0, len(raw))
|
||||||
|
|
||||||
|
// Filter out traversals that refer to our iterator name or any
|
||||||
|
// iterator we've inherited; we're going to provide those in
|
||||||
|
// our Value wrapper, so the caller doesn't need to know about them.
|
||||||
|
for _, traversal := range raw {
|
||||||
|
rootName := traversal.RootName()
|
||||||
|
if rootName == e.i.IteratorName {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if _, inherited := e.i.Inherited[rootName]; inherited {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
ret = append(ret, traversal)
|
||||||
|
}
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e exprWrap) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||||
|
extCtx := e.i.EvalContext(ctx)
|
||||||
|
return e.Expression.Value(extCtx)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnwrapExpression returns the expression being wrapped by this instance.
|
||||||
|
// This allows the original expression to be recovered by hcl.UnwrapExpression.
|
||||||
|
func (e exprWrap) UnwrapExpression() hcl.Expression {
|
||||||
|
return e.Expression
|
||||||
|
}
|
66
vendor/github.com/hashicorp/hcl2/ext/dynblock/iteration.go
generated
vendored
Normal file
66
vendor/github.com/hashicorp/hcl2/ext/dynblock/iteration.go
generated
vendored
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
type iteration struct {
|
||||||
|
IteratorName string
|
||||||
|
Key cty.Value
|
||||||
|
Value cty.Value
|
||||||
|
Inherited map[string]*iteration
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *expandSpec) MakeIteration(key, value cty.Value) *iteration {
|
||||||
|
return &iteration{
|
||||||
|
IteratorName: s.iteratorName,
|
||||||
|
Key: key,
|
||||||
|
Value: value,
|
||||||
|
Inherited: s.inherited,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *iteration) Object() cty.Value {
|
||||||
|
return cty.ObjectVal(map[string]cty.Value{
|
||||||
|
"key": i.Key,
|
||||||
|
"value": i.Value,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *iteration) EvalContext(base *hcl.EvalContext) *hcl.EvalContext {
|
||||||
|
new := base.NewChild()
|
||||||
|
|
||||||
|
if i != nil {
|
||||||
|
new.Variables = map[string]cty.Value{}
|
||||||
|
for name, otherIt := range i.Inherited {
|
||||||
|
new.Variables[name] = otherIt.Object()
|
||||||
|
}
|
||||||
|
new.Variables[i.IteratorName] = i.Object()
|
||||||
|
}
|
||||||
|
|
||||||
|
return new
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *iteration) MakeChild(iteratorName string, key, value cty.Value) *iteration {
|
||||||
|
if i == nil {
|
||||||
|
// Create entirely new root iteration, then
|
||||||
|
return &iteration{
|
||||||
|
IteratorName: iteratorName,
|
||||||
|
Key: key,
|
||||||
|
Value: value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
inherited := map[string]*iteration{}
|
||||||
|
for name, otherIt := range i.Inherited {
|
||||||
|
inherited[name] = otherIt
|
||||||
|
}
|
||||||
|
inherited[i.IteratorName] = i
|
||||||
|
return &iteration{
|
||||||
|
IteratorName: iteratorName,
|
||||||
|
Key: key,
|
||||||
|
Value: value,
|
||||||
|
Inherited: inherited,
|
||||||
|
}
|
||||||
|
}
|
44
vendor/github.com/hashicorp/hcl2/ext/dynblock/public.go
generated
vendored
Normal file
44
vendor/github.com/hashicorp/hcl2/ext/dynblock/public.go
generated
vendored
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Expand "dynamic" blocks in the given body, returning a new body that
|
||||||
|
// has those blocks expanded.
|
||||||
|
//
|
||||||
|
// The given EvalContext is used when evaluating "for_each" and "labels"
|
||||||
|
// attributes within dynamic blocks, allowing those expressions access to
|
||||||
|
// variables and functions beyond the iterator variable created by the
|
||||||
|
// iteration.
|
||||||
|
//
|
||||||
|
// Expand returns no diagnostics because no blocks are actually expanded
|
||||||
|
// until a call to Content or PartialContent on the returned body, which
|
||||||
|
// will then expand only the blocks selected by the schema.
|
||||||
|
//
|
||||||
|
// "dynamic" blocks are also expanded automatically within nested blocks
|
||||||
|
// in the given body, including within other dynamic blocks, thus allowing
|
||||||
|
// multi-dimensional iteration. However, it is not possible to
|
||||||
|
// dynamically-generate the "dynamic" blocks themselves except through nesting.
|
||||||
|
//
|
||||||
|
// parent {
|
||||||
|
// dynamic "child" {
|
||||||
|
// for_each = child_objs
|
||||||
|
// content {
|
||||||
|
// dynamic "grandchild" {
|
||||||
|
// for_each = child.value.children
|
||||||
|
// labels = [grandchild.key]
|
||||||
|
// content {
|
||||||
|
// parent_key = child.key
|
||||||
|
// value = grandchild.value
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
func Expand(body hcl.Body, ctx *hcl.EvalContext) hcl.Body {
|
||||||
|
return &expandBody{
|
||||||
|
original: body,
|
||||||
|
forEachCtx: ctx,
|
||||||
|
}
|
||||||
|
}
|
50
vendor/github.com/hashicorp/hcl2/ext/dynblock/schema.go
generated
vendored
Normal file
50
vendor/github.com/hashicorp/hcl2/ext/dynblock/schema.go
generated
vendored
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import "github.com/hashicorp/hcl2/hcl"
|
||||||
|
|
||||||
|
var dynamicBlockHeaderSchema = hcl.BlockHeaderSchema{
|
||||||
|
Type: "dynamic",
|
||||||
|
LabelNames: []string{"type"},
|
||||||
|
}
|
||||||
|
|
||||||
|
var dynamicBlockBodySchemaLabels = &hcl.BodySchema{
|
||||||
|
Attributes: []hcl.AttributeSchema{
|
||||||
|
{
|
||||||
|
Name: "for_each",
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "iterator",
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "labels",
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Blocks: []hcl.BlockHeaderSchema{
|
||||||
|
{
|
||||||
|
Type: "content",
|
||||||
|
LabelNames: nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
var dynamicBlockBodySchemaNoLabels = &hcl.BodySchema{
|
||||||
|
Attributes: []hcl.AttributeSchema{
|
||||||
|
{
|
||||||
|
Name: "for_each",
|
||||||
|
Required: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "iterator",
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Blocks: []hcl.BlockHeaderSchema{
|
||||||
|
{
|
||||||
|
Type: "content",
|
||||||
|
LabelNames: nil,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
209
vendor/github.com/hashicorp/hcl2/ext/dynblock/variables.go
generated
vendored
Normal file
209
vendor/github.com/hashicorp/hcl2/ext/dynblock/variables.go
generated
vendored
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// WalkVariables begins the recursive process of walking all expressions and
|
||||||
|
// nested blocks in the given body and its child bodies while taking into
|
||||||
|
// account any "dynamic" blocks.
|
||||||
|
//
|
||||||
|
// This function requires that the caller walk through the nested block
|
||||||
|
// structure in the given body level-by-level so that an appropriate schema
|
||||||
|
// can be provided at each level to inform further processing. This workflow
|
||||||
|
// is thus easiest to use for calling applications that have some higher-level
|
||||||
|
// schema representation available with which to drive this multi-step
|
||||||
|
// process. If your application uses the hcldec package, you may be able to
|
||||||
|
// use VariablesHCLDec instead for a more automatic approach.
|
||||||
|
func WalkVariables(body hcl.Body) WalkVariablesNode {
|
||||||
|
return WalkVariablesNode{
|
||||||
|
body: body,
|
||||||
|
includeContent: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WalkExpandVariables is like Variables but it includes only the variables
|
||||||
|
// required for successful block expansion, ignoring any variables referenced
|
||||||
|
// inside block contents. The result is the minimal set of all variables
|
||||||
|
// required for a call to Expand, excluding variables that would only be
|
||||||
|
// needed to subsequently call Content or PartialContent on the expanded
|
||||||
|
// body.
|
||||||
|
func WalkExpandVariables(body hcl.Body) WalkVariablesNode {
|
||||||
|
return WalkVariablesNode{
|
||||||
|
body: body,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type WalkVariablesNode struct {
|
||||||
|
body hcl.Body
|
||||||
|
it *iteration
|
||||||
|
|
||||||
|
includeContent bool
|
||||||
|
}
|
||||||
|
|
||||||
|
type WalkVariablesChild struct {
|
||||||
|
BlockTypeName string
|
||||||
|
Node WalkVariablesNode
|
||||||
|
}
|
||||||
|
|
||||||
|
// Body returns the HCL Body associated with the child node, in case the caller
|
||||||
|
// wants to do some sort of inspection of it in order to decide what schema
|
||||||
|
// to pass to Visit.
|
||||||
|
//
|
||||||
|
// Most implementations should just fetch a fixed schema based on the
|
||||||
|
// BlockTypeName field and not access this. Deciding on a schema dynamically
|
||||||
|
// based on the body is a strange thing to do and generally necessary only if
|
||||||
|
// your caller is already doing other bizarre things with HCL bodies.
|
||||||
|
func (c WalkVariablesChild) Body() hcl.Body {
|
||||||
|
return c.Node.body
|
||||||
|
}
|
||||||
|
|
||||||
|
// Visit returns the variable traversals required for any "dynamic" blocks
|
||||||
|
// directly in the body associated with this node, and also returns any child
|
||||||
|
// nodes that must be visited in order to continue the walk.
|
||||||
|
//
|
||||||
|
// Each child node has its associated block type name given in its BlockTypeName
|
||||||
|
// field, which the calling application should use to determine the appropriate
|
||||||
|
// schema for the content of each child node and pass it to the child node's
|
||||||
|
// own Visit method to continue the walk recursively.
|
||||||
|
func (n WalkVariablesNode) Visit(schema *hcl.BodySchema) (vars []hcl.Traversal, children []WalkVariablesChild) {
|
||||||
|
extSchema := n.extendSchema(schema)
|
||||||
|
container, _, _ := n.body.PartialContent(extSchema)
|
||||||
|
if container == nil {
|
||||||
|
return vars, children
|
||||||
|
}
|
||||||
|
|
||||||
|
children = make([]WalkVariablesChild, 0, len(container.Blocks))
|
||||||
|
|
||||||
|
if n.includeContent {
|
||||||
|
for _, attr := range container.Attributes {
|
||||||
|
for _, traversal := range attr.Expr.Variables() {
|
||||||
|
var ours, inherited bool
|
||||||
|
if n.it != nil {
|
||||||
|
ours = traversal.RootName() == n.it.IteratorName
|
||||||
|
_, inherited = n.it.Inherited[traversal.RootName()]
|
||||||
|
}
|
||||||
|
|
||||||
|
if !(ours || inherited) {
|
||||||
|
vars = append(vars, traversal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, block := range container.Blocks {
|
||||||
|
switch block.Type {
|
||||||
|
|
||||||
|
case "dynamic":
|
||||||
|
blockTypeName := block.Labels[0]
|
||||||
|
inner, _, _ := block.Body.PartialContent(variableDetectionInnerSchema)
|
||||||
|
if inner == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
iteratorName := blockTypeName
|
||||||
|
if attr, exists := inner.Attributes["iterator"]; exists {
|
||||||
|
iterTraversal, _ := hcl.AbsTraversalForExpr(attr.Expr)
|
||||||
|
if len(iterTraversal) == 0 {
|
||||||
|
// Ignore this invalid dynamic block, since it'll produce
|
||||||
|
// an error if someone tries to extract content from it
|
||||||
|
// later anyway.
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
iteratorName = iterTraversal.RootName()
|
||||||
|
}
|
||||||
|
blockIt := n.it.MakeChild(iteratorName, cty.DynamicVal, cty.DynamicVal)
|
||||||
|
|
||||||
|
if attr, exists := inner.Attributes["for_each"]; exists {
|
||||||
|
// Filter out iterator names inherited from parent blocks
|
||||||
|
for _, traversal := range attr.Expr.Variables() {
|
||||||
|
if _, inherited := blockIt.Inherited[traversal.RootName()]; !inherited {
|
||||||
|
vars = append(vars, traversal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if attr, exists := inner.Attributes["labels"]; exists {
|
||||||
|
// Filter out both our own iterator name _and_ those inherited
|
||||||
|
// from parent blocks, since we provide _both_ of these to the
|
||||||
|
// label expressions.
|
||||||
|
for _, traversal := range attr.Expr.Variables() {
|
||||||
|
ours := traversal.RootName() == iteratorName
|
||||||
|
_, inherited := blockIt.Inherited[traversal.RootName()]
|
||||||
|
|
||||||
|
if !(ours || inherited) {
|
||||||
|
vars = append(vars, traversal)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, contentBlock := range inner.Blocks {
|
||||||
|
// We only request "content" blocks in our schema, so we know
|
||||||
|
// any blocks we find here will be content blocks. We require
|
||||||
|
// exactly one content block for actual expansion, but we'll
|
||||||
|
// be more liberal here so that callers can still collect
|
||||||
|
// variables from erroneous "dynamic" blocks.
|
||||||
|
children = append(children, WalkVariablesChild{
|
||||||
|
BlockTypeName: blockTypeName,
|
||||||
|
Node: WalkVariablesNode{
|
||||||
|
body: contentBlock.Body,
|
||||||
|
it: blockIt,
|
||||||
|
includeContent: n.includeContent,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
children = append(children, WalkVariablesChild{
|
||||||
|
BlockTypeName: block.Type,
|
||||||
|
Node: WalkVariablesNode{
|
||||||
|
body: block.Body,
|
||||||
|
it: n.it,
|
||||||
|
includeContent: n.includeContent,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return vars, children
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n WalkVariablesNode) extendSchema(schema *hcl.BodySchema) *hcl.BodySchema {
|
||||||
|
// We augment the requested schema to also include our special "dynamic"
|
||||||
|
// block type, since then we'll get instances of it interleaved with
|
||||||
|
// all of the literal child blocks we must also include.
|
||||||
|
extSchema := &hcl.BodySchema{
|
||||||
|
Attributes: schema.Attributes,
|
||||||
|
Blocks: make([]hcl.BlockHeaderSchema, len(schema.Blocks), len(schema.Blocks)+1),
|
||||||
|
}
|
||||||
|
copy(extSchema.Blocks, schema.Blocks)
|
||||||
|
extSchema.Blocks = append(extSchema.Blocks, dynamicBlockHeaderSchema)
|
||||||
|
|
||||||
|
return extSchema
|
||||||
|
}
|
||||||
|
|
||||||
|
// This is a more relaxed schema than what's in schema.go, since we
|
||||||
|
// want to maximize the amount of variables we can find even if there
|
||||||
|
// are erroneous blocks.
|
||||||
|
var variableDetectionInnerSchema = &hcl.BodySchema{
|
||||||
|
Attributes: []hcl.AttributeSchema{
|
||||||
|
{
|
||||||
|
Name: "for_each",
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "labels",
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "iterator",
|
||||||
|
Required: false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
Blocks: []hcl.BlockHeaderSchema{
|
||||||
|
{
|
||||||
|
Type: "content",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
43
vendor/github.com/hashicorp/hcl2/ext/dynblock/variables_hcldec.go
generated
vendored
Normal file
43
vendor/github.com/hashicorp/hcl2/ext/dynblock/variables_hcldec.go
generated
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
package dynblock
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/hashicorp/hcl2/hcldec"
|
||||||
|
)
|
||||||
|
|
||||||
|
// VariablesHCLDec is a wrapper around WalkVariables that uses the given hcldec
|
||||||
|
// specification to automatically drive the recursive walk through nested
|
||||||
|
// blocks in the given body.
|
||||||
|
//
|
||||||
|
// This is a drop-in replacement for hcldec.Variables which is able to treat
|
||||||
|
// blocks of type "dynamic" in the same special way that dynblock.Expand would,
|
||||||
|
// exposing both the variables referenced in the "for_each" and "labels"
|
||||||
|
// arguments and variables used in the nested "content" block.
|
||||||
|
func VariablesHCLDec(body hcl.Body, spec hcldec.Spec) []hcl.Traversal {
|
||||||
|
rootNode := WalkVariables(body)
|
||||||
|
return walkVariablesWithHCLDec(rootNode, spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ExpandVariablesHCLDec is like VariablesHCLDec but it includes only the
|
||||||
|
// minimal set of variables required to call Expand, ignoring variables that
|
||||||
|
// are referenced only inside normal block contents. See WalkExpandVariables
|
||||||
|
// for more information.
|
||||||
|
func ExpandVariablesHCLDec(body hcl.Body, spec hcldec.Spec) []hcl.Traversal {
|
||||||
|
rootNode := WalkExpandVariables(body)
|
||||||
|
return walkVariablesWithHCLDec(rootNode, spec)
|
||||||
|
}
|
||||||
|
|
||||||
|
func walkVariablesWithHCLDec(node WalkVariablesNode, spec hcldec.Spec) []hcl.Traversal {
|
||||||
|
vars, children := node.Visit(hcldec.ImpliedSchema(spec))
|
||||||
|
|
||||||
|
if len(children) > 0 {
|
||||||
|
childSpecs := hcldec.ChildBlockTypes(spec)
|
||||||
|
for _, child := range children {
|
||||||
|
if childSpec, exists := childSpecs[child.BlockTypeName]; exists {
|
||||||
|
vars = append(vars, walkVariablesWithHCLDec(child.Node, childSpec)...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return vars
|
||||||
|
}
|
67
vendor/github.com/hashicorp/hcl2/ext/typeexpr/README.md
generated
vendored
Normal file
67
vendor/github.com/hashicorp/hcl2/ext/typeexpr/README.md
generated
vendored
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
# HCL Type Expressions Extension
|
||||||
|
|
||||||
|
This HCL extension defines a convention for describing HCL types using function
|
||||||
|
call and variable reference syntax, allowing configuration formats to include
|
||||||
|
type information provided by users.
|
||||||
|
|
||||||
|
The type syntax is processed statically from a hcl.Expression, so it cannot
|
||||||
|
use any of the usual language operators. This is similar to type expressions
|
||||||
|
in statically-typed programming languages.
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
variable "example" {
|
||||||
|
type = list(string)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The extension is built using the `hcl.ExprAsKeyword` and `hcl.ExprCall`
|
||||||
|
functions, and so it relies on the underlying syntax to define how "keyword"
|
||||||
|
and "call" are interpreted. The above shows how they are interpreted in
|
||||||
|
the HCL native syntax, while the following shows the same information
|
||||||
|
expressed in JSON:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"variable": {
|
||||||
|
"example": {
|
||||||
|
"type": "list(string)"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Notice that since we have additional contextual information that we intend
|
||||||
|
to allow only calls and keywords the JSON syntax is able to parse the given
|
||||||
|
string directly as an expression, rather than as a template as would be
|
||||||
|
the case for normal expression evaluation.
|
||||||
|
|
||||||
|
For more information, see [the godoc reference](http://godoc.org/github.com/hashicorp/hcl2/ext/typeexpr).
|
||||||
|
|
||||||
|
## Type Expression Syntax
|
||||||
|
|
||||||
|
When expressed in the native syntax, the following expressions are permitted
|
||||||
|
in a type expression:
|
||||||
|
|
||||||
|
* `string` - string
|
||||||
|
* `bool` - boolean
|
||||||
|
* `number` - number
|
||||||
|
* `any` - `cty.DynamicPseudoType` (in function `TypeConstraint` only)
|
||||||
|
* `list(<type_expr>)` - list of the type given as an argument
|
||||||
|
* `set(<type_expr>)` - set of the type given as an argument
|
||||||
|
* `map(<type_expr>)` - map of the type given as an argument
|
||||||
|
* `tuple([<type_exprs...>])` - tuple with the element types given in the single list argument
|
||||||
|
* `object({<attr_name>=<type_expr>, ...}` - object with the attributes and corresponding types given in the single map argument
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
* `list(string)`
|
||||||
|
* `object({name=string,age=number})`
|
||||||
|
* `map(object({name=string,age=number}))`
|
||||||
|
|
||||||
|
Note that the object constructor syntax is not fully-general for all possible
|
||||||
|
object types because it requires the attribute names to be valid identifiers.
|
||||||
|
In practice it is expected that any time an object type is being fixed for
|
||||||
|
type checking it will be one that has identifiers as its attributes; object
|
||||||
|
types with weird attributes generally show up only from arbitrary object
|
||||||
|
constructors in configuration files, which are usually treated either as maps
|
||||||
|
or as the dynamic pseudo-type.
|
11
vendor/github.com/hashicorp/hcl2/ext/typeexpr/doc.go
generated
vendored
Normal file
11
vendor/github.com/hashicorp/hcl2/ext/typeexpr/doc.go
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
// Package typeexpr extends HCL with a convention for describing HCL types
|
||||||
|
// within configuration files.
|
||||||
|
//
|
||||||
|
// The type syntax is processed statically from a hcl.Expression, so it cannot
|
||||||
|
// use any of the usual language operators. This is similar to type expressions
|
||||||
|
// in statically-typed programming languages.
|
||||||
|
//
|
||||||
|
// variable "example" {
|
||||||
|
// type = list(string)
|
||||||
|
// }
|
||||||
|
package typeexpr
|
196
vendor/github.com/hashicorp/hcl2/ext/typeexpr/get_type.go
generated
vendored
Normal file
196
vendor/github.com/hashicorp/hcl2/ext/typeexpr/get_type.go
generated
vendored
Normal file
|
@ -0,0 +1,196 @@
|
||||||
|
package typeexpr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
const invalidTypeSummary = "Invalid type specification"
|
||||||
|
|
||||||
|
// getType is the internal implementation of both Type and TypeConstraint,
|
||||||
|
// using the passed flag to distinguish. When constraint is false, the "any"
|
||||||
|
// keyword will produce an error.
|
||||||
|
func getType(expr hcl.Expression, constraint bool) (cty.Type, hcl.Diagnostics) {
|
||||||
|
// First we'll try for one of our keywords
|
||||||
|
kw := hcl.ExprAsKeyword(expr)
|
||||||
|
switch kw {
|
||||||
|
case "bool":
|
||||||
|
return cty.Bool, nil
|
||||||
|
case "string":
|
||||||
|
return cty.String, nil
|
||||||
|
case "number":
|
||||||
|
return cty.Number, nil
|
||||||
|
case "any":
|
||||||
|
if constraint {
|
||||||
|
return cty.DynamicPseudoType, nil
|
||||||
|
}
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("The keyword %q cannot be used in this type specification: an exact type is required.", kw),
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
case "list", "map", "set":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("The %s type constructor requires one argument specifying the element type.", kw),
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
case "object":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "The object type constructor requires one argument specifying the attribute types and values as a map.",
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
case "tuple":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "The tuple type constructor requires one argument specifying the element types as a list.",
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
case "":
|
||||||
|
// okay! we'll fall through and try processing as a call, then.
|
||||||
|
default:
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("The keyword %q is not a valid type specification.", kw),
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If we get down here then our expression isn't just a keyword, so we'll
|
||||||
|
// try to process it as a call instead.
|
||||||
|
call, diags := hcl.ExprCall(expr)
|
||||||
|
if diags.HasErrors() {
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "A type specification is either a primitive type keyword (bool, number, string) or a complex type constructor call, like list(string).",
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch call.Name {
|
||||||
|
case "bool", "string", "number", "any":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("Primitive type keyword %q does not expect arguments.", call.Name),
|
||||||
|
Subject: &call.ArgsRange,
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(call.Arguments) != 1 {
|
||||||
|
contextRange := call.ArgsRange
|
||||||
|
subjectRange := call.ArgsRange
|
||||||
|
if len(call.Arguments) > 1 {
|
||||||
|
// If we have too many arguments (as opposed to too _few_) then
|
||||||
|
// we'll highlight the extraneous arguments as the diagnostic
|
||||||
|
// subject.
|
||||||
|
subjectRange = hcl.RangeBetween(call.Arguments[1].Range(), call.Arguments[len(call.Arguments)-1].Range())
|
||||||
|
}
|
||||||
|
|
||||||
|
switch call.Name {
|
||||||
|
case "list", "set", "map":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("The %s type constructor requires one argument specifying the element type.", call.Name),
|
||||||
|
Subject: &subjectRange,
|
||||||
|
Context: &contextRange,
|
||||||
|
}}
|
||||||
|
case "object":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "The object type constructor requires one argument specifying the attribute types and values as a map.",
|
||||||
|
Subject: &subjectRange,
|
||||||
|
Context: &contextRange,
|
||||||
|
}}
|
||||||
|
case "tuple":
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "The tuple type constructor requires one argument specifying the element types as a list.",
|
||||||
|
Subject: &subjectRange,
|
||||||
|
Context: &contextRange,
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
switch call.Name {
|
||||||
|
|
||||||
|
case "list":
|
||||||
|
ety, diags := getType(call.Arguments[0], constraint)
|
||||||
|
return cty.List(ety), diags
|
||||||
|
case "set":
|
||||||
|
ety, diags := getType(call.Arguments[0], constraint)
|
||||||
|
return cty.Set(ety), diags
|
||||||
|
case "map":
|
||||||
|
ety, diags := getType(call.Arguments[0], constraint)
|
||||||
|
return cty.Map(ety), diags
|
||||||
|
case "object":
|
||||||
|
attrDefs, diags := hcl.ExprMap(call.Arguments[0])
|
||||||
|
if diags.HasErrors() {
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "Object type constructor requires a map whose keys are attribute names and whose values are the corresponding attribute types.",
|
||||||
|
Subject: call.Arguments[0].Range().Ptr(),
|
||||||
|
Context: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
atys := make(map[string]cty.Type)
|
||||||
|
for _, attrDef := range attrDefs {
|
||||||
|
attrName := hcl.ExprAsKeyword(attrDef.Key)
|
||||||
|
if attrName == "" {
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "Object constructor map keys must be attribute names.",
|
||||||
|
Subject: attrDef.Key.Range().Ptr(),
|
||||||
|
Context: expr.Range().Ptr(),
|
||||||
|
})
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
aty, attrDiags := getType(attrDef.Value, constraint)
|
||||||
|
diags = append(diags, attrDiags...)
|
||||||
|
atys[attrName] = aty
|
||||||
|
}
|
||||||
|
return cty.Object(atys), diags
|
||||||
|
case "tuple":
|
||||||
|
elemDefs, diags := hcl.ExprList(call.Arguments[0])
|
||||||
|
if diags.HasErrors() {
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: "Tuple type constructor requires a list of element types.",
|
||||||
|
Subject: call.Arguments[0].Range().Ptr(),
|
||||||
|
Context: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
etys := make([]cty.Type, len(elemDefs))
|
||||||
|
for i, defExpr := range elemDefs {
|
||||||
|
ety, elemDiags := getType(defExpr, constraint)
|
||||||
|
diags = append(diags, elemDiags...)
|
||||||
|
etys[i] = ety
|
||||||
|
}
|
||||||
|
return cty.Tuple(etys), diags
|
||||||
|
default:
|
||||||
|
// Can't access call.Arguments in this path because we've not validated
|
||||||
|
// that it contains exactly one expression here.
|
||||||
|
return cty.DynamicPseudoType, hcl.Diagnostics{{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: invalidTypeSummary,
|
||||||
|
Detail: fmt.Sprintf("Keyword %q is not a valid type constructor.", call.Name),
|
||||||
|
Subject: expr.Range().Ptr(),
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
}
|
129
vendor/github.com/hashicorp/hcl2/ext/typeexpr/public.go
generated
vendored
Normal file
129
vendor/github.com/hashicorp/hcl2/ext/typeexpr/public.go
generated
vendored
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
package typeexpr
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl2/hcl/hclsyntax"
|
||||||
|
|
||||||
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
|
"github.com/zclconf/go-cty/cty"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Type attempts to process the given expression as a type expression and, if
|
||||||
|
// successful, returns the resulting type. If unsuccessful, error diagnostics
|
||||||
|
// are returned.
|
||||||
|
func Type(expr hcl.Expression) (cty.Type, hcl.Diagnostics) {
|
||||||
|
return getType(expr, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TypeConstraint attempts to parse the given expression as a type constraint
|
||||||
|
// and, if successful, returns the resulting type. If unsuccessful, error
|
||||||
|
// diagnostics are returned.
|
||||||
|
//
|
||||||
|
// A type constraint has the same structure as a type, but it additionally
|
||||||
|
// allows the keyword "any" to represent cty.DynamicPseudoType, which is often
|
||||||
|
// used as a wildcard in type checking and type conversion operations.
|
||||||
|
func TypeConstraint(expr hcl.Expression) (cty.Type, hcl.Diagnostics) {
|
||||||
|
return getType(expr, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// TypeString returns a string rendering of the given type as it would be
|
||||||
|
// expected to appear in the HCL native syntax.
|
||||||
|
//
|
||||||
|
// This is primarily intended for showing types to the user in an application
|
||||||
|
// that uses typexpr, where the user can be assumed to be familiar with the
|
||||||
|
// type expression syntax. In applications that do not use typeexpr these
|
||||||
|
// results may be confusing to the user and so type.FriendlyName may be
|
||||||
|
// preferable, even though it's less precise.
|
||||||
|
//
|
||||||
|
// TypeString produces reasonable results only for types like what would be
|
||||||
|
// produced by the Type and TypeConstraint functions. In particular, it cannot
|
||||||
|
// support capsule types.
|
||||||
|
func TypeString(ty cty.Type) string {
|
||||||
|
// Easy cases first
|
||||||
|
switch ty {
|
||||||
|
case cty.String:
|
||||||
|
return "string"
|
||||||
|
case cty.Bool:
|
||||||
|
return "bool"
|
||||||
|
case cty.Number:
|
||||||
|
return "number"
|
||||||
|
case cty.DynamicPseudoType:
|
||||||
|
return "any"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ty.IsCapsuleType() {
|
||||||
|
panic("TypeString does not support capsule types")
|
||||||
|
}
|
||||||
|
|
||||||
|
if ty.IsCollectionType() {
|
||||||
|
ety := ty.ElementType()
|
||||||
|
etyString := TypeString(ety)
|
||||||
|
switch {
|
||||||
|
case ty.IsListType():
|
||||||
|
return fmt.Sprintf("list(%s)", etyString)
|
||||||
|
case ty.IsSetType():
|
||||||
|
return fmt.Sprintf("set(%s)", etyString)
|
||||||
|
case ty.IsMapType():
|
||||||
|
return fmt.Sprintf("map(%s)", etyString)
|
||||||
|
default:
|
||||||
|
// Should never happen because the above is exhaustive
|
||||||
|
panic("unsupported collection type")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ty.IsObjectType() {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
buf.WriteString("object({")
|
||||||
|
atys := ty.AttributeTypes()
|
||||||
|
names := make([]string, 0, len(atys))
|
||||||
|
for name := range atys {
|
||||||
|
names = append(names, name)
|
||||||
|
}
|
||||||
|
sort.Strings(names)
|
||||||
|
first := true
|
||||||
|
for _, name := range names {
|
||||||
|
aty := atys[name]
|
||||||
|
if !first {
|
||||||
|
buf.WriteByte(',')
|
||||||
|
}
|
||||||
|
if !hclsyntax.ValidIdentifier(name) {
|
||||||
|
// Should never happen for any type produced by this package,
|
||||||
|
// but we'll do something reasonable here just so we don't
|
||||||
|
// produce garbage if someone gives us a hand-assembled object
|
||||||
|
// type that has weird attribute names.
|
||||||
|
// Using Go-style quoting here isn't perfect, since it doesn't
|
||||||
|
// exactly match HCL syntax, but it's fine for an edge-case.
|
||||||
|
buf.WriteString(fmt.Sprintf("%q", name))
|
||||||
|
} else {
|
||||||
|
buf.WriteString(name)
|
||||||
|
}
|
||||||
|
buf.WriteByte('=')
|
||||||
|
buf.WriteString(TypeString(aty))
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
buf.WriteString("})")
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
if ty.IsTupleType() {
|
||||||
|
var buf bytes.Buffer
|
||||||
|
buf.WriteString("tuple([")
|
||||||
|
etys := ty.TupleElementTypes()
|
||||||
|
first := true
|
||||||
|
for _, ety := range etys {
|
||||||
|
if !first {
|
||||||
|
buf.WriteByte(',')
|
||||||
|
}
|
||||||
|
buf.WriteString(TypeString(ety))
|
||||||
|
first = false
|
||||||
|
}
|
||||||
|
buf.WriteString("])")
|
||||||
|
return buf.String()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Should never happen because we covered all cases above.
|
||||||
|
panic(fmt.Errorf("unsupported type %#v", ty))
|
||||||
|
}
|
37
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/expression.go
generated
vendored
37
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/expression.go
generated
vendored
|
@ -1235,19 +1235,6 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||||
return cty.DynamicVal, diags
|
return cty.DynamicVal, diags
|
||||||
}
|
}
|
||||||
|
|
||||||
if sourceVal.IsNull() {
|
|
||||||
diags = append(diags, &hcl.Diagnostic{
|
|
||||||
Severity: hcl.DiagError,
|
|
||||||
Summary: "Splat of null value",
|
|
||||||
Detail: "Splat expressions (with the * symbol) cannot be applied to null values.",
|
|
||||||
Subject: e.Source.Range().Ptr(),
|
|
||||||
Context: hcl.RangeBetween(e.Source.Range(), e.MarkerRange).Ptr(),
|
|
||||||
Expression: e.Source,
|
|
||||||
EvalContext: ctx,
|
|
||||||
})
|
|
||||||
return cty.DynamicVal, diags
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceTy := sourceVal.Type()
|
sourceTy := sourceVal.Type()
|
||||||
if sourceTy == cty.DynamicPseudoType {
|
if sourceTy == cty.DynamicPseudoType {
|
||||||
// If we don't even know the _type_ of our source value yet then
|
// If we don't even know the _type_ of our source value yet then
|
||||||
|
@ -1258,9 +1245,27 @@ func (e *SplatExpr) Value(ctx *hcl.EvalContext) (cty.Value, hcl.Diagnostics) {
|
||||||
|
|
||||||
// A "special power" of splat expressions is that they can be applied
|
// A "special power" of splat expressions is that they can be applied
|
||||||
// both to tuples/lists and to other values, and in the latter case
|
// both to tuples/lists and to other values, and in the latter case
|
||||||
// the value will be treated as an implicit single-value tuple. We'll
|
// the value will be treated as an implicit single-item tuple, or as
|
||||||
// deal with that here first.
|
// an empty tuple if the value is null.
|
||||||
if !(sourceTy.IsTupleType() || sourceTy.IsListType() || sourceTy.IsSetType()) {
|
autoUpgrade := !(sourceTy.IsTupleType() || sourceTy.IsListType() || sourceTy.IsSetType())
|
||||||
|
|
||||||
|
if sourceVal.IsNull() {
|
||||||
|
if autoUpgrade {
|
||||||
|
return cty.EmptyTupleVal, diags
|
||||||
|
}
|
||||||
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
Severity: hcl.DiagError,
|
||||||
|
Summary: "Splat of null value",
|
||||||
|
Detail: "Splat expressions (with the * symbol) cannot be applied to null sequences.",
|
||||||
|
Subject: e.Source.Range().Ptr(),
|
||||||
|
Context: hcl.RangeBetween(e.Source.Range(), e.MarkerRange).Ptr(),
|
||||||
|
Expression: e.Source,
|
||||||
|
EvalContext: ctx,
|
||||||
|
})
|
||||||
|
return cty.DynamicVal, diags
|
||||||
|
}
|
||||||
|
|
||||||
|
if autoUpgrade {
|
||||||
sourceVal = cty.TupleVal([]cty.Value{sourceVal})
|
sourceVal = cty.TupleVal([]cty.Value{sourceVal})
|
||||||
sourceTy = sourceVal.Type()
|
sourceTy = sourceVal.Type()
|
||||||
}
|
}
|
||||||
|
|
61
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/parser.go
generated
vendored
61
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/parser.go
generated
vendored
|
@ -9,7 +9,6 @@ import (
|
||||||
"github.com/apparentlymart/go-textseg/textseg"
|
"github.com/apparentlymart/go-textseg/textseg"
|
||||||
"github.com/hashicorp/hcl2/hcl"
|
"github.com/hashicorp/hcl2/hcl"
|
||||||
"github.com/zclconf/go-cty/cty"
|
"github.com/zclconf/go-cty/cty"
|
||||||
"github.com/zclconf/go-cty/cty/convert"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type parser struct {
|
type parser struct {
|
||||||
|
@ -236,10 +235,18 @@ func (p *parser) finishParsingBodyAttribute(ident Token, singleLine bool) (Node,
|
||||||
end := p.Peek()
|
end := p.Peek()
|
||||||
if end.Type != TokenNewline && end.Type != TokenEOF {
|
if end.Type != TokenNewline && end.Type != TokenEOF {
|
||||||
if !p.recovery {
|
if !p.recovery {
|
||||||
|
summary := "Missing newline after argument"
|
||||||
|
detail := "An argument definition must end with a newline."
|
||||||
|
|
||||||
|
if end.Type == TokenComma {
|
||||||
|
summary = "Unexpected comma after argument"
|
||||||
|
detail = "Argument definitions must be separated by newlines, not commas. " + detail
|
||||||
|
}
|
||||||
|
|
||||||
diags = append(diags, &hcl.Diagnostic{
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
Severity: hcl.DiagError,
|
Severity: hcl.DiagError,
|
||||||
Summary: "Missing newline after argument",
|
Summary: summary,
|
||||||
Detail: "An argument definition must end with a newline.",
|
Detail: detail,
|
||||||
Subject: &end.Range,
|
Subject: &end.Range,
|
||||||
Context: hcl.RangeBetween(ident.Range, end.Range).Ptr(),
|
Context: hcl.RangeBetween(ident.Range, end.Range).Ptr(),
|
||||||
})
|
})
|
||||||
|
@ -286,19 +293,9 @@ Token:
|
||||||
diags = append(diags, labelDiags...)
|
diags = append(diags, labelDiags...)
|
||||||
labels = append(labels, label)
|
labels = append(labels, label)
|
||||||
labelRanges = append(labelRanges, labelRange)
|
labelRanges = append(labelRanges, labelRange)
|
||||||
if labelDiags.HasErrors() {
|
// parseQuoteStringLiteral recovers up to the closing quote
|
||||||
p.recoverAfterBodyItem()
|
// if it encounters problems, so we can continue looking for
|
||||||
return &Block{
|
// more labels and eventually the block body even.
|
||||||
Type: blockType,
|
|
||||||
Labels: labels,
|
|
||||||
Body: nil,
|
|
||||||
|
|
||||||
TypeRange: ident.Range,
|
|
||||||
LabelRanges: labelRanges,
|
|
||||||
OpenBraceRange: ident.Range, // placeholder
|
|
||||||
CloseBraceRange: ident.Range, // placeholder
|
|
||||||
}, diags
|
|
||||||
}
|
|
||||||
|
|
||||||
case TokenIdent:
|
case TokenIdent:
|
||||||
tok = p.Read() // eat token
|
tok = p.Read() // eat token
|
||||||
|
@ -1050,11 +1047,10 @@ func (p *parser) parseExpressionTerm() (Expression, hcl.Diagnostics) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *parser) numberLitValue(tok Token) (cty.Value, hcl.Diagnostics) {
|
func (p *parser) numberLitValue(tok Token) (cty.Value, hcl.Diagnostics) {
|
||||||
// We'll lean on the cty converter to do the conversion, to ensure that
|
// The cty.ParseNumberVal is always the same behavior as converting a
|
||||||
// the behavior is the same as what would happen if converting a
|
// string to a number, ensuring we always interpret decimal numbers in
|
||||||
// non-literal string to a number.
|
// the same way.
|
||||||
numStrVal := cty.StringVal(string(tok.Bytes))
|
numVal, err := cty.ParseNumberVal(string(tok.Bytes))
|
||||||
numVal, err := convert.Convert(numStrVal, cty.Number)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ret := cty.UnknownVal(cty.Number)
|
ret := cty.UnknownVal(cty.Number)
|
||||||
return ret, hcl.Diagnostics{
|
return ret, hcl.Diagnostics{
|
||||||
|
@ -1246,7 +1242,13 @@ func (p *parser) parseObjectCons() (Expression, hcl.Diagnostics) {
|
||||||
panic("parseObjectCons called without peeker pointing to open brace")
|
panic("parseObjectCons called without peeker pointing to open brace")
|
||||||
}
|
}
|
||||||
|
|
||||||
if forKeyword.TokenMatches(p.Peek()) {
|
// We must temporarily stop looking at newlines here while we check for
|
||||||
|
// a "for" keyword, since for expressions are _not_ newline-sensitive,
|
||||||
|
// even though object constructors are.
|
||||||
|
p.PushIncludeNewlines(false)
|
||||||
|
isFor := forKeyword.TokenMatches(p.Peek())
|
||||||
|
p.PopIncludeNewlines()
|
||||||
|
if isFor {
|
||||||
return p.finishParsingForExpr(open)
|
return p.finishParsingForExpr(open)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1381,6 +1383,8 @@ func (p *parser) parseObjectCons() (Expression, hcl.Diagnostics) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *parser) finishParsingForExpr(open Token) (Expression, hcl.Diagnostics) {
|
func (p *parser) finishParsingForExpr(open Token) (Expression, hcl.Diagnostics) {
|
||||||
|
p.PushIncludeNewlines(false)
|
||||||
|
defer p.PopIncludeNewlines()
|
||||||
introducer := p.Read()
|
introducer := p.Read()
|
||||||
if !forKeyword.TokenMatches(introducer) {
|
if !forKeyword.TokenMatches(introducer) {
|
||||||
// Should never happen if callers are behaving
|
// Should never happen if callers are behaving
|
||||||
|
@ -1648,7 +1652,16 @@ Token:
|
||||||
Subject: &tok.Range,
|
Subject: &tok.Range,
|
||||||
Context: hcl.RangeBetween(oQuote.Range, tok.Range).Ptr(),
|
Context: hcl.RangeBetween(oQuote.Range, tok.Range).Ptr(),
|
||||||
})
|
})
|
||||||
p.recover(TokenTemplateSeqEnd)
|
|
||||||
|
// Now that we're returning an error callers won't attempt to use
|
||||||
|
// the result for any real operations, but they might try to use
|
||||||
|
// the partial AST for other analyses, so we'll leave a marker
|
||||||
|
// to indicate that there was something invalid in the string to
|
||||||
|
// help avoid misinterpretation of the partial result
|
||||||
|
ret.WriteString(which)
|
||||||
|
ret.WriteString("{ ... }")
|
||||||
|
|
||||||
|
p.recover(TokenTemplateSeqEnd) // we'll try to keep parsing after the sequence ends
|
||||||
|
|
||||||
case TokenEOF:
|
case TokenEOF:
|
||||||
diags = append(diags, &hcl.Diagnostic{
|
diags = append(diags, &hcl.Diagnostic{
|
||||||
|
@ -1669,7 +1682,7 @@ Token:
|
||||||
Subject: &tok.Range,
|
Subject: &tok.Range,
|
||||||
Context: hcl.RangeBetween(oQuote.Range, tok.Range).Ptr(),
|
Context: hcl.RangeBetween(oQuote.Range, tok.Range).Ptr(),
|
||||||
})
|
})
|
||||||
p.recover(TokenOQuote)
|
p.recover(TokenCQuote)
|
||||||
break Token
|
break Token
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
24
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_string_lit.go
generated
vendored
24
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_string_lit.go
generated
vendored
|
@ -1,10 +1,10 @@
|
||||||
// line 1 "scan_string_lit.rl"
|
//line scan_string_lit.rl:1
|
||||||
|
|
||||||
package hclsyntax
|
package hclsyntax
|
||||||
|
|
||||||
// This file is generated from scan_string_lit.rl. DO NOT EDIT.
|
// This file is generated from scan_string_lit.rl. DO NOT EDIT.
|
||||||
|
|
||||||
// line 9 "scan_string_lit.go"
|
//line scan_string_lit.go:9
|
||||||
var _hclstrtok_actions []byte = []byte{
|
var _hclstrtok_actions []byte = []byte{
|
||||||
0, 1, 0, 1, 1, 2, 1, 0,
|
0, 1, 0, 1, 1, 2, 1, 0,
|
||||||
}
|
}
|
||||||
|
@ -114,12 +114,12 @@ const hclstrtok_error int = 0
|
||||||
const hclstrtok_en_quoted int = 10
|
const hclstrtok_en_quoted int = 10
|
||||||
const hclstrtok_en_unquoted int = 4
|
const hclstrtok_en_unquoted int = 4
|
||||||
|
|
||||||
// line 10 "scan_string_lit.rl"
|
//line scan_string_lit.rl:10
|
||||||
|
|
||||||
func scanStringLit(data []byte, quoted bool) [][]byte {
|
func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
var ret [][]byte
|
var ret [][]byte
|
||||||
|
|
||||||
// line 61 "scan_string_lit.rl"
|
//line scan_string_lit.rl:61
|
||||||
|
|
||||||
// Ragel state
|
// Ragel state
|
||||||
p := 0 // "Pointer" into data
|
p := 0 // "Pointer" into data
|
||||||
|
@ -144,11 +144,11 @@ func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
ret = append(ret, data[ts:te])
|
ret = append(ret, data[ts:te])
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
// line 154 "scan_string_lit.go"
|
//line scan_string_lit.go:154
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
// line 158 "scan_string_lit.go"
|
//line scan_string_lit.go:158
|
||||||
{
|
{
|
||||||
var _klen int
|
var _klen int
|
||||||
var _trans int
|
var _trans int
|
||||||
|
@ -229,7 +229,7 @@ func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
_acts++
|
_acts++
|
||||||
switch _hclstrtok_actions[_acts-1] {
|
switch _hclstrtok_actions[_acts-1] {
|
||||||
case 0:
|
case 0:
|
||||||
// line 40 "scan_string_lit.rl"
|
//line scan_string_lit.rl:40
|
||||||
|
|
||||||
// If te is behind p then we've skipped over some literal
|
// If te is behind p then we've skipped over some literal
|
||||||
// characters which we must now return.
|
// characters which we must now return.
|
||||||
|
@ -239,12 +239,12 @@ func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
ts = p
|
ts = p
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
// line 48 "scan_string_lit.rl"
|
//line scan_string_lit.rl:48
|
||||||
|
|
||||||
te = p
|
te = p
|
||||||
ret = append(ret, data[ts:te])
|
ret = append(ret, data[ts:te])
|
||||||
|
|
||||||
// line 255 "scan_string_lit.go"
|
//line scan_string_lit.go:253
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,12 +267,12 @@ func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
__acts++
|
__acts++
|
||||||
switch _hclstrtok_actions[__acts-1] {
|
switch _hclstrtok_actions[__acts-1] {
|
||||||
case 1:
|
case 1:
|
||||||
// line 48 "scan_string_lit.rl"
|
//line scan_string_lit.rl:48
|
||||||
|
|
||||||
te = p
|
te = p
|
||||||
ret = append(ret, data[ts:te])
|
ret = append(ret, data[ts:te])
|
||||||
|
|
||||||
// line 281 "scan_string_lit.go"
|
//line scan_string_lit.go:278
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ func scanStringLit(data []byte, quoted bool) [][]byte {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// line 89 "scan_string_lit.rl"
|
//line scan_string_lit.rl:89
|
||||||
|
|
||||||
if te < p {
|
if te < p {
|
||||||
// Collect any leftover literal characters at the end of the input
|
// Collect any leftover literal characters at the end of the input
|
||||||
|
|
878
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_tokens.go
generated
vendored
878
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_tokens.go
generated
vendored
File diff suppressed because it is too large
Load Diff
8
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_tokens.rl
generated
vendored
8
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/scan_tokens.rl
generated
vendored
|
@ -9,13 +9,17 @@ import (
|
||||||
|
|
||||||
// This file is generated from scan_tokens.rl. DO NOT EDIT.
|
// This file is generated from scan_tokens.rl. DO NOT EDIT.
|
||||||
%%{
|
%%{
|
||||||
# (except you are actually in scan_tokens.rl here, so edit away!)
|
# (except when you are actually in scan_tokens.rl here, so edit away!)
|
||||||
|
|
||||||
machine hcltok;
|
machine hcltok;
|
||||||
write data;
|
write data;
|
||||||
}%%
|
}%%
|
||||||
|
|
||||||
func scanTokens(data []byte, filename string, start hcl.Pos, mode scanMode) []Token {
|
func scanTokens(data []byte, filename string, start hcl.Pos, mode scanMode) []Token {
|
||||||
|
stripData := stripUTF8BOM(data)
|
||||||
|
start.Byte += len(data) - len(stripData)
|
||||||
|
data = stripData
|
||||||
|
|
||||||
f := &tokenAccum{
|
f := &tokenAccum{
|
||||||
Filename: filename,
|
Filename: filename,
|
||||||
Bytes: data,
|
Bytes: data,
|
||||||
|
@ -40,7 +44,7 @@ func scanTokens(data []byte, filename string, start hcl.Pos, mode scanMode) []To
|
||||||
Ident = (ID_Start | '_') (ID_Continue | '-')*;
|
Ident = (ID_Start | '_') (ID_Continue | '-')*;
|
||||||
|
|
||||||
# Symbols that just represent themselves are handled as a single rule.
|
# Symbols that just represent themselves are handled as a single rule.
|
||||||
SelfToken = "[" | "]" | "(" | ")" | "." | "," | "*" | "/" | "%" | "+" | "-" | "=" | "<" | ">" | "!" | "?" | ":" | "\n" | "&" | "|" | "~" | "^" | ";" | "`";
|
SelfToken = "[" | "]" | "(" | ")" | "." | "," | "*" | "/" | "%" | "+" | "-" | "=" | "<" | ">" | "!" | "?" | ":" | "\n" | "&" | "|" | "~" | "^" | ";" | "`" | "'";
|
||||||
|
|
||||||
EqualOp = "==";
|
EqualOp = "==";
|
||||||
NotEqual = "!=";
|
NotEqual = "!=";
|
||||||
|
|
122
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/spec.md
generated
vendored
122
vendor/github.com/hashicorp/hcl2/hcl/hclsyntax/spec.md
generated
vendored
|
@ -9,13 +9,13 @@ generation of configuration.
|
||||||
|
|
||||||
The language consists of three integrated sub-languages:
|
The language consists of three integrated sub-languages:
|
||||||
|
|
||||||
* The _structural_ language defines the overall hierarchical configuration
|
- The _structural_ language defines the overall hierarchical configuration
|
||||||
structure, and is a serialization of HCL bodies, blocks and attributes.
|
structure, and is a serialization of HCL bodies, blocks and attributes.
|
||||||
|
|
||||||
* The _expression_ language is used to express attribute values, either as
|
- The _expression_ language is used to express attribute values, either as
|
||||||
literals or as derivations of other values.
|
literals or as derivations of other values.
|
||||||
|
|
||||||
* The _template_ language is used to compose values together into strings,
|
- The _template_ language is used to compose values together into strings,
|
||||||
as one of several types of expression in the expression language.
|
as one of several types of expression in the expression language.
|
||||||
|
|
||||||
In normal use these three sub-languages are used together within configuration
|
In normal use these three sub-languages are used together within configuration
|
||||||
|
@ -30,19 +30,19 @@ Within this specification a semi-formal notation is used to illustrate the
|
||||||
details of syntax. This notation is intended for human consumption rather
|
details of syntax. This notation is intended for human consumption rather
|
||||||
than machine consumption, with the following conventions:
|
than machine consumption, with the following conventions:
|
||||||
|
|
||||||
* A naked name starting with an uppercase letter is a global production,
|
- A naked name starting with an uppercase letter is a global production,
|
||||||
common to all of the syntax specifications in this document.
|
common to all of the syntax specifications in this document.
|
||||||
* A naked name starting with a lowercase letter is a local production,
|
- A naked name starting with a lowercase letter is a local production,
|
||||||
meaningful only within the specification where it is defined.
|
meaningful only within the specification where it is defined.
|
||||||
* Double and single quotes (`"` and `'`) are used to mark literal character
|
- Double and single quotes (`"` and `'`) are used to mark literal character
|
||||||
sequences, which may be either punctuation markers or keywords.
|
sequences, which may be either punctuation markers or keywords.
|
||||||
* The default operator for combining items, which has no punctuation,
|
- The default operator for combining items, which has no punctuation,
|
||||||
is concatenation.
|
is concatenation.
|
||||||
* The symbol `|` indicates that any one of its left and right operands may
|
- The symbol `|` indicates that any one of its left and right operands may
|
||||||
be present.
|
be present.
|
||||||
* The `*` symbol indicates zero or more repetitions of the item to its left.
|
- The `*` symbol indicates zero or more repetitions of the item to its left.
|
||||||
* The `?` symbol indicates zero or one of the item to its left.
|
- The `?` symbol indicates zero or one of the item to its left.
|
||||||
* Parentheses (`(` and `)`) are used to group items together to apply
|
- Parentheses (`(` and `)`) are used to group items together to apply
|
||||||
the `|`, `*` and `?` operators to them collectively.
|
the `|`, `*` and `?` operators to them collectively.
|
||||||
|
|
||||||
The grammar notation does not fully describe the language. The prose may
|
The grammar notation does not fully describe the language. The prose may
|
||||||
|
@ -77,11 +77,11 @@ are not valid within HCL native syntax.
|
||||||
|
|
||||||
Comments serve as program documentation and come in two forms:
|
Comments serve as program documentation and come in two forms:
|
||||||
|
|
||||||
* _Line comments_ start with either the `//` or `#` sequences and end with
|
- _Line comments_ start with either the `//` or `#` sequences and end with
|
||||||
the next newline sequence. A line comments is considered equivalent to a
|
the next newline sequence. A line comments is considered equivalent to a
|
||||||
newline sequence.
|
newline sequence.
|
||||||
|
|
||||||
* _Inline comments_ start with the `/*` sequence and end with the `*/`
|
- _Inline comments_ start with the `/*` sequence and end with the `*/`
|
||||||
sequence, and may have any characters within except the ending sequence.
|
sequence, and may have any characters within except the ending sequence.
|
||||||
An inline comments is considered equivalent to a whitespace sequence.
|
An inline comments is considered equivalent to a whitespace sequence.
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ template literals except inside an interpolation sequence or template directive.
|
||||||
### Identifiers
|
### Identifiers
|
||||||
|
|
||||||
Identifiers name entities such as blocks, attributes and expression variables.
|
Identifiers name entities such as blocks, attributes and expression variables.
|
||||||
Identifiers are interpreted as per [UAX #31][UAX31] Section 2. Specifically,
|
Identifiers are interpreted as per [UAX #31][uax31] Section 2. Specifically,
|
||||||
their syntax is defined in terms of the `ID_Start` and `ID_Continue`
|
their syntax is defined in terms of the `ID_Start` and `ID_Continue`
|
||||||
character properties as follows:
|
character properties as follows:
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ that is not part of the unicode `ID_Continue` definition. This is to allow
|
||||||
attribute names and block type names to contain dashes, although underscores
|
attribute names and block type names to contain dashes, although underscores
|
||||||
as word separators are considered the idiomatic usage.
|
as word separators are considered the idiomatic usage.
|
||||||
|
|
||||||
[UAX31]: http://unicode.org/reports/tr31/ "Unicode Identifier and Pattern Syntax"
|
[uax31]: http://unicode.org/reports/tr31/ "Unicode Identifier and Pattern Syntax"
|
||||||
|
|
||||||
### Keywords
|
### Keywords
|
||||||
|
|
||||||
|
@ -150,9 +150,9 @@ expmark = ('e' | 'E') ("+" | "-")?;
|
||||||
The structural language consists of syntax representing the following
|
The structural language consists of syntax representing the following
|
||||||
constructs:
|
constructs:
|
||||||
|
|
||||||
* _Attributes_, which assign a value to a specified name.
|
- _Attributes_, which assign a value to a specified name.
|
||||||
* _Blocks_, which create a child body annotated by a type and optional labels.
|
- _Blocks_, which create a child body annotated by a type and optional labels.
|
||||||
* _Body Content_, which consists of a collection of attributes and blocks.
|
- _Body Content_, which consists of a collection of attributes and blocks.
|
||||||
|
|
||||||
These constructs correspond to the similarly-named concepts in the
|
These constructs correspond to the similarly-named concepts in the
|
||||||
language-agnostic HCL information model.
|
language-agnostic HCL information model.
|
||||||
|
@ -253,9 +253,9 @@ LiteralValue = (
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
* Numeric literals represent values of type _number_.
|
- Numeric literals represent values of type _number_.
|
||||||
* The `true` and `false` keywords represent values of type _bool_.
|
- The `true` and `false` keywords represent values of type _bool_.
|
||||||
* The `null` keyword represents a null value of the dynamic pseudo-type.
|
- The `null` keyword represents a null value of the dynamic pseudo-type.
|
||||||
|
|
||||||
String literals are not directly available in the expression sub-language, but
|
String literals are not directly available in the expression sub-language, but
|
||||||
are available via the template sub-language, which can in turn be incorporated
|
are available via the template sub-language, which can in turn be incorporated
|
||||||
|
@ -286,8 +286,8 @@ When specifying an object element, an identifier is interpreted as a literal
|
||||||
attribute name as opposed to a variable reference. To populate an item key
|
attribute name as opposed to a variable reference. To populate an item key
|
||||||
from a variable, use parentheses to disambiguate:
|
from a variable, use parentheses to disambiguate:
|
||||||
|
|
||||||
* `{foo = "baz"}` is interpreted as an attribute literally named `foo`.
|
- `{foo = "baz"}` is interpreted as an attribute literally named `foo`.
|
||||||
* `{(foo) = "baz"}` is interpreted as an attribute whose name is taken
|
- `{(foo) = "baz"}` is interpreted as an attribute whose name is taken
|
||||||
from the variable named `foo`.
|
from the variable named `foo`.
|
||||||
|
|
||||||
Between the open and closing delimiters of these sequences, newline sequences
|
Between the open and closing delimiters of these sequences, newline sequences
|
||||||
|
@ -299,12 +299,12 @@ _for expression_ interpretation has priority, so to produce a tuple whose
|
||||||
first element is the value of a variable named `for`, or an object with a
|
first element is the value of a variable named `for`, or an object with a
|
||||||
key named `for`, use parentheses to disambiguate:
|
key named `for`, use parentheses to disambiguate:
|
||||||
|
|
||||||
* `[for, foo, baz]` is a syntax error.
|
- `[for, foo, baz]` is a syntax error.
|
||||||
* `[(for), foo, baz]` is a tuple whose first element is the value of variable
|
- `[(for), foo, baz]` is a tuple whose first element is the value of variable
|
||||||
`for`.
|
`for`.
|
||||||
* `{for: 1, baz: 2}` is a syntax error.
|
- `{for: 1, baz: 2}` is a syntax error.
|
||||||
* `{(for): 1, baz: 2}` is an object with an attribute literally named `for`.
|
- `{(for): 1, baz: 2}` is an object with an attribute literally named `for`.
|
||||||
* `{baz: 2, for: 1}` is equivalent to the previous example, and resolves the
|
- `{baz: 2, for: 1}` is equivalent to the previous example, and resolves the
|
||||||
ambiguity by reordering.
|
ambiguity by reordering.
|
||||||
|
|
||||||
### Template Expressions
|
### Template Expressions
|
||||||
|
@ -312,9 +312,9 @@ key named `for`, use parentheses to disambiguate:
|
||||||
A _template expression_ embeds a program written in the template sub-language
|
A _template expression_ embeds a program written in the template sub-language
|
||||||
as an expression. Template expressions come in two forms:
|
as an expression. Template expressions come in two forms:
|
||||||
|
|
||||||
* A _quoted_ template expression is delimited by quote characters (`"`) and
|
- A _quoted_ template expression is delimited by quote characters (`"`) and
|
||||||
defines a template as a single-line expression with escape characters.
|
defines a template as a single-line expression with escape characters.
|
||||||
* A _heredoc_ template expression is introduced by a `<<` sequence and
|
- A _heredoc_ template expression is introduced by a `<<` sequence and
|
||||||
defines a template via a multi-line sequence terminated by a user-chosen
|
defines a template via a multi-line sequence terminated by a user-chosen
|
||||||
delimiter.
|
delimiter.
|
||||||
|
|
||||||
|
@ -458,14 +458,14 @@ are provided, the first is the key and the second is the value.
|
||||||
Tuple, object, list, map, and set types are iterable. The type of collection
|
Tuple, object, list, map, and set types are iterable. The type of collection
|
||||||
used defines how the key and value variables are populated:
|
used defines how the key and value variables are populated:
|
||||||
|
|
||||||
* For tuple and list types, the _key_ is the zero-based index into the
|
- For tuple and list types, the _key_ is the zero-based index into the
|
||||||
sequence for each element, and the _value_ is the element value. The
|
sequence for each element, and the _value_ is the element value. The
|
||||||
elements are visited in index order.
|
elements are visited in index order.
|
||||||
* For object and map types, the _key_ is the string attribute name or element
|
- For object and map types, the _key_ is the string attribute name or element
|
||||||
key, and the _value_ is the attribute or element value. The elements are
|
key, and the _value_ is the attribute or element value. The elements are
|
||||||
visited in the order defined by a lexicographic sort of the attribute names
|
visited in the order defined by a lexicographic sort of the attribute names
|
||||||
or keys.
|
or keys.
|
||||||
* For set types, the _key_ and _value_ are both the element value. The elements
|
- For set types, the _key_ and _value_ are both the element value. The elements
|
||||||
are visited in an undefined but consistent order.
|
are visited in an undefined but consistent order.
|
||||||
|
|
||||||
The expression after the colon and (in the case of object `for`) the expression
|
The expression after the colon and (in the case of object `for`) the expression
|
||||||
|
@ -487,12 +487,12 @@ immediately after the value expression, this activates the grouping mode in
|
||||||
which each value in the resulting object is a _tuple_ of all of the values
|
which each value in the resulting object is a _tuple_ of all of the values
|
||||||
that were produced against each distinct key.
|
that were produced against each distinct key.
|
||||||
|
|
||||||
* `[for v in ["a", "b"]: v]` returns `["a", "b"]`.
|
- `[for v in ["a", "b"]: v]` returns `["a", "b"]`.
|
||||||
* `[for i, v in ["a", "b"]: i]` returns `[0, 1]`.
|
- `[for i, v in ["a", "b"]: i]` returns `[0, 1]`.
|
||||||
* `{for i, v in ["a", "b"]: v => i}` returns `{a = 0, b = 1}`.
|
- `{for i, v in ["a", "b"]: v => i}` returns `{a = 0, b = 1}`.
|
||||||
* `{for i, v in ["a", "a", "b"]: k => v}` produces an error, because attribute
|
- `{for i, v in ["a", "a", "b"]: k => v}` produces an error, because attribute
|
||||||
`a` is defined twice.
|
`a` is defined twice.
|
||||||
* `{for i, v in ["a", "a", "b"]: v => i...}` returns `{a = [0, 1], b = [2]}`.
|
- `{for i, v in ["a", "a", "b"]: v => i...}` returns `{a = [0, 1], b = [2]}`.
|
||||||
|
|
||||||
If the `if` keyword is used after the element expression(s), it applies an
|
If the `if` keyword is used after the element expression(s), it applies an
|
||||||
additional predicate that can be used to conditionally filter elements from
|
additional predicate that can be used to conditionally filter elements from
|
||||||
|
@ -502,7 +502,7 @@ element expression(s). It must evaluate to a boolean value; if `true`, the
|
||||||
element will be evaluated as normal, while if `false` the element will be
|
element will be evaluated as normal, while if `false` the element will be
|
||||||
skipped.
|
skipped.
|
||||||
|
|
||||||
* `[for i, v in ["a", "b", "c"]: v if i < 2]` returns `["a", "b"]`.
|
- `[for i, v in ["a", "b", "c"]: v if i < 2]` returns `["a", "b"]`.
|
||||||
|
|
||||||
If the collection value, element expression(s) or condition expression return
|
If the collection value, element expression(s) or condition expression return
|
||||||
unknown values that are otherwise type-valid, the result is a value of the
|
unknown values that are otherwise type-valid, the result is a value of the
|
||||||
|
@ -567,10 +567,10 @@ elements in a tuple, list, or set value.
|
||||||
|
|
||||||
There are two kinds of "splat" operator:
|
There are two kinds of "splat" operator:
|
||||||
|
|
||||||
* The _attribute-only_ splat operator supports only attribute lookups into
|
- The _attribute-only_ splat operator supports only attribute lookups into
|
||||||
the elements from a list, but supports an arbitrary number of them.
|
the elements from a list, but supports an arbitrary number of them.
|
||||||
|
|
||||||
* The _full_ splat operator additionally supports indexing into the elements
|
- The _full_ splat operator additionally supports indexing into the elements
|
||||||
from a list, and allows any combination of attribute access and index
|
from a list, and allows any combination of attribute access and index
|
||||||
operations.
|
operations.
|
||||||
|
|
||||||
|
@ -583,9 +583,9 @@ fullSplat = "[" "*" "]" (GetAttr | Index)*;
|
||||||
The splat operators can be thought of as shorthands for common operations that
|
The splat operators can be thought of as shorthands for common operations that
|
||||||
could otherwise be performed using _for expressions_:
|
could otherwise be performed using _for expressions_:
|
||||||
|
|
||||||
* `tuple.*.foo.bar[0]` is approximately equivalent to
|
- `tuple.*.foo.bar[0]` is approximately equivalent to
|
||||||
`[for v in tuple: v.foo.bar][0]`.
|
`[for v in tuple: v.foo.bar][0]`.
|
||||||
* `tuple[*].foo.bar[0]` is approximately equivalent to
|
- `tuple[*].foo.bar[0]` is approximately equivalent to
|
||||||
`[for v in tuple: v.foo.bar[0]]`
|
`[for v in tuple: v.foo.bar[0]]`
|
||||||
|
|
||||||
Note the difference in how the trailing index operator is interpreted in
|
Note the difference in how the trailing index operator is interpreted in
|
||||||
|
@ -597,13 +597,15 @@ _for expressions_ shown above: if a splat operator is applied to a value that
|
||||||
is _not_ of tuple, list, or set type, the value is coerced automatically into
|
is _not_ of tuple, list, or set type, the value is coerced automatically into
|
||||||
a single-value list of the value type:
|
a single-value list of the value type:
|
||||||
|
|
||||||
* `any_object.*.id` is equivalent to `[any_object.id]`, assuming that `any_object`
|
- `any_object.*.id` is equivalent to `[any_object.id]`, assuming that `any_object`
|
||||||
is a single object.
|
is a single object.
|
||||||
* `any_number.*` is equivalent to `[any_number]`, assuming that `any_number`
|
- `any_number.*` is equivalent to `[any_number]`, assuming that `any_number`
|
||||||
is a single number.
|
is a single number.
|
||||||
|
|
||||||
If the left operand of a splat operator is an unknown value of any type, the
|
If applied to a null value that is not tuple, list, or set, the result is always
|
||||||
result is a value of the dynamic pseudo-type.
|
an empty tuple, which allows conveniently converting a possibly-null scalar
|
||||||
|
value into a tuple of zero or one elements. It is illegal to apply a splat
|
||||||
|
operator to a null value of tuple, list, or set type.
|
||||||
|
|
||||||
### Operations
|
### Operations
|
||||||
|
|
||||||
|
@ -777,8 +779,8 @@ interpolations or directives that are adjacent to it. A strip marker is
|
||||||
a tilde (`~`) placed immediately after the opening `{` or before the closing
|
a tilde (`~`) placed immediately after the opening `{` or before the closing
|
||||||
`}` of a template sequence:
|
`}` of a template sequence:
|
||||||
|
|
||||||
* `hello ${~ "world" }` produces `"helloworld"`.
|
- `hello ${~ "world" }` produces `"helloworld"`.
|
||||||
* `%{ if true ~} hello %{~ endif }` produces `"hello"`.
|
- `%{ if true ~} hello %{~ endif }` produces `"hello"`.
|
||||||
|
|
||||||
When a strip marker is present, any spaces adjacent to it in the corresponding
|
When a strip marker is present, any spaces adjacent to it in the corresponding
|
||||||
string literal (if any) are removed before producing the final value. Space
|
string literal (if any) are removed before producing the final value. Space
|
||||||
|
@ -787,7 +789,7 @@ characters are interpreted as per Unicode's definition.
|
||||||
Stripping is done at syntax level rather than value level. Values returned
|
Stripping is done at syntax level rather than value level. Values returned
|
||||||
by interpolations or directives are not subject to stripping:
|
by interpolations or directives are not subject to stripping:
|
||||||
|
|
||||||
* `${"hello" ~}${" world"}` produces `"hello world"`, and not `"helloworld"`,
|
- `${"hello" ~}${" world"}` produces `"hello world"`, and not `"helloworld"`,
|
||||||
because the space is not in a template literal directly adjacent to the
|
because the space is not in a template literal directly adjacent to the
|
||||||
strip marker.
|
strip marker.
|
||||||
|
|
||||||
|
@ -825,9 +827,9 @@ TemplateIf = (
|
||||||
The evaluation of the `if` directive is equivalent to the conditional
|
The evaluation of the `if` directive is equivalent to the conditional
|
||||||
expression, with the following exceptions:
|
expression, with the following exceptions:
|
||||||
|
|
||||||
* The two sub-templates always produce strings, and thus the result value is
|
- The two sub-templates always produce strings, and thus the result value is
|
||||||
also always a string.
|
also always a string.
|
||||||
* The `else` clause may be omitted, in which case the conditional's third
|
- The `else` clause may be omitted, in which case the conditional's third
|
||||||
expression result is implied to be the empty string.
|
expression result is implied to be the empty string.
|
||||||
|
|
||||||
### Template For Directive
|
### Template For Directive
|
||||||
|
@ -847,9 +849,9 @@ TemplateFor = (
|
||||||
The evaluation of the `for` directive is equivalent to the _for expression_
|
The evaluation of the `for` directive is equivalent to the _for expression_
|
||||||
when producing a tuple, with the following exceptions:
|
when producing a tuple, with the following exceptions:
|
||||||
|
|
||||||
* The sub-template always produces a string.
|
- The sub-template always produces a string.
|
||||||
* There is no equivalent of the "if" clause on the for expression.
|
- There is no equivalent of the "if" clause on the for expression.
|
||||||
* The elements of the resulting tuple are all converted to strings and
|
- The elements of the resulting tuple are all converted to strings and
|
||||||
concatenated to produce a flat string result.
|
concatenated to produce a flat string result.
|
||||||
|
|
||||||
### Template Interpolation Unwrapping
|
### Template Interpolation Unwrapping
|
||||||
|
@ -865,13 +867,13 @@ template or expression syntax. Unwrapping allows arbitrary expressions to be
|
||||||
used to populate attributes when strings in such languages are interpreted
|
used to populate attributes when strings in such languages are interpreted
|
||||||
as templates.
|
as templates.
|
||||||
|
|
||||||
* `${true}` produces the boolean value `true`
|
- `${true}` produces the boolean value `true`
|
||||||
* `${"${true}"}` produces the boolean value `true`, because both the inner
|
- `${"${true}"}` produces the boolean value `true`, because both the inner
|
||||||
and outer interpolations are subject to unwrapping.
|
and outer interpolations are subject to unwrapping.
|
||||||
* `hello ${true}` produces the string `"hello true"`
|
- `hello ${true}` produces the string `"hello true"`
|
||||||
* `${""}${true}` produces the string `"true"` because there are two
|
- `${""}${true}` produces the string `"true"` because there are two
|
||||||
interpolation sequences, even though one produces an empty result.
|
interpolation sequences, even though one produces an empty result.
|
||||||
* `%{ for v in [true] }${v}%{ endif }` produces the string `true` because
|
- `%{ for v in [true] }${v}%{ endif }` produces the string `true` because
|
||||||
the presence of the `for` directive circumvents the unwrapping even though
|
the presence of the `for` directive circumvents the unwrapping even though
|
||||||
the final result is a single value.
|
the final result is a single value.
|
||||||
|
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user