mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
make vendor-update
This commit is contained in:
parent
0d7505b00e
commit
9ef4d32a9a
84 changed files with 2965 additions and 1067 deletions
24
go.mod
24
go.mod
|
@ -1,31 +1,25 @@
|
||||||
module github.com/VictoriaMetrics/VictoriaMetrics
|
module github.com/VictoriaMetrics/VictoriaMetrics
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.50.0 // indirect
|
cloud.google.com/go v0.51.0 // indirect
|
||||||
cloud.google.com/go/storage v1.4.0
|
cloud.google.com/go/storage v1.5.0
|
||||||
github.com/VictoriaMetrics/fastcache v1.5.5
|
github.com/VictoriaMetrics/fastcache v1.5.5
|
||||||
github.com/VictoriaMetrics/metrics v1.9.3
|
github.com/VictoriaMetrics/metrics v1.9.3
|
||||||
github.com/aws/aws-sdk-go v1.26.8
|
github.com/aws/aws-sdk-go v1.28.3
|
||||||
github.com/cespare/xxhash/v2 v2.1.1
|
github.com/cespare/xxhash/v2 v2.1.1
|
||||||
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 // indirect
|
|
||||||
github.com/golang/snappy v0.0.1
|
github.com/golang/snappy v0.0.1
|
||||||
github.com/jstemmer/go-junit-report v0.9.1 // indirect
|
github.com/klauspost/compress v1.9.7
|
||||||
github.com/klauspost/compress v1.9.4
|
|
||||||
github.com/valyala/fastjson v1.4.5
|
github.com/valyala/fastjson v1.4.5
|
||||||
github.com/valyala/fastrand v1.0.0
|
github.com/valyala/fastrand v1.0.0
|
||||||
github.com/valyala/gozstd v1.6.4
|
github.com/valyala/gozstd v1.6.4
|
||||||
github.com/valyala/histogram v1.0.1
|
github.com/valyala/histogram v1.0.1
|
||||||
github.com/valyala/quicktemplate v1.4.1
|
github.com/valyala/quicktemplate v1.4.1
|
||||||
go.opencensus.io v0.22.2 // indirect
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect
|
||||||
golang.org/x/exp v0.0.0-20191224044220-1fea468a75e9 // indirect
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect
|
golang.org/x/sys v0.0.0-20200116001909-b77594299b42
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 // indirect
|
golang.org/x/tools v0.0.0-20200116062425-473961ec044c // indirect
|
||||||
golang.org/x/sys v0.0.0-20191224085550-c709ea063b76
|
|
||||||
golang.org/x/tools v0.0.0-20191224055732-dd894d0a8a40 // indirect
|
|
||||||
google.golang.org/api v0.15.0
|
google.golang.org/api v0.15.0
|
||||||
google.golang.org/appengine v1.6.5 // indirect
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba // indirect
|
||||||
google.golang.org/genproto v0.0.0-20191223191004-3caeed10a8bf // indirect
|
|
||||||
google.golang.org/grpc v1.26.0 // indirect
|
|
||||||
)
|
)
|
||||||
|
|
||||||
go 1.12
|
go 1.12
|
||||||
|
|
69
go.sum
69
go.sum
|
@ -5,17 +5,20 @@ cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6A
|
||||||
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
|
||||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||||
cloud.google.com/go v0.50.0 h1:0E3eE8MX426vUOs7aHfI7aN1BrIzzzf4ccKCSfSjGmc=
|
|
||||||
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||||
cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU=
|
cloud.google.com/go v0.51.0 h1:PvKAVQWCtlGUSlZkGW3QLelKaWq7KYv/MW1EboG8bfM=
|
||||||
|
cloud.google.com/go v0.51.0/go.mod h1:hWtGJ6gnXH+KgDv+V0zFGDvpi07n3z8ZNj3T1RW0Gcw=
|
||||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||||
|
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
||||||
|
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||||
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
||||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||||
cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8=
|
|
||||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||||
|
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
||||||
|
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||||
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||||
cloud.google.com/go/storage v1.4.0 h1:KDdqY5VTXBTqpSbctVTt0mVvfanP6JZzNzLE0qNY100=
|
cloud.google.com/go/storage v1.5.0 h1:RPUcBvDeYgQFMfQu1eBMq6piD1SXmLH+vK3qjewZPus=
|
||||||
cloud.google.com/go/storage v1.4.0/go.mod h1:ZusYJWlOshgSBGbt6K3GnB3MT3H1xs2id9+TCl4fDBA=
|
cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
|
@ -26,11 +29,14 @@ github.com/VictoriaMetrics/metrics v1.9.3 h1:+1kZnOIb8RY825Nb9q9yMrPcOYuPE2GrZWx
|
||||||
github.com/VictoriaMetrics/metrics v1.9.3/go.mod h1:LU2j9qq7xqZYXz8tF3/RQnB2z2MbZms5TDiIg9/NHiQ=
|
github.com/VictoriaMetrics/metrics v1.9.3/go.mod h1:LU2j9qq7xqZYXz8tF3/RQnB2z2MbZms5TDiIg9/NHiQ=
|
||||||
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
|
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8=
|
||||||
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM=
|
||||||
github.com/aws/aws-sdk-go v1.26.8 h1:W+MPuCFLSO/itZkZ5GFOui0YC1j3lZ507/m5DFPtzE4=
|
github.com/aws/aws-sdk-go v1.28.3 h1:FnkDp+fz4JHWUW3Ust2Wh89RpdGif077Wjis/sMrGKM=
|
||||||
github.com/aws/aws-sdk-go v1.26.8/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
github.com/aws/aws-sdk-go v1.28.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
|
||||||
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
|
||||||
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/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/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=
|
||||||
|
@ -42,8 +48,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
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-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9 h1:uHTyIjqVhYRhLbJ8nIiOJHkEZZ+5YoOsAbD3sk82NiE=
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
||||||
github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
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/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||||
|
@ -56,18 +62,21 @@ github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEW
|
||||||
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/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
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/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
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/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
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/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
|
@ -76,8 +85,8 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X
|
||||||
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/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/compress v1.9.4 h1:xhvAeUPQ2drNUhKtrGdTGNvV9nNafHMUkRyLkzxJoB4=
|
github.com/klauspost/compress v1.9.7 h1:hYW1gP94JUmAhBtJ+LNz5My+gBobDxPR1iVuKug26aA=
|
||||||
github.com/klauspost/compress v1.9.4/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||||
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v0.0.0-20180405133222-e7e905edc00e/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
||||||
|
@ -90,7 +99,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
|
||||||
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
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.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/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk=
|
||||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
|
@ -120,12 +128,10 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 h1:A1gGSx58LAGVHUUsOf7IiR0u8Xb6W51gRwfDBhkdcaw=
|
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587 h1:5Uz0rkjCFu9BC9gCRN7EkwVvhNyQgGWb8KNJrPwBoHY=
|
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/exp v0.0.0-20191224044220-1fea468a75e9 h1:HLuLY2KniBsHW28uXd1i2UZKjifeJUy//P/wTK6AJwI=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
|
||||||
golang.org/x/exp v0.0.0-20191224044220-1fea468a75e9/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
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=
|
||||||
|
@ -134,7 +140,6 @@ golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTk
|
||||||
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
|
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||||
|
@ -155,19 +160,19 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
|
|
||||||
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa h1:F+8P+gmewFQYRk6JoLQLwjBCTu3mcIURZfNkVweuRKA=
|
||||||
|
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
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-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
|
|
||||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -180,8 +185,10 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191224085550-c709ea063b76 h1:Dho5nD6R3PcW2SH1or8vS0dszDaXRxIw55lBX7XiE5g=
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20191224085550-c709ea063b76/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20200116001909-b77594299b42 h1:vEOn+mP2zCOVzKckCZy6YsCtDblrpj/w7B9nxGNELpg=
|
||||||
|
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
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/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
@ -203,18 +210,20 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
|
||||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20191224055732-dd894d0a8a40 h1:UyP2XDSgSc8ldYCxAK735zQxeH3Gd81sK7Iy7AoaVxk=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/tools v0.0.0-20191224055732-dd894d0a8a40/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20200116062425-473961ec044c h1:D0OxfnjPaEGt7AluXNompYUYGhoY3u6+bValgqfd1vE=
|
||||||
|
golang.org/x/tools v0.0.0-20200116062425-473961ec044c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.14.0 h1:uMf5uLi4eQMRrMKhCplNik4U4H8Z6C1br3zOtAa/aDE=
|
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
||||||
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
@ -232,10 +241,12 @@ google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRn
|
||||||
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||||
|
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191223191004-3caeed10a8bf h1:1x8rC5/IgdLMPbPTvlQTN28+rcy8XL9Q19UWUMDyqYs=
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191223191004-3caeed10a8bf/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba h1:pRj9OXZbwNtbtZtOB4dLwfK4u+EVRMvP+e9zKkg2grM=
|
||||||
|
google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||||
|
|
8
vendor/cloud.google.com/go/CHANGES.md
generated
vendored
8
vendor/cloud.google.com/go/CHANGES.md
generated
vendored
|
@ -1,5 +1,13 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
## v0.51.0
|
||||||
|
|
||||||
|
- secretmanager:
|
||||||
|
- add IAM helper for generic resource IAM handle
|
||||||
|
- cloudbuild:
|
||||||
|
- migrate to microgen in a major version
|
||||||
|
- Various updates to autogenerated clients.
|
||||||
|
|
||||||
## v0.50.0
|
## v0.50.0
|
||||||
|
|
||||||
- profiler:
|
- profiler:
|
||||||
|
|
26
vendor/cloud.google.com/go/go.mod
generated
vendored
26
vendor/cloud.google.com/go/go.mod
generated
vendored
|
@ -7,24 +7,26 @@ require (
|
||||||
cloud.google.com/go/datastore v1.0.0
|
cloud.google.com/go/datastore v1.0.0
|
||||||
cloud.google.com/go/pubsub v1.0.1
|
cloud.google.com/go/pubsub v1.0.1
|
||||||
cloud.google.com/go/storage v1.0.0
|
cloud.google.com/go/storage v1.0.0
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 // indirect
|
||||||
github.com/golang/mock v1.3.1
|
github.com/golang/mock v1.3.1
|
||||||
github.com/golang/protobuf v1.3.2
|
github.com/golang/protobuf v1.3.2
|
||||||
github.com/google/go-cmp v0.3.0
|
github.com/google/go-cmp v0.3.1
|
||||||
github.com/google/martian v2.1.0+incompatible
|
github.com/google/martian v2.1.0+incompatible
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5
|
github.com/googleapis/gax-go/v2 v2.0.5
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024
|
github.com/jstemmer/go-junit-report v0.9.1
|
||||||
go.opencensus.io v0.22.0
|
go.opencensus.io v0.22.2
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299
|
||||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
|
||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e // indirect
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e // indirect
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 // indirect
|
||||||
golang.org/x/text v0.3.2
|
golang.org/x/text v0.3.2
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4
|
||||||
google.golang.org/api v0.14.0
|
google.golang.org/api v0.15.0
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1
|
google.golang.org/appengine v1.6.5 // indirect
|
||||||
google.golang.org/grpc v1.21.1
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb
|
||||||
|
google.golang.org/grpc v1.26.0
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3
|
honnef.co/go/tools v0.0.1-2019.2.3
|
||||||
)
|
)
|
||||||
|
|
59
vendor/cloud.google.com/go/go.sum
generated
vendored
59
vendor/cloud.google.com/go/go.sum
generated
vendored
|
@ -17,10 +17,20 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
|
github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
|
||||||
|
github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/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/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
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-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
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 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk=
|
||||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
|
@ -39,12 +49,16 @@ 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/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57 h1:eqyIo2HjKhKe/mJzTG8n4VqvLXIOEG+SLdDqX7xGtkY=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57 h1:eqyIo2HjKhKe/mJzTG8n4VqvLXIOEG+SLdDqX7xGtkY=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f h1:Jnx61latede7zDD3DiiP4gmNz33uK0U5HDUaF0a/HVQ=
|
||||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc h1:DLpL8pWq0v4JYoRpEhDfsJhhJyGKCcQM2WPW2TJs31c=
|
||||||
|
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc=
|
github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc=
|
||||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||||
|
@ -54,19 +68,28 @@ github.com/hashicorp/golang-lru v0.5.0 h1:CL2msUPvZTLb5O648aiLNJw3hnBxN2+1Jq8rCO
|
||||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
|
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
|
||||||
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
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/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
|
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/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg=
|
go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=
|
go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
|
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
|
||||||
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
@ -78,8 +101,8 @@ golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522 h1:OeRHuibLsmZkFj773W4LcfAGs
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587 h1:5Uz0rkjCFu9BC9gCRN7EkwVvhNyQgGWb8KNJrPwBoHY=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
|
||||||
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
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=
|
||||||
|
@ -111,13 +134,15 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 h1:Ao/3l156eZf2AW5wK8a7/smtodRU+gha3+BeqJ69lRk=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
|
||||||
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
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-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421 h1:Wo7BWFiOk0QRFMLYMqJGFMd9CgUAcGx7V+qEg/h5IBI=
|
||||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
@ -138,8 +163,9 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e h1:D5TXcfTk7xF7hvieo4QErS3qqCB4teTffacDWr7CI+0=
|
golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 h1:JA8d3MPx/IToSyXZG/RhwYEtfrKO1Fxrqe8KrkiLXKM=
|
||||||
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
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 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To=
|
||||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
@ -159,6 +185,7 @@ golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3
|
||||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c h1:97SnQk1GYRXJgvwZ8fadnxDOWfKvkNQHH3CtZntPSrM=
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c h1:97SnQk1GYRXJgvwZ8fadnxDOWfKvkNQHH3CtZntPSrM=
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0 h1:Dh6fw+p6FyRl5x/FvNswO1ji0lIGzm3KP8Y9VkS9PTE=
|
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0 h1:Dh6fw+p6FyRl5x/FvNswO1ji0lIGzm3KP8Y9VkS9PTE=
|
||||||
|
@ -168,8 +195,8 @@ golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff h1:On1qIo75ByTwFJ4/W2bIqHc
|
||||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4 h1:Toz2IK7k8rbltAXwNAxKcn9OzqyNfMUhUNjz3sL0NMk=
|
||||||
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
|
@ -178,8 +205,8 @@ google.golang.org/api v0.8.0 h1:VGGbLNyPF7dvYHhcUGYBBGCRDDK0RRJAI6KCvo0CL+E=
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8=
|
google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8=
|
||||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.14.0 h1:uMf5uLi4eQMRrMKhCplNik4U4H8Z6C1br3zOtAa/aDE=
|
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
||||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
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.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508=
|
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/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
|
@ -187,6 +214,8 @@ google.golang.org/appengine v1.5.0 h1:KxkO13IPW4Lslp2bz+KHP2E3gtFlrIGNThxkZQ3g+4
|
||||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
|
google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
|
||||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||||
|
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
|
||||||
|
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
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-20190307195333-5fe7a883aa19 h1:Lj2SnHtxkRGJDqnGaSjo+CCdIieEnwVazbOXILwQemk=
|
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19 h1:Lj2SnHtxkRGJDqnGaSjo+CCdIieEnwVazbOXILwQemk=
|
||||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
@ -200,22 +229,28 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2El
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U=
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1 h1:aQktFqmDE2yjveXJlVIfslDFmFnUXSqG0i6KRcJAeMc=
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb h1:ADPHZzpzM4tk4V4S5cnCrr5SwzvlrPRmqqCuJDB8UTs=
|
||||||
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
google.golang.org/grpc v1.19.0 h1:cfg4PD8YEdSFnm7qLV4++93WcmhH2nIUhMjhdCvl3j8=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU=
|
google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
||||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||||
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
|
google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
|
||||||
|
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
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 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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a h1:/8zB6iBfHCl1qAnEAWwGPNrUvapuy6CPla1VM0k8hQw=
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a h1:/8zB6iBfHCl1qAnEAWwGPNrUvapuy6CPla1VM0k8hQw=
|
||||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA=
|
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a h1:LJwr7TCTghdatWv40WobzlKXc9c4s8oGa7QKJUtHhWA=
|
||||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
|
rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
|
||||||
|
|
8
vendor/cloud.google.com/go/storage/CHANGES.md
generated
vendored
8
vendor/cloud.google.com/go/storage/CHANGES.md
generated
vendored
|
@ -1,5 +1,11 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
## v1.5.0
|
||||||
|
|
||||||
|
- Honor WithEndpoint client option for reads as well as writes.
|
||||||
|
- Add archive storage class to docs.
|
||||||
|
- Make fixes to storage benchwrapper.
|
||||||
|
|
||||||
## v1.4.0
|
## v1.4.0
|
||||||
|
|
||||||
- When listing objects in a bucket, allow callers to specify which attributes
|
- When listing objects in a bucket, allow callers to specify which attributes
|
||||||
|
@ -40,4 +46,4 @@
|
||||||
## v1.0.0
|
## v1.0.0
|
||||||
|
|
||||||
This is the first tag to carve out storage as its own module. See:
|
This is the first tag to carve out storage as its own module. See:
|
||||||
https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository.
|
https://github.com/golang/go/wiki/Modules#is-it-possible-to-add-a-module-to-a-multi-module-repository.
|
||||||
|
|
8
vendor/cloud.google.com/go/storage/bucket.go
generated
vendored
8
vendor/cloud.google.com/go/storage/bucket.go
generated
vendored
|
@ -275,8 +275,10 @@ type BucketAttrs struct {
|
||||||
|
|
||||||
// StorageClass is the default storage class of the bucket. This defines
|
// StorageClass is the default storage class of the bucket. This defines
|
||||||
// how objects in the bucket are stored and determines the SLA
|
// how objects in the bucket are stored and determines the SLA
|
||||||
// and the cost of storage. Typical values are "NEARLINE", "COLDLINE" and
|
// and the cost of storage. Typical values are "STANDARD", "NEARLINE",
|
||||||
// "STANDARD". Defaults to "STANDARD".
|
// "COLDLINE" and "ARCHIVE". Defaults to "STANDARD".
|
||||||
|
// See https://cloud.google.com/storage/docs/storage-classes for all
|
||||||
|
// valid values.
|
||||||
StorageClass string
|
StorageClass string
|
||||||
|
|
||||||
// Created is the creation time of the bucket.
|
// Created is the creation time of the bucket.
|
||||||
|
@ -459,7 +461,7 @@ type LifecycleCondition struct {
|
||||||
// MatchesStorageClasses is the condition matching the object's storage
|
// MatchesStorageClasses is the condition matching the object's storage
|
||||||
// class.
|
// class.
|
||||||
//
|
//
|
||||||
// Values include "NEARLINE", "COLDLINE" and "STANDARD".
|
// Values include "STANDARD", "NEARLINE", "COLDLINE" and "ARCHIVE".
|
||||||
MatchesStorageClasses []string
|
MatchesStorageClasses []string
|
||||||
|
|
||||||
// NumNewerVersions is the condition matching objects with a number of newer versions.
|
// NumNewerVersions is the condition matching objects with a number of newer versions.
|
||||||
|
|
25
vendor/cloud.google.com/go/storage/go.mod
generated
vendored
25
vendor/cloud.google.com/go/storage/go.mod
generated
vendored
|
@ -3,15 +3,22 @@ module cloud.google.com/go/storage
|
||||||
go 1.11
|
go 1.11
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go v0.46.3
|
cloud.google.com/go v0.50.0
|
||||||
|
cloud.google.com/go/bigquery v1.3.0 // indirect
|
||||||
|
cloud.google.com/go/pubsub v1.1.0 // indirect
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 // indirect
|
||||||
github.com/golang/protobuf v1.3.2
|
github.com/golang/protobuf v1.3.2
|
||||||
github.com/google/go-cmp v0.3.0
|
github.com/google/go-cmp v0.3.1
|
||||||
github.com/googleapis/gax-go/v2 v2.0.5
|
github.com/googleapis/gax-go/v2 v2.0.5
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 // indirect
|
github.com/jstemmer/go-junit-report v0.9.1 // indirect
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de // indirect
|
go.opencensus.io v0.22.2 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 // indirect
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2 // indirect
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 // indirect
|
||||||
google.golang.org/api v0.14.0
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 // indirect
|
||||||
google.golang.org/grpc v1.21.1
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4 // indirect
|
||||||
|
google.golang.org/api v0.15.0
|
||||||
|
google.golang.org/appengine v1.6.5 // indirect
|
||||||
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb
|
||||||
|
google.golang.org/grpc v1.26.0
|
||||||
)
|
)
|
||||||
|
|
70
vendor/cloud.google.com/go/storage/go.sum
generated
vendored
70
vendor/cloud.google.com/go/storage/go.sum
generated
vendored
|
@ -6,20 +6,35 @@ cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxK
|
||||||
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
|
||||||
cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y=
|
cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y=
|
||||||
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
|
||||||
|
cloud.google.com/go v0.50.0 h1:0E3eE8MX426vUOs7aHfI7aN1BrIzzzf4ccKCSfSjGmc=
|
||||||
|
cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To=
|
||||||
cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU=
|
cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU=
|
||||||
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o=
|
||||||
|
cloud.google.com/go/bigquery v1.3.0 h1:sAbMqjY1PEQKZBWfbu6Y6bsupJ9c4QdHnzg/VvYTLcE=
|
||||||
|
cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE=
|
||||||
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM=
|
||||||
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE=
|
||||||
cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8=
|
cloud.google.com/go/pubsub v1.0.1 h1:W9tAK3E57P75u0XLLR82LZyw8VpAnhmyTOxW9qzmyj8=
|
||||||
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I=
|
||||||
|
cloud.google.com/go/pubsub v1.1.0 h1:9/vpR43S4aJaROxqQHQ3nH9lfyKKV0dC3vOmnw8ebQQ=
|
||||||
|
cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw=
|
||||||
|
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
|
||||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||||
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
|
||||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||||
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||||
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
|
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-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7 h1:5ZkaAPbicIKTF2I64qf5Fh8Aa83Q/dnOafMYV0OMwjA=
|
||||||
|
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||||
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/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||||
|
@ -32,6 +47,8 @@ github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ
|
||||||
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/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
|
github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg=
|
||||||
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
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/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
@ -45,24 +62,36 @@ github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+
|
||||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
|
||||||
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
|
||||||
|
github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o=
|
||||||
|
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||||
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/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/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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
|
||||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||||
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
|
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=
|
go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4=
|
||||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||||
|
go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs=
|
||||||
|
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
|
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979 h1:Agxu5KLo8o7Bb634SVDnhIfpTvxmzUwhbYAzBvXt6h4=
|
||||||
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek=
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136 h1:A1gGSx58LAGVHUUsOf7IiR0u8Xb6W51gRwfDBhkdcaw=
|
|
||||||
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
|
||||||
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587 h1:5Uz0rkjCFu9BC9gCRN7EkwVvhNyQgGWb8KNJrPwBoHY=
|
||||||
|
golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299 h1:zQpM52jfKHG6II1ISZY1ZcpygvuSFZpLwfluuF89XOg=
|
||||||
|
golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
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=
|
||||||
|
@ -72,12 +101,14 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl
|
||||||
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac h1:8R1esu+8QioDxo4E4mX6bFztO+dMTM49DNAaWfO5OeY=
|
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac h1:8R1esu+8QioDxo4E4mX6bFztO+dMTM49DNAaWfO5OeY=
|
||||||
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
|
|
||||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||||
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f h1:J5lckAjkw6qYlOZNj90mLYNTEKDvWeuc1yieZ8qUzUE=
|
||||||
|
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||||
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
|
||||||
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||||
|
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||||
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-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-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
|
@ -89,16 +120,23 @@ golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn
|
||||||
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI=
|
||||||
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553 h1:efeOvDhwQ29Dj3SdAV/MJf8oukgn+8D8WgaCaRMchF8=
|
||||||
|
golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
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-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0=
|
||||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6 h1:pE8b58s1HRDMi8RDc79m0HISf9D4TzseP40cEA6IGfs=
|
||||||
|
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||||
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/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU=
|
||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
|
||||||
|
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
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-20190215142949-d0b11bdaac8a/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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
@ -108,6 +146,9 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0 h1:HyfiK1WMnHj5FXFXatD+Qs1A/xC2Run6RzeW1SyHxpc=
|
||||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8 h1:JA8d3MPx/IToSyXZG/RhwYEtfrKO1Fxrqe8KrkiLXKM=
|
||||||
|
golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
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/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
|
||||||
|
@ -122,6 +163,7 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3
|
||||||
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||||
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
|
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
|
||||||
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
|
||||||
|
@ -129,21 +171,30 @@ golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtn
|
||||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff h1:On1qIo75ByTwFJ4/W2bIqHcwJ9XAqtSWUs8GwRrIhtc=
|
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff h1:On1qIo75ByTwFJ4/W2bIqHcwJ9XAqtSWUs8GwRrIhtc=
|
||||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2 h1:EtTFh6h4SAKemS+CURDMTDIANuduG5zKEXShyy18bGA=
|
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4 h1:Toz2IK7k8rbltAXwNAxKcn9OzqyNfMUhUNjz3sL0NMk=
|
||||||
|
golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||||
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8=
|
google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8=
|
||||||
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
|
||||||
google.golang.org/api v0.14.0 h1:uMf5uLi4eQMRrMKhCplNik4U4H8Z6C1br3zOtAa/aDE=
|
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
|
google.golang.org/api v0.15.0 h1:yzlyyDW/J0w8yNFJIhiAJy4kq74S+1DOLdawELNxFMA=
|
||||||
|
google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
|
||||||
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.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||||
google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
|
google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I=
|
||||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||||
|
google.golang.org/appengine v1.6.5 h1:tycE03LOZYQNhDpS27tcQdAzLCVMaj7QT2SXxebnpCM=
|
||||||
|
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||||
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-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||||
|
@ -153,17 +204,26 @@ google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98
|
||||||
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U=
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51 h1:Ex1mq5jaJof+kRnYi3SlYJ8KKa9Ao3NHyIT5XJ1gF6U=
|
||||||
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8=
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9 h1:6XzpBoANz1NqMNfDXzc2QmHmbb1vyMsvRfoP5rM+K1I=
|
google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb h1:ADPHZzpzM4tk4V4S5cnCrr5SwzvlrPRmqqCuJDB8UTs=
|
||||||
|
google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc=
|
||||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||||
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
google.golang.org/grpc v1.21.1 h1:j6XxA85m/6txkUCHvzlV5f+HBNl/1r5cZ2A/3IEFOO8=
|
||||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||||
|
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||||
|
google.golang.org/grpc v1.26.0 h1:2dTRdpdFEEhJYQD8EMLB61nnrzSCTbG38PhqdhvOltg=
|
||||||
|
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
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/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||||
|
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||||
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
|
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM=
|
||||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
|
|
22
vendor/cloud.google.com/go/storage/storage.go
generated
vendored
22
vendor/cloud.google.com/go/storage/storage.go
generated
vendored
|
@ -121,7 +121,14 @@ func NewClient(ctx context.Context, opts ...option.ClientOption) (*Client, error
|
||||||
// TODO: remove when the raw client uses this endpoint as its default (~end of 2020)
|
// TODO: remove when the raw client uses this endpoint as its default (~end of 2020)
|
||||||
rawService.BasePath = "https://storage.googleapis.com/storage/v1/"
|
rawService.BasePath = "https://storage.googleapis.com/storage/v1/"
|
||||||
} else {
|
} else {
|
||||||
|
// If the endpoint has been set explicitly, use this for the BasePath
|
||||||
|
// as well as readHost
|
||||||
rawService.BasePath = ep
|
rawService.BasePath = ep
|
||||||
|
u, err := url.Parse(ep)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("supplied endpoint %v is not valid: %v", ep, err)
|
||||||
|
}
|
||||||
|
readHost = u.Hostname()
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Client{
|
return &Client{
|
||||||
|
@ -995,11 +1002,12 @@ type ObjectAttrs struct {
|
||||||
// of a particular object. This field is read-only.
|
// of a particular object. This field is read-only.
|
||||||
Metageneration int64
|
Metageneration int64
|
||||||
|
|
||||||
// StorageClass is the storage class of the object.
|
// StorageClass is the storage class of the object. This defines
|
||||||
// This value defines how objects in the bucket are stored and
|
// how objects are stored and determines the SLA and the cost of storage.
|
||||||
// determines the SLA and the cost of storage. Typical values are
|
// Typical values are "STANDARD", "NEARLINE", "COLDLINE" and "ARCHIVE".
|
||||||
// "NEARLINE", "COLDLINE" and "STANDARD".
|
// Defaults to "STANDARD".
|
||||||
// It defaults to "STANDARD".
|
// See https://cloud.google.com/storage/docs/storage-classes for all
|
||||||
|
// valid values.
|
||||||
StorageClass string
|
StorageClass string
|
||||||
|
|
||||||
// Created is the time the object was created. This field is read-only.
|
// Created is the time the object was created. This field is read-only.
|
||||||
|
@ -1155,7 +1163,7 @@ var attrToFieldMap = map[string]string{
|
||||||
"ContentEncoding": "contentEncoding",
|
"ContentEncoding": "contentEncoding",
|
||||||
"ContentDisposition": "contentDisposition",
|
"ContentDisposition": "contentDisposition",
|
||||||
"Size": "size",
|
"Size": "size",
|
||||||
"MD5": "md5hash",
|
"MD5": "md5Hash",
|
||||||
"CRC32C": "crc32c",
|
"CRC32C": "crc32c",
|
||||||
"MediaLink": "mediaLink",
|
"MediaLink": "mediaLink",
|
||||||
"Metadata": "metadata",
|
"Metadata": "metadata",
|
||||||
|
@ -1166,7 +1174,7 @@ var attrToFieldMap = map[string]string{
|
||||||
"KMSKeyName": "kmsKeyName",
|
"KMSKeyName": "kmsKeyName",
|
||||||
"Created": "timeCreated",
|
"Created": "timeCreated",
|
||||||
"Deleted": "timeDeleted",
|
"Deleted": "timeDeleted",
|
||||||
"Updated": "timeUpdated",
|
"Updated": "updated",
|
||||||
"Etag": "etag",
|
"Etag": "etag",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
7
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
7
vendor/github.com/aws/aws-sdk-go/aws/config.go
generated
vendored
|
@ -165,6 +165,13 @@ type Config struct {
|
||||||
// in the ARN, when an ARN is provided as an argument to a bucket parameter.
|
// in the ARN, when an ARN is provided as an argument to a bucket parameter.
|
||||||
S3UseARNRegion *bool
|
S3UseARNRegion *bool
|
||||||
|
|
||||||
|
// Set this to `true` to enable the SDK to unmarshal API response header maps to
|
||||||
|
// normalized lower case map keys.
|
||||||
|
//
|
||||||
|
// For example S3's X-Amz-Meta prefixed header will be unmarshaled to lower case
|
||||||
|
// Metadata member's map keys. The value of the header in the map is unaffected.
|
||||||
|
LowerCaseHeaderMaps *bool
|
||||||
|
|
||||||
// Set this to `true` to disable the EC2Metadata client from overriding the
|
// Set this to `true` to disable the EC2Metadata client from overriding the
|
||||||
// default http.Client's Timeout. This is helpful if you do not want the
|
// default http.Client's Timeout. This is helpful if you do not want the
|
||||||
// EC2Metadata client to create a new http.Client. This options is only
|
// EC2Metadata client to create a new http.Client. This options is only
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/corehandlers/handlers.go
generated
vendored
|
@ -161,7 +161,7 @@ func handleSendError(r *request.Request, err error) {
|
||||||
}
|
}
|
||||||
// Catch all request errors, and let the default retrier determine
|
// Catch all request errors, and let the default retrier determine
|
||||||
// if the error is retryable.
|
// if the error is retryable.
|
||||||
r.Error = awserr.New("RequestError", "send request failed", err)
|
r.Error = awserr.New(request.ErrCodeRequestError, "send request failed", err)
|
||||||
|
|
||||||
// Override the error with a context canceled error, if that was canceled.
|
// Override the error with a context canceled error, if that was canceled.
|
||||||
ctx := r.Context()
|
ctx := r.Context()
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/csm/reporter.go
generated
vendored
|
@ -89,7 +89,7 @@ func getMetricException(err awserr.Error) metricException {
|
||||||
code := err.Code()
|
code := err.Code()
|
||||||
|
|
||||||
switch code {
|
switch code {
|
||||||
case "RequestError",
|
case request.ErrCodeRequestError,
|
||||||
request.ErrCodeSerialization,
|
request.ErrCodeSerialization,
|
||||||
request.CanceledErrorCode:
|
request.CanceledErrorCode:
|
||||||
return sdkException{
|
return sdkException{
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/service.go
generated
vendored
|
@ -80,8 +80,10 @@ func NewClient(cfg aws.Config, handlers request.Handlers, endpoint, signingRegio
|
||||||
// use a shorter timeout than default because the metadata
|
// use a shorter timeout than default because the metadata
|
||||||
// service is local if it is running, and to fail faster
|
// service is local if it is running, and to fail faster
|
||||||
// if not running on an ec2 instance.
|
// if not running on an ec2 instance.
|
||||||
Timeout: 5 * time.Second,
|
Timeout: 1 * time.Second,
|
||||||
}
|
}
|
||||||
|
// max number of retries on the client operation
|
||||||
|
cfg.MaxRetries = aws.Int(2)
|
||||||
}
|
}
|
||||||
|
|
||||||
svc := &EC2Metadata{
|
svc := &EC2Metadata{
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/token_provider.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/aws/ec2metadata/token_provider.go
generated
vendored
|
@ -62,7 +62,7 @@ func (t *tokenProvider) fetchTokenHandler(r *request.Request) {
|
||||||
|
|
||||||
// Check if request timed out while waiting for response
|
// Check if request timed out while waiting for response
|
||||||
if e, ok := requestFailureError.OrigErr().(awserr.Error); ok {
|
if e, ok := requestFailureError.OrigErr().(awserr.Error); ok {
|
||||||
if e.Code() == "RequestError" {
|
if e.Code() == request.ErrCodeRequestError {
|
||||||
atomic.StoreUint32(&t.disabled, 1)
|
atomic.StoreUint32(&t.disabled, 1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
19
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
19
vendor/github.com/aws/aws-sdk-go/aws/endpoints/defaults.go
generated
vendored
|
@ -2839,11 +2839,18 @@ var awsPartition = partition{
|
||||||
"outposts": service{
|
"outposts": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
|
"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-north-1": endpoint{},
|
||||||
"eu-west-1": endpoint{},
|
"eu-west-1": endpoint{},
|
||||||
|
"eu-west-2": endpoint{},
|
||||||
|
"eu-west-3": endpoint{},
|
||||||
|
"me-south-1": 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{},
|
||||||
|
@ -2996,6 +3003,7 @@ var awsPartition = partition{
|
||||||
"ram": service{
|
"ram": service{
|
||||||
|
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -3007,6 +3015,7 @@ 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{},
|
||||||
|
"me-south-1": endpoint{},
|
||||||
"sa-east-1": endpoint{},
|
"sa-east-1": endpoint{},
|
||||||
"us-east-1": endpoint{},
|
"us-east-1": endpoint{},
|
||||||
"us-east-2": endpoint{},
|
"us-east-2": endpoint{},
|
||||||
|
@ -3162,6 +3171,7 @@ var awsPartition = partition{
|
||||||
Protocols: []string{"https"},
|
Protocols: []string{"https"},
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
"ap-east-1": endpoint{},
|
||||||
"ap-northeast-1": endpoint{},
|
"ap-northeast-1": endpoint{},
|
||||||
"ap-northeast-2": endpoint{},
|
"ap-northeast-2": endpoint{},
|
||||||
"ap-south-1": endpoint{},
|
"ap-south-1": endpoint{},
|
||||||
|
@ -4561,6 +4571,13 @@ var awscnPartition = partition{
|
||||||
"cn-north-1": endpoint{},
|
"cn-north-1": endpoint{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"health": service{
|
||||||
|
|
||||||
|
Endpoints: endpoints{
|
||||||
|
"cn-north-1": endpoint{},
|
||||||
|
"cn-northwest-1": endpoint{},
|
||||||
|
},
|
||||||
|
},
|
||||||
"iam": service{
|
"iam": service{
|
||||||
PartitionEndpoint: "aws-cn-global",
|
PartitionEndpoint: "aws-cn-global",
|
||||||
IsRegionalized: boxedFalse,
|
IsRegionalized: boxedFalse,
|
||||||
|
@ -5715,7 +5732,6 @@ var awsisoPartition = partition{
|
||||||
},
|
},
|
||||||
"application-autoscaling": service{
|
"application-autoscaling": service{
|
||||||
Defaults: endpoint{
|
Defaults: endpoint{
|
||||||
Hostname: "autoscaling.us-iso-east-1.c2s.ic.gov",
|
|
||||||
Protocols: []string{"http", "https"},
|
Protocols: []string{"http", "https"},
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
@ -6044,7 +6060,6 @@ var awsisobPartition = partition{
|
||||||
Services: services{
|
Services: services{
|
||||||
"application-autoscaling": service{
|
"application-autoscaling": service{
|
||||||
Defaults: endpoint{
|
Defaults: endpoint{
|
||||||
Hostname: "autoscaling.us-isob-east-1.sc2s.sgov.gov",
|
|
||||||
Protocols: []string{"http", "https"},
|
Protocols: []string{"http", "https"},
|
||||||
},
|
},
|
||||||
Endpoints: endpoints{
|
Endpoints: endpoints{
|
||||||
|
|
21
vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
generated
vendored
21
vendor/github.com/aws/aws-sdk-go/aws/request/handlers.go
generated
vendored
|
@ -10,6 +10,7 @@ import (
|
||||||
type Handlers struct {
|
type Handlers struct {
|
||||||
Validate HandlerList
|
Validate HandlerList
|
||||||
Build HandlerList
|
Build HandlerList
|
||||||
|
BuildStream HandlerList
|
||||||
Sign HandlerList
|
Sign HandlerList
|
||||||
Send HandlerList
|
Send HandlerList
|
||||||
ValidateResponse HandlerList
|
ValidateResponse HandlerList
|
||||||
|
@ -28,6 +29,7 @@ func (h *Handlers) Copy() Handlers {
|
||||||
return Handlers{
|
return Handlers{
|
||||||
Validate: h.Validate.copy(),
|
Validate: h.Validate.copy(),
|
||||||
Build: h.Build.copy(),
|
Build: h.Build.copy(),
|
||||||
|
BuildStream: h.BuildStream.copy(),
|
||||||
Sign: h.Sign.copy(),
|
Sign: h.Sign.copy(),
|
||||||
Send: h.Send.copy(),
|
Send: h.Send.copy(),
|
||||||
ValidateResponse: h.ValidateResponse.copy(),
|
ValidateResponse: h.ValidateResponse.copy(),
|
||||||
|
@ -46,6 +48,7 @@ func (h *Handlers) Copy() Handlers {
|
||||||
func (h *Handlers) Clear() {
|
func (h *Handlers) Clear() {
|
||||||
h.Validate.Clear()
|
h.Validate.Clear()
|
||||||
h.Build.Clear()
|
h.Build.Clear()
|
||||||
|
h.BuildStream.Clear()
|
||||||
h.Send.Clear()
|
h.Send.Clear()
|
||||||
h.Sign.Clear()
|
h.Sign.Clear()
|
||||||
h.Unmarshal.Clear()
|
h.Unmarshal.Clear()
|
||||||
|
@ -67,6 +70,9 @@ func (h *Handlers) IsEmpty() bool {
|
||||||
if h.Build.Len() != 0 {
|
if h.Build.Len() != 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
if h.BuildStream.Len() != 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
if h.Send.Len() != 0 {
|
if h.Send.Len() != 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -320,3 +326,18 @@ func MakeAddToUserAgentFreeFormHandler(s string) func(*Request) {
|
||||||
AddToUserAgent(r, s)
|
AddToUserAgent(r, s)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WithSetRequestHeaders updates the operation request's HTTP header to contain
|
||||||
|
// the header key value pairs provided. If the header key already exists in the
|
||||||
|
// request's HTTP header set, the existing value(s) will be replaced.
|
||||||
|
func WithSetRequestHeaders(h map[string]string) Option {
|
||||||
|
return withRequestHeader(h).SetRequestHeaders
|
||||||
|
}
|
||||||
|
|
||||||
|
type withRequestHeader map[string]string
|
||||||
|
|
||||||
|
func (h withRequestHeader) SetRequestHeaders(r *Request) {
|
||||||
|
for k, v := range h {
|
||||||
|
r.HTTPRequest.Header[k] = []string{v}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
16
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
16
vendor/github.com/aws/aws-sdk-go/aws/request/request.go
generated
vendored
|
@ -36,6 +36,10 @@ const (
|
||||||
// API request that was canceled. Requests given a aws.Context may
|
// API request that was canceled. Requests given a aws.Context may
|
||||||
// return this error when canceled.
|
// return this error when canceled.
|
||||||
CanceledErrorCode = "RequestCanceled"
|
CanceledErrorCode = "RequestCanceled"
|
||||||
|
|
||||||
|
// ErrCodeRequestError is an error preventing the SDK from continuing to
|
||||||
|
// process the request.
|
||||||
|
ErrCodeRequestError = "RequestError"
|
||||||
)
|
)
|
||||||
|
|
||||||
// A Request is the service request to be made.
|
// A Request is the service request to be made.
|
||||||
|
@ -51,6 +55,7 @@ type Request struct {
|
||||||
HTTPRequest *http.Request
|
HTTPRequest *http.Request
|
||||||
HTTPResponse *http.Response
|
HTTPResponse *http.Response
|
||||||
Body io.ReadSeeker
|
Body io.ReadSeeker
|
||||||
|
streamingBody io.ReadCloser
|
||||||
BodyStart int64 // offset from beginning of Body that the request body starts
|
BodyStart int64 // offset from beginning of Body that the request body starts
|
||||||
Params interface{}
|
Params interface{}
|
||||||
Error error
|
Error error
|
||||||
|
@ -295,6 +300,13 @@ func (r *Request) SetReaderBody(reader io.ReadSeeker) {
|
||||||
r.ResetBody()
|
r.ResetBody()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SetStreamingBody set the reader to be used for the request that will stream
|
||||||
|
// bytes to the server. Request's Body must not be set to any reader.
|
||||||
|
func (r *Request) SetStreamingBody(reader io.ReadCloser) {
|
||||||
|
r.streamingBody = reader
|
||||||
|
r.SetReaderBody(aws.ReadSeekCloser(reader))
|
||||||
|
}
|
||||||
|
|
||||||
// Presign returns the request's signed URL. Error will be returned
|
// Presign returns the request's signed URL. Error will be returned
|
||||||
// if the signing fails. The expire parameter is only used for presigned Amazon
|
// if the signing fails. The expire parameter is only used for presigned Amazon
|
||||||
// S3 API requests. All other AWS services will use a fixed expiration
|
// S3 API requests. All other AWS services will use a fixed expiration
|
||||||
|
@ -419,6 +431,10 @@ func (r *Request) Sign() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Request) getNextRequestBody() (body io.ReadCloser, err error) {
|
func (r *Request) getNextRequestBody() (body io.ReadCloser, err error) {
|
||||||
|
if r.streamingBody != nil {
|
||||||
|
return r.streamingBody, nil
|
||||||
|
}
|
||||||
|
|
||||||
if r.safeBody != nil {
|
if r.safeBody != nil {
|
||||||
r.safeBody.Close()
|
r.safeBody.Close()
|
||||||
}
|
}
|
||||||
|
|
4
vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
generated
vendored
4
vendor/github.com/aws/aws-sdk-go/aws/request/retryer.go
generated
vendored
|
@ -75,7 +75,7 @@ func (d noOpRetryer) RetryRules(_ *Request) time.Duration {
|
||||||
// retryableCodes is a collection of service response codes which are retry-able
|
// retryableCodes is a collection of service response codes which are retry-able
|
||||||
// without any further action.
|
// without any further action.
|
||||||
var retryableCodes = map[string]struct{}{
|
var retryableCodes = map[string]struct{}{
|
||||||
"RequestError": {},
|
ErrCodeRequestError: {},
|
||||||
"RequestTimeout": {},
|
"RequestTimeout": {},
|
||||||
ErrCodeResponseTimeout: {},
|
ErrCodeResponseTimeout: {},
|
||||||
"RequestTimeoutException": {}, // Glacier's flavor of RequestTimeout
|
"RequestTimeoutException": {}, // Glacier's flavor of RequestTimeout
|
||||||
|
@ -178,7 +178,7 @@ func shouldRetryError(origErr error) bool {
|
||||||
var shouldRetry bool
|
var shouldRetry bool
|
||||||
if origErr != nil {
|
if origErr != nil {
|
||||||
shouldRetry = shouldRetryError(origErr)
|
shouldRetry = shouldRetryError(origErr)
|
||||||
if err.Code() == "RequestError" && !shouldRetry {
|
if err.Code() == ErrCodeRequestError && !shouldRetry {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
14
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
14
vendor/github.com/aws/aws-sdk-go/aws/session/session.go
generated
vendored
|
@ -642,10 +642,16 @@ func (s *Session) ClientConfig(service string, cfgs ...*aws.Config) client.Confi
|
||||||
|
|
||||||
region := aws.StringValue(s.Config.Region)
|
region := aws.StringValue(s.Config.Region)
|
||||||
resolved, err := s.resolveEndpoint(service, region, s.Config)
|
resolved, err := s.resolveEndpoint(service, region, s.Config)
|
||||||
if err != nil && s.Config.Logger != nil {
|
if err != nil {
|
||||||
s.Config.Logger.Log(fmt.Sprintf(
|
s.Handlers.Validate.PushBack(func(r *request.Request) {
|
||||||
"ERROR: unable to resolve endpoint for service %q, region %q, err: %v",
|
if len(r.ClientInfo.Endpoint) != 0 {
|
||||||
service, region, err))
|
// Error occurred while resolving endpoint, but the request
|
||||||
|
// being invoked has had an endpoint specified after the client
|
||||||
|
// was created.
|
||||||
|
return
|
||||||
|
}
|
||||||
|
r.Error = err
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
return client.Config{
|
return client.Config{
|
||||||
|
|
5
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go
generated
vendored
5
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/header_rules.go
generated
vendored
|
@ -1,8 +1,7 @@
|
||||||
package v4
|
package v4
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/http"
|
"github.com/aws/aws-sdk-go/internal/strings"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// validator houses a set of rule needed for validation of a
|
// validator houses a set of rule needed for validation of a
|
||||||
|
@ -61,7 +60,7 @@ type patterns []string
|
||||||
// been found
|
// been found
|
||||||
func (p patterns) IsValid(value string) bool {
|
func (p patterns) IsValid(value string) bool {
|
||||||
for _, pattern := range p {
|
for _, pattern := range p {
|
||||||
if strings.HasPrefix(http.CanonicalHeaderKey(value), pattern) {
|
if strings.HasPrefixFold(value, pattern) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
63
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/stream.go
generated
vendored
Normal file
63
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/stream.go
generated
vendored
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
package v4
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/hex"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/credentials"
|
||||||
|
)
|
||||||
|
|
||||||
|
type credentialValueProvider interface {
|
||||||
|
Get() (credentials.Value, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StreamSigner implements signing of event stream encoded payloads
|
||||||
|
type StreamSigner struct {
|
||||||
|
region string
|
||||||
|
service string
|
||||||
|
|
||||||
|
credentials credentialValueProvider
|
||||||
|
|
||||||
|
prevSig []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStreamSigner creates a SigV4 signer used to sign Event Stream encoded messages
|
||||||
|
func NewStreamSigner(region, service string, seedSignature []byte, credentials *credentials.Credentials) *StreamSigner {
|
||||||
|
return &StreamSigner{
|
||||||
|
region: region,
|
||||||
|
service: service,
|
||||||
|
credentials: credentials,
|
||||||
|
prevSig: seedSignature,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetSignature takes an event stream encoded headers and payload and returns a signature
|
||||||
|
func (s *StreamSigner) GetSignature(headers, payload []byte, date time.Time) ([]byte, error) {
|
||||||
|
credValue, err := s.credentials.Get()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
sigKey := deriveSigningKey(s.region, s.service, credValue.SecretAccessKey, date)
|
||||||
|
|
||||||
|
keyPath := buildSigningScope(s.region, s.service, date)
|
||||||
|
|
||||||
|
stringToSign := buildEventStreamStringToSign(headers, payload, s.prevSig, keyPath, date)
|
||||||
|
|
||||||
|
signature := hmacSHA256(sigKey, []byte(stringToSign))
|
||||||
|
s.prevSig = signature
|
||||||
|
|
||||||
|
return signature, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildEventStreamStringToSign(headers, payload, prevSig []byte, scope string, date time.Time) string {
|
||||||
|
return strings.Join([]string{
|
||||||
|
"AWS4-HMAC-SHA256-PAYLOAD",
|
||||||
|
formatTime(date),
|
||||||
|
scope,
|
||||||
|
hex.EncodeToString(prevSig),
|
||||||
|
hex.EncodeToString(hashSHA256(headers)),
|
||||||
|
hex.EncodeToString(hashSHA256(payload)),
|
||||||
|
}, "\n")
|
||||||
|
}
|
108
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
108
vendor/github.com/aws/aws-sdk-go/aws/signer/v4/v4.go
generated
vendored
|
@ -76,9 +76,14 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
authorizationHeader = "Authorization"
|
||||||
|
authHeaderSignatureElem = "Signature="
|
||||||
|
signatureQueryKey = "X-Amz-Signature"
|
||||||
|
|
||||||
authHeaderPrefix = "AWS4-HMAC-SHA256"
|
authHeaderPrefix = "AWS4-HMAC-SHA256"
|
||||||
timeFormat = "20060102T150405Z"
|
timeFormat = "20060102T150405Z"
|
||||||
shortTimeFormat = "20060102"
|
shortTimeFormat = "20060102"
|
||||||
|
awsV4Request = "aws4_request"
|
||||||
|
|
||||||
// emptyStringSHA256 is a SHA256 of an empty string
|
// emptyStringSHA256 is a SHA256 of an empty string
|
||||||
emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`
|
emptyStringSHA256 = `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855`
|
||||||
|
@ -87,9 +92,9 @@ const (
|
||||||
var ignoredHeaders = rules{
|
var ignoredHeaders = rules{
|
||||||
blacklist{
|
blacklist{
|
||||||
mapRule{
|
mapRule{
|
||||||
"Authorization": struct{}{},
|
authorizationHeader: struct{}{},
|
||||||
"User-Agent": struct{}{},
|
"User-Agent": struct{}{},
|
||||||
"X-Amzn-Trace-Id": struct{}{},
|
"X-Amzn-Trace-Id": struct{}{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -229,11 +234,9 @@ type signingCtx struct {
|
||||||
|
|
||||||
DisableURIPathEscaping bool
|
DisableURIPathEscaping bool
|
||||||
|
|
||||||
credValues credentials.Value
|
credValues credentials.Value
|
||||||
isPresign bool
|
isPresign bool
|
||||||
formattedTime string
|
unsignedPayload bool
|
||||||
formattedShortTime string
|
|
||||||
unsignedPayload bool
|
|
||||||
|
|
||||||
bodyDigest string
|
bodyDigest string
|
||||||
signedHeaders string
|
signedHeaders string
|
||||||
|
@ -532,39 +535,56 @@ func (ctx *signingCtx) build(disableHeaderHoisting bool) error {
|
||||||
ctx.buildSignature() // depends on string to sign
|
ctx.buildSignature() // depends on string to sign
|
||||||
|
|
||||||
if ctx.isPresign {
|
if ctx.isPresign {
|
||||||
ctx.Request.URL.RawQuery += "&X-Amz-Signature=" + ctx.signature
|
ctx.Request.URL.RawQuery += "&" + signatureQueryKey + "=" + ctx.signature
|
||||||
} else {
|
} else {
|
||||||
parts := []string{
|
parts := []string{
|
||||||
authHeaderPrefix + " Credential=" + ctx.credValues.AccessKeyID + "/" + ctx.credentialString,
|
authHeaderPrefix + " Credential=" + ctx.credValues.AccessKeyID + "/" + ctx.credentialString,
|
||||||
"SignedHeaders=" + ctx.signedHeaders,
|
"SignedHeaders=" + ctx.signedHeaders,
|
||||||
"Signature=" + ctx.signature,
|
authHeaderSignatureElem + ctx.signature,
|
||||||
}
|
}
|
||||||
ctx.Request.Header.Set("Authorization", strings.Join(parts, ", "))
|
ctx.Request.Header.Set(authorizationHeader, strings.Join(parts, ", "))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *signingCtx) buildTime() {
|
// GetSignedRequestSignature attempts to extract the signature of the request.
|
||||||
ctx.formattedTime = ctx.Time.UTC().Format(timeFormat)
|
// Returning an error if the request is unsigned, or unable to extract the
|
||||||
ctx.formattedShortTime = ctx.Time.UTC().Format(shortTimeFormat)
|
// signature.
|
||||||
|
func GetSignedRequestSignature(r *http.Request) ([]byte, error) {
|
||||||
|
|
||||||
|
if auth := r.Header.Get(authorizationHeader); len(auth) != 0 {
|
||||||
|
ps := strings.Split(auth, ", ")
|
||||||
|
for _, p := range ps {
|
||||||
|
if idx := strings.Index(p, authHeaderSignatureElem); idx >= 0 {
|
||||||
|
sig := p[len(authHeaderSignatureElem):]
|
||||||
|
if len(sig) == 0 {
|
||||||
|
return nil, fmt.Errorf("invalid request signature authorization header")
|
||||||
|
}
|
||||||
|
return hex.DecodeString(sig)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if sig := r.URL.Query().Get("X-Amz-Signature"); len(sig) != 0 {
|
||||||
|
return hex.DecodeString(sig)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, fmt.Errorf("request not signed")
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ctx *signingCtx) buildTime() {
|
||||||
if ctx.isPresign {
|
if ctx.isPresign {
|
||||||
duration := int64(ctx.ExpireTime / time.Second)
|
duration := int64(ctx.ExpireTime / time.Second)
|
||||||
ctx.Query.Set("X-Amz-Date", ctx.formattedTime)
|
ctx.Query.Set("X-Amz-Date", formatTime(ctx.Time))
|
||||||
ctx.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10))
|
ctx.Query.Set("X-Amz-Expires", strconv.FormatInt(duration, 10))
|
||||||
} else {
|
} else {
|
||||||
ctx.Request.Header.Set("X-Amz-Date", ctx.formattedTime)
|
ctx.Request.Header.Set("X-Amz-Date", formatTime(ctx.Time))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *signingCtx) buildCredentialString() {
|
func (ctx *signingCtx) buildCredentialString() {
|
||||||
ctx.credentialString = strings.Join([]string{
|
ctx.credentialString = buildSigningScope(ctx.Region, ctx.ServiceName, ctx.Time)
|
||||||
ctx.formattedShortTime,
|
|
||||||
ctx.Region,
|
|
||||||
ctx.ServiceName,
|
|
||||||
"aws4_request",
|
|
||||||
}, "/")
|
|
||||||
|
|
||||||
if ctx.isPresign {
|
if ctx.isPresign {
|
||||||
ctx.Query.Set("X-Amz-Credential", ctx.credValues.AccessKeyID+"/"+ctx.credentialString)
|
ctx.Query.Set("X-Amz-Credential", ctx.credValues.AccessKeyID+"/"+ctx.credentialString)
|
||||||
|
@ -588,8 +608,7 @@ func (ctx *signingCtx) buildCanonicalHeaders(r rule, header http.Header) {
|
||||||
var headers []string
|
var headers []string
|
||||||
headers = append(headers, "host")
|
headers = append(headers, "host")
|
||||||
for k, v := range header {
|
for k, v := range header {
|
||||||
canonicalKey := http.CanonicalHeaderKey(k)
|
if !r.IsValid(k) {
|
||||||
if !r.IsValid(canonicalKey) {
|
|
||||||
continue // ignored header
|
continue // ignored header
|
||||||
}
|
}
|
||||||
if ctx.SignedHeaderVals == nil {
|
if ctx.SignedHeaderVals == nil {
|
||||||
|
@ -653,19 +672,15 @@ func (ctx *signingCtx) buildCanonicalString() {
|
||||||
func (ctx *signingCtx) buildStringToSign() {
|
func (ctx *signingCtx) buildStringToSign() {
|
||||||
ctx.stringToSign = strings.Join([]string{
|
ctx.stringToSign = strings.Join([]string{
|
||||||
authHeaderPrefix,
|
authHeaderPrefix,
|
||||||
ctx.formattedTime,
|
formatTime(ctx.Time),
|
||||||
ctx.credentialString,
|
ctx.credentialString,
|
||||||
hex.EncodeToString(makeSha256([]byte(ctx.canonicalString))),
|
hex.EncodeToString(hashSHA256([]byte(ctx.canonicalString))),
|
||||||
}, "\n")
|
}, "\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ctx *signingCtx) buildSignature() {
|
func (ctx *signingCtx) buildSignature() {
|
||||||
secret := ctx.credValues.SecretAccessKey
|
creds := deriveSigningKey(ctx.Region, ctx.ServiceName, ctx.credValues.SecretAccessKey, ctx.Time)
|
||||||
date := makeHmac([]byte("AWS4"+secret), []byte(ctx.formattedShortTime))
|
signature := hmacSHA256(creds, []byte(ctx.stringToSign))
|
||||||
region := makeHmac(date, []byte(ctx.Region))
|
|
||||||
service := makeHmac(region, []byte(ctx.ServiceName))
|
|
||||||
credentials := makeHmac(service, []byte("aws4_request"))
|
|
||||||
signature := makeHmac(credentials, []byte(ctx.stringToSign))
|
|
||||||
ctx.signature = hex.EncodeToString(signature)
|
ctx.signature = hex.EncodeToString(signature)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -726,13 +741,13 @@ func (ctx *signingCtx) removePresign() {
|
||||||
ctx.Query.Del("X-Amz-SignedHeaders")
|
ctx.Query.Del("X-Amz-SignedHeaders")
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeHmac(key []byte, data []byte) []byte {
|
func hmacSHA256(key []byte, data []byte) []byte {
|
||||||
hash := hmac.New(sha256.New, key)
|
hash := hmac.New(sha256.New, key)
|
||||||
hash.Write(data)
|
hash.Write(data)
|
||||||
return hash.Sum(nil)
|
return hash.Sum(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeSha256(data []byte) []byte {
|
func hashSHA256(data []byte) []byte {
|
||||||
hash := sha256.New()
|
hash := sha256.New()
|
||||||
hash.Write(data)
|
hash.Write(data)
|
||||||
return hash.Sum(nil)
|
return hash.Sum(nil)
|
||||||
|
@ -804,3 +819,28 @@ func stripExcessSpaces(vals []string) {
|
||||||
vals[i] = string(buf[:m])
|
vals[i] = string(buf[:m])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func buildSigningScope(region, service string, dt time.Time) string {
|
||||||
|
return strings.Join([]string{
|
||||||
|
formatShortTime(dt),
|
||||||
|
region,
|
||||||
|
service,
|
||||||
|
awsV4Request,
|
||||||
|
}, "/")
|
||||||
|
}
|
||||||
|
|
||||||
|
func deriveSigningKey(region, service, secretKey string, dt time.Time) []byte {
|
||||||
|
kDate := hmacSHA256([]byte("AWS4"+secretKey), []byte(formatShortTime(dt)))
|
||||||
|
kRegion := hmacSHA256(kDate, []byte(region))
|
||||||
|
kService := hmacSHA256(kRegion, []byte(service))
|
||||||
|
signingKey := hmacSHA256(kService, []byte(awsV4Request))
|
||||||
|
return signingKey
|
||||||
|
}
|
||||||
|
|
||||||
|
func formatShortTime(dt time.Time) string {
|
||||||
|
return dt.UTC().Format(shortTimeFormat)
|
||||||
|
}
|
||||||
|
|
||||||
|
func formatTime(dt time.Time) string {
|
||||||
|
return dt.UTC().Format(timeFormat)
|
||||||
|
}
|
||||||
|
|
34
vendor/github.com/aws/aws-sdk-go/aws/types.go
generated
vendored
34
vendor/github.com/aws/aws-sdk-go/aws/types.go
generated
vendored
|
@ -2,6 +2,7 @@ package aws
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/internal/sdkio"
|
"github.com/aws/aws-sdk-go/internal/sdkio"
|
||||||
|
@ -205,3 +206,36 @@ func (b *WriteAtBuffer) Bytes() []byte {
|
||||||
defer b.m.Unlock()
|
defer b.m.Unlock()
|
||||||
return b.buf
|
return b.buf
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MultiCloser is a utility to close multiple io.Closers within a single
|
||||||
|
// statement.
|
||||||
|
type MultiCloser []io.Closer
|
||||||
|
|
||||||
|
// Close closes all of the io.Closers making up the MultiClosers. Any
|
||||||
|
// errors that occur while closing will be returned in the order they
|
||||||
|
// occur.
|
||||||
|
func (m MultiCloser) Close() error {
|
||||||
|
var errs errors
|
||||||
|
for _, c := range m {
|
||||||
|
err := c.Close()
|
||||||
|
if err != nil {
|
||||||
|
errs = append(errs, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(errs) != 0 {
|
||||||
|
return errs
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type errors []error
|
||||||
|
|
||||||
|
func (es errors) Error() string {
|
||||||
|
var parts []string
|
||||||
|
for _, e := range es {
|
||||||
|
parts = append(parts, e.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
return strings.Join(parts, "\n")
|
||||||
|
}
|
||||||
|
|
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.26.8"
|
const SDKVersion = "1.28.3"
|
||||||
|
|
11
vendor/github.com/aws/aws-sdk-go/internal/strings/strings.go
generated
vendored
Normal file
11
vendor/github.com/aws/aws-sdk-go/internal/strings/strings.go
generated
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package strings
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HasPrefixFold tests whether the string s begins with prefix, interpreted as UTF-8 strings,
|
||||||
|
// under Unicode case-folding.
|
||||||
|
func HasPrefixFold(s, prefix string) bool {
|
||||||
|
return len(s) >= len(prefix) && strings.EqualFold(s[0:len(prefix)], prefix)
|
||||||
|
}
|
2
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/debug.go
generated
vendored
|
@ -101,7 +101,7 @@ func (hs *decodedHeaders) UnmarshalJSON(b []byte) error {
|
||||||
}
|
}
|
||||||
headers.Set(h.Name, value)
|
headers.Set(h.Name, value)
|
||||||
}
|
}
|
||||||
(*hs) = decodedHeaders(headers)
|
*hs = decodedHeaders(headers)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
33
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go
generated
vendored
33
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/decode.go
generated
vendored
|
@ -21,10 +21,24 @@ type Decoder struct {
|
||||||
|
|
||||||
// NewDecoder initializes and returns a Decoder for decoding event
|
// NewDecoder initializes and returns a Decoder for decoding event
|
||||||
// stream messages from the reader provided.
|
// stream messages from the reader provided.
|
||||||
func NewDecoder(r io.Reader) *Decoder {
|
func NewDecoder(r io.Reader, opts ...func(*Decoder)) *Decoder {
|
||||||
return &Decoder{
|
d := &Decoder{
|
||||||
r: r,
|
r: r,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(d)
|
||||||
|
}
|
||||||
|
|
||||||
|
return d
|
||||||
|
}
|
||||||
|
|
||||||
|
// DecodeWithLogger adds a logger to be used by the decoder when decoding
|
||||||
|
// stream events.
|
||||||
|
func DecodeWithLogger(logger aws.Logger) func(*Decoder) {
|
||||||
|
return func(d *Decoder) {
|
||||||
|
d.logger = logger
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Decode attempts to decode a single message from the event stream reader.
|
// Decode attempts to decode a single message from the event stream reader.
|
||||||
|
@ -40,6 +54,15 @@ func (d *Decoder) Decode(payloadBuf []byte) (m Message, err error) {
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
m, err = Decode(reader, payloadBuf)
|
||||||
|
|
||||||
|
return m, err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decode attempts to decode a single message from the event stream reader.
|
||||||
|
// Will return the event stream message, or error if Decode fails to read
|
||||||
|
// the message from the reader.
|
||||||
|
func Decode(reader io.Reader, payloadBuf []byte) (m Message, err error) {
|
||||||
crc := crc32.New(crc32IEEETable)
|
crc := crc32.New(crc32IEEETable)
|
||||||
hashReader := io.TeeReader(reader, crc)
|
hashReader := io.TeeReader(reader, crc)
|
||||||
|
|
||||||
|
@ -72,12 +95,6 @@ func (d *Decoder) Decode(payloadBuf []byte) (m Message, err error) {
|
||||||
return m, nil
|
return m, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UseLogger specifies the Logger that that the decoder should use to log the
|
|
||||||
// message decode to.
|
|
||||||
func (d *Decoder) UseLogger(logger aws.Logger) {
|
|
||||||
d.logger = logger
|
|
||||||
}
|
|
||||||
|
|
||||||
func logMessageDecode(logger aws.Logger, msgBuf *bytes.Buffer, msg Message, decodeErr error) {
|
func logMessageDecode(logger aws.Logger, msgBuf *bytes.Buffer, msg Message, decodeErr error) {
|
||||||
w := bytes.NewBuffer(nil)
|
w := bytes.NewBuffer(nil)
|
||||||
defer func() { logger.Log(w.String()) }()
|
defer func() { logger.Log(w.String()) }()
|
||||||
|
|
72
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go
generated
vendored
72
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/encode.go
generated
vendored
|
@ -3,61 +3,107 @@ package eventstream
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/binary"
|
"encoding/binary"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
"hash"
|
"hash"
|
||||||
"hash/crc32"
|
"hash/crc32"
|
||||||
"io"
|
"io"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Encoder provides EventStream message encoding.
|
// Encoder provides EventStream message encoding.
|
||||||
type Encoder struct {
|
type Encoder struct {
|
||||||
w io.Writer
|
w io.Writer
|
||||||
|
logger aws.Logger
|
||||||
|
|
||||||
headersBuf *bytes.Buffer
|
headersBuf *bytes.Buffer
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewEncoder initializes and returns an Encoder to encode Event Stream
|
// NewEncoder initializes and returns an Encoder to encode Event Stream
|
||||||
// messages to an io.Writer.
|
// messages to an io.Writer.
|
||||||
func NewEncoder(w io.Writer) *Encoder {
|
func NewEncoder(w io.Writer, opts ...func(*Encoder)) *Encoder {
|
||||||
return &Encoder{
|
e := &Encoder{
|
||||||
w: w,
|
w: w,
|
||||||
headersBuf: bytes.NewBuffer(nil),
|
headersBuf: bytes.NewBuffer(nil),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for _, opt := range opts {
|
||||||
|
opt(e)
|
||||||
|
}
|
||||||
|
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
// EncodeWithLogger adds a logger to be used by the encode when decoding
|
||||||
|
// stream events.
|
||||||
|
func EncodeWithLogger(logger aws.Logger) func(*Encoder) {
|
||||||
|
return func(d *Encoder) {
|
||||||
|
d.logger = logger
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Encode encodes a single EventStream message to the io.Writer the Encoder
|
// Encode encodes a single EventStream message to the io.Writer the Encoder
|
||||||
// was created with. An error is returned if writing the message fails.
|
// was created with. An error is returned if writing the message fails.
|
||||||
func (e *Encoder) Encode(msg Message) error {
|
func (e *Encoder) Encode(msg Message) (err error) {
|
||||||
e.headersBuf.Reset()
|
e.headersBuf.Reset()
|
||||||
|
|
||||||
err := encodeHeaders(e.headersBuf, msg.Headers)
|
writer := e.w
|
||||||
if err != nil {
|
if e.logger != nil {
|
||||||
|
encodeMsgBuf := bytes.NewBuffer(nil)
|
||||||
|
writer = io.MultiWriter(writer, encodeMsgBuf)
|
||||||
|
defer func() {
|
||||||
|
logMessageEncode(e.logger, encodeMsgBuf, msg, err)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = EncodeHeaders(e.headersBuf, msg.Headers); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
crc := crc32.New(crc32IEEETable)
|
crc := crc32.New(crc32IEEETable)
|
||||||
hashWriter := io.MultiWriter(e.w, crc)
|
hashWriter := io.MultiWriter(writer, crc)
|
||||||
|
|
||||||
headersLen := uint32(e.headersBuf.Len())
|
headersLen := uint32(e.headersBuf.Len())
|
||||||
payloadLen := uint32(len(msg.Payload))
|
payloadLen := uint32(len(msg.Payload))
|
||||||
|
|
||||||
if err := encodePrelude(hashWriter, crc, headersLen, payloadLen); err != nil {
|
if err = encodePrelude(hashWriter, crc, headersLen, payloadLen); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if headersLen > 0 {
|
if headersLen > 0 {
|
||||||
if _, err := io.Copy(hashWriter, e.headersBuf); err != nil {
|
if _, err = io.Copy(hashWriter, e.headersBuf); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if payloadLen > 0 {
|
if payloadLen > 0 {
|
||||||
if _, err := hashWriter.Write(msg.Payload); err != nil {
|
if _, err = hashWriter.Write(msg.Payload); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
msgCRC := crc.Sum32()
|
msgCRC := crc.Sum32()
|
||||||
return binary.Write(e.w, binary.BigEndian, msgCRC)
|
return binary.Write(writer, binary.BigEndian, msgCRC)
|
||||||
|
}
|
||||||
|
|
||||||
|
func logMessageEncode(logger aws.Logger, msgBuf *bytes.Buffer, msg Message, encodeErr error) {
|
||||||
|
w := bytes.NewBuffer(nil)
|
||||||
|
defer func() { logger.Log(w.String()) }()
|
||||||
|
|
||||||
|
fmt.Fprintf(w, "Message to encode:\n")
|
||||||
|
encoder := json.NewEncoder(w)
|
||||||
|
if err := encoder.Encode(msg); err != nil {
|
||||||
|
fmt.Fprintf(w, "Failed to get encoded message, %v\n", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if encodeErr != nil {
|
||||||
|
fmt.Fprintf(w, "Encode error: %v\n", encodeErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Fprintf(w, "Raw message:\n%s\n", hex.Dump(msgBuf.Bytes()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen uint32) error {
|
func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen uint32) error {
|
||||||
|
@ -86,7 +132,9 @@ func encodePrelude(w io.Writer, crc hash.Hash32, headersLen, payloadLen uint32)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func encodeHeaders(w io.Writer, headers Headers) error {
|
// EncodeHeaders writes the header values to the writer encoded in the event
|
||||||
|
// stream format. Returns an error if a header fails to encode.
|
||||||
|
func EncodeHeaders(w io.Writer, headers Headers) error {
|
||||||
for _, h := range headers {
|
for _, h := range headers {
|
||||||
hn := headerName{
|
hn := headerName{
|
||||||
Len: uint8(len(h.Name)),
|
Len: uint8(len(h.Name)),
|
||||||
|
|
55
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go
generated
vendored
55
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/error.go
generated
vendored
|
@ -1,6 +1,9 @@
|
||||||
package eventstreamapi
|
package eventstreamapi
|
||||||
|
|
||||||
import "fmt"
|
import (
|
||||||
|
"fmt"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
type messageError struct {
|
type messageError struct {
|
||||||
code string
|
code string
|
||||||
|
@ -22,3 +25,53 @@ func (e messageError) Error() string {
|
||||||
func (e messageError) OrigErr() error {
|
func (e messageError) OrigErr() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// OnceError wraps the behavior of recording an error
|
||||||
|
// once and signal on a channel when this has occurred.
|
||||||
|
// Signaling is done by closing of the channel.
|
||||||
|
//
|
||||||
|
// Type is safe for concurrent usage.
|
||||||
|
type OnceError struct {
|
||||||
|
mu sync.RWMutex
|
||||||
|
err error
|
||||||
|
ch chan struct{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewOnceError return a new OnceError
|
||||||
|
func NewOnceError() *OnceError {
|
||||||
|
return &OnceError{
|
||||||
|
ch: make(chan struct{}, 1),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Err acquires a read-lock and returns an
|
||||||
|
// error if one has been set.
|
||||||
|
func (e *OnceError) Err() error {
|
||||||
|
e.mu.RLock()
|
||||||
|
err := e.err
|
||||||
|
e.mu.RUnlock()
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// SetError acquires a write-lock and will set
|
||||||
|
// the underlying error value if one has not been set.
|
||||||
|
func (e *OnceError) SetError(err error) {
|
||||||
|
if err == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
e.mu.Lock()
|
||||||
|
if e.err == nil {
|
||||||
|
e.err = err
|
||||||
|
close(e.ch)
|
||||||
|
}
|
||||||
|
e.mu.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorSet returns a channel that will be used to signal
|
||||||
|
// that an error has been set. This channel will be closed
|
||||||
|
// when the error value has been set for OnceError.
|
||||||
|
func (e *OnceError) ErrorSet() <-chan struct{} {
|
||||||
|
return e.ch
|
||||||
|
}
|
||||||
|
|
|
@ -2,9 +2,7 @@ package eventstreamapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
|
||||||
"github.com/aws/aws-sdk-go/private/protocol"
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
"github.com/aws/aws-sdk-go/private/protocol/eventstream"
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream"
|
||||||
)
|
)
|
||||||
|
@ -15,27 +13,8 @@ type Unmarshaler interface {
|
||||||
UnmarshalEvent(protocol.PayloadUnmarshaler, eventstream.Message) error
|
UnmarshalEvent(protocol.PayloadUnmarshaler, eventstream.Message) error
|
||||||
}
|
}
|
||||||
|
|
||||||
// EventStream headers with specific meaning to async API functionality.
|
|
||||||
const (
|
|
||||||
MessageTypeHeader = `:message-type` // Identifies type of message.
|
|
||||||
EventMessageType = `event`
|
|
||||||
ErrorMessageType = `error`
|
|
||||||
ExceptionMessageType = `exception`
|
|
||||||
|
|
||||||
// Message Events
|
|
||||||
EventTypeHeader = `:event-type` // Identifies message event type e.g. "Stats".
|
|
||||||
|
|
||||||
// Message Error
|
|
||||||
ErrorCodeHeader = `:error-code`
|
|
||||||
ErrorMessageHeader = `:error-message`
|
|
||||||
|
|
||||||
// Message Exception
|
|
||||||
ExceptionTypeHeader = `:exception-type`
|
|
||||||
)
|
|
||||||
|
|
||||||
// EventReader provides reading from the EventStream of an reader.
|
// EventReader provides reading from the EventStream of an reader.
|
||||||
type EventReader struct {
|
type EventReader struct {
|
||||||
reader io.ReadCloser
|
|
||||||
decoder *eventstream.Decoder
|
decoder *eventstream.Decoder
|
||||||
|
|
||||||
unmarshalerForEventType func(string) (Unmarshaler, error)
|
unmarshalerForEventType func(string) (Unmarshaler, error)
|
||||||
|
@ -47,27 +26,18 @@ type EventReader struct {
|
||||||
// NewEventReader returns a EventReader built from the reader and unmarshaler
|
// NewEventReader returns a EventReader built from the reader and unmarshaler
|
||||||
// provided. Use ReadStream method to start reading from the EventStream.
|
// provided. Use ReadStream method to start reading from the EventStream.
|
||||||
func NewEventReader(
|
func NewEventReader(
|
||||||
reader io.ReadCloser,
|
decoder *eventstream.Decoder,
|
||||||
payloadUnmarshaler protocol.PayloadUnmarshaler,
|
payloadUnmarshaler protocol.PayloadUnmarshaler,
|
||||||
unmarshalerForEventType func(string) (Unmarshaler, error),
|
unmarshalerForEventType func(string) (Unmarshaler, error),
|
||||||
) *EventReader {
|
) *EventReader {
|
||||||
return &EventReader{
|
return &EventReader{
|
||||||
reader: reader,
|
decoder: decoder,
|
||||||
decoder: eventstream.NewDecoder(reader),
|
|
||||||
payloadUnmarshaler: payloadUnmarshaler,
|
payloadUnmarshaler: payloadUnmarshaler,
|
||||||
unmarshalerForEventType: unmarshalerForEventType,
|
unmarshalerForEventType: unmarshalerForEventType,
|
||||||
payloadBuf: make([]byte, 10*1024),
|
payloadBuf: make([]byte, 10*1024),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// UseLogger instructs the EventReader to use the logger and log level
|
|
||||||
// specified.
|
|
||||||
func (r *EventReader) UseLogger(logger aws.Logger, logLevel aws.LogLevelType) {
|
|
||||||
if logger != nil && logLevel.Matches(aws.LogDebugWithEventStreamBody) {
|
|
||||||
r.decoder.UseLogger(logger)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ReadEvent attempts to read a message from the EventStream and return the
|
// ReadEvent attempts to read a message from the EventStream and return the
|
||||||
// unmarshaled event value that the message is for.
|
// unmarshaled event value that the message is for.
|
||||||
//
|
//
|
||||||
|
@ -95,8 +65,7 @@ func (r *EventReader) ReadEvent() (event interface{}, err error) {
|
||||||
case EventMessageType:
|
case EventMessageType:
|
||||||
return r.unmarshalEventMessage(msg)
|
return r.unmarshalEventMessage(msg)
|
||||||
case ExceptionMessageType:
|
case ExceptionMessageType:
|
||||||
err = r.unmarshalEventException(msg)
|
return nil, r.unmarshalEventException(msg)
|
||||||
return nil, err
|
|
||||||
case ErrorMessageType:
|
case ErrorMessageType:
|
||||||
return nil, r.unmarshalErrorMessage(msg)
|
return nil, r.unmarshalErrorMessage(msg)
|
||||||
default:
|
default:
|
||||||
|
@ -174,11 +143,6 @@ func (r *EventReader) unmarshalErrorMessage(msg eventstream.Message) (err error)
|
||||||
return msgErr
|
return msgErr
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close closes the EventReader's EventStream reader.
|
|
||||||
func (r *EventReader) Close() error {
|
|
||||||
return r.reader.Close()
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetHeaderString returns the value of the header as a string. If the header
|
// GetHeaderString returns the value of the header as a string. If the header
|
||||||
// is not set or the value is not a string an error will be returned.
|
// is not set or the value is not a string an error will be returned.
|
||||||
func GetHeaderString(msg eventstream.Message, headerName string) (string, error) {
|
func GetHeaderString(msg eventstream.Message, headerName string) (string, error) {
|
23
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/shared.go
generated
vendored
Normal file
23
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/shared.go
generated
vendored
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package eventstreamapi
|
||||||
|
|
||||||
|
// EventStream headers with specific meaning to async API functionality.
|
||||||
|
const (
|
||||||
|
ChunkSignatureHeader = `:chunk-signature` // chunk signature for message
|
||||||
|
DateHeader = `:date` // Date header for signature
|
||||||
|
|
||||||
|
// Message header and values
|
||||||
|
MessageTypeHeader = `:message-type` // Identifies type of message.
|
||||||
|
EventMessageType = `event`
|
||||||
|
ErrorMessageType = `error`
|
||||||
|
ExceptionMessageType = `exception`
|
||||||
|
|
||||||
|
// Message Events
|
||||||
|
EventTypeHeader = `:event-type` // Identifies message event type e.g. "Stats".
|
||||||
|
|
||||||
|
// Message Error
|
||||||
|
ErrorCodeHeader = `:error-code`
|
||||||
|
ErrorMessageHeader = `:error-message`
|
||||||
|
|
||||||
|
// Message Exception
|
||||||
|
ExceptionTypeHeader = `:exception-type`
|
||||||
|
)
|
123
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/signer.go
generated
vendored
Normal file
123
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/signer.go
generated
vendored
Normal file
|
@ -0,0 +1,123 @@
|
||||||
|
package eventstreamapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"strings"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream"
|
||||||
|
)
|
||||||
|
|
||||||
|
var timeNow = time.Now
|
||||||
|
|
||||||
|
// StreamSigner defines an interface for the implementation of signing of event stream payloads
|
||||||
|
type StreamSigner interface {
|
||||||
|
GetSignature(headers, payload []byte, date time.Time) ([]byte, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SignEncoder envelopes event stream messages
|
||||||
|
// into an event stream message payload with included
|
||||||
|
// signature headers using the provided signer and encoder.
|
||||||
|
type SignEncoder struct {
|
||||||
|
signer StreamSigner
|
||||||
|
encoder Encoder
|
||||||
|
bufEncoder *BufferEncoder
|
||||||
|
|
||||||
|
closeErr error
|
||||||
|
closed bool
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewSignEncoder returns a new SignEncoder using the provided stream signer and
|
||||||
|
// event stream encoder.
|
||||||
|
func NewSignEncoder(signer StreamSigner, encoder Encoder) *SignEncoder {
|
||||||
|
// TODO: Need to pass down logging
|
||||||
|
|
||||||
|
return &SignEncoder{
|
||||||
|
signer: signer,
|
||||||
|
encoder: encoder,
|
||||||
|
bufEncoder: NewBufferEncoder(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close encodes a final event stream signing envelope with an empty event stream
|
||||||
|
// payload. This final end-frame is used to mark the conclusion of the stream.
|
||||||
|
func (s *SignEncoder) Close() error {
|
||||||
|
if s.closed {
|
||||||
|
return s.closeErr
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := s.encode([]byte{}); err != nil {
|
||||||
|
if strings.Contains(err.Error(), "on closed pipe") {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
s.closeErr = err
|
||||||
|
s.closed = true
|
||||||
|
return s.closeErr
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encode takes the provided message and add envelopes the message
|
||||||
|
// with the required signature.
|
||||||
|
func (s *SignEncoder) Encode(msg eventstream.Message) error {
|
||||||
|
payload, err := s.bufEncoder.Encode(msg)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return s.encode(payload)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s SignEncoder) encode(payload []byte) error {
|
||||||
|
date := timeNow()
|
||||||
|
|
||||||
|
var msg eventstream.Message
|
||||||
|
msg.Headers.Set(DateHeader, eventstream.TimestampValue(date))
|
||||||
|
msg.Payload = payload
|
||||||
|
|
||||||
|
var headers bytes.Buffer
|
||||||
|
if err := eventstream.EncodeHeaders(&headers, msg.Headers); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
sig, err := s.signer.GetSignature(headers.Bytes(), msg.Payload, date)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.Headers.Set(ChunkSignatureHeader, eventstream.BytesValue(sig))
|
||||||
|
|
||||||
|
return s.encoder.Encode(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
// BufferEncoder is a utility that provides a buffered
|
||||||
|
// event stream encoder
|
||||||
|
type BufferEncoder struct {
|
||||||
|
encoder Encoder
|
||||||
|
buffer *bytes.Buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewBufferEncoder returns a new BufferEncoder initialized
|
||||||
|
// with a 1024 byte buffer.
|
||||||
|
func NewBufferEncoder() *BufferEncoder {
|
||||||
|
buf := bytes.NewBuffer(make([]byte, 1024))
|
||||||
|
return &BufferEncoder{
|
||||||
|
encoder: eventstream.NewEncoder(buf),
|
||||||
|
buffer: buf,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encode returns the encoded message as a byte slice.
|
||||||
|
// The returned byte slice will be modified on the next encode call
|
||||||
|
// and should not be held onto.
|
||||||
|
func (e *BufferEncoder) Encode(msg eventstream.Message) ([]byte, error) {
|
||||||
|
e.buffer.Reset()
|
||||||
|
|
||||||
|
if err := e.encoder.Encode(msg); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return e.buffer.Bytes(), nil
|
||||||
|
}
|
129
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/stream_writer.go
generated
vendored
Normal file
129
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/stream_writer.go
generated
vendored
Normal file
|
@ -0,0 +1,129 @@
|
||||||
|
package eventstreamapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
)
|
||||||
|
|
||||||
|
// StreamWriter provides concurrent safe writing to an event stream.
|
||||||
|
type StreamWriter struct {
|
||||||
|
eventWriter *EventWriter
|
||||||
|
stream chan eventWriteAsyncReport
|
||||||
|
|
||||||
|
done chan struct{}
|
||||||
|
closeOnce sync.Once
|
||||||
|
err *OnceError
|
||||||
|
|
||||||
|
streamCloser io.Closer
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewStreamWriter returns a StreamWriter for the event writer, and stream
|
||||||
|
// closer provided.
|
||||||
|
func NewStreamWriter(eventWriter *EventWriter, streamCloser io.Closer) *StreamWriter {
|
||||||
|
w := &StreamWriter{
|
||||||
|
eventWriter: eventWriter,
|
||||||
|
streamCloser: streamCloser,
|
||||||
|
stream: make(chan eventWriteAsyncReport),
|
||||||
|
done: make(chan struct{}),
|
||||||
|
err: NewOnceError(),
|
||||||
|
}
|
||||||
|
go w.writeStream()
|
||||||
|
|
||||||
|
return w
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close terminates the writers ability to write new events to the stream. Any
|
||||||
|
// future call to Send will fail with an error.
|
||||||
|
func (w *StreamWriter) Close() error {
|
||||||
|
w.closeOnce.Do(w.safeClose)
|
||||||
|
return w.Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *StreamWriter) safeClose() {
|
||||||
|
close(w.done)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorSet returns a channel which will be closed
|
||||||
|
// if an error occurs.
|
||||||
|
func (w *StreamWriter) ErrorSet() <-chan struct{} {
|
||||||
|
return w.err.ErrorSet()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Err returns any error that occurred while attempting to write an event to the
|
||||||
|
// stream.
|
||||||
|
func (w *StreamWriter) Err() error {
|
||||||
|
return w.err.Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send writes a single event to the stream returning an error if the write
|
||||||
|
// failed.
|
||||||
|
//
|
||||||
|
// Send may be called concurrently. Events will be written to the stream
|
||||||
|
// safely.
|
||||||
|
func (w *StreamWriter) Send(ctx aws.Context, event Marshaler) error {
|
||||||
|
if err := w.Err(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
resultCh := make(chan error)
|
||||||
|
wrapped := eventWriteAsyncReport{
|
||||||
|
Event: event,
|
||||||
|
Result: resultCh,
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case w.stream <- wrapped:
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
case <-w.done:
|
||||||
|
return fmt.Errorf("stream closed, unable to send event")
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case err := <-resultCh:
|
||||||
|
return err
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
case <-w.done:
|
||||||
|
return fmt.Errorf("stream closed, unable to send event")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *StreamWriter) writeStream() {
|
||||||
|
defer w.Close()
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case wrapper := <-w.stream:
|
||||||
|
err := w.eventWriter.WriteEvent(wrapper.Event)
|
||||||
|
wrapper.ReportResult(w.done, err)
|
||||||
|
if err != nil {
|
||||||
|
w.err.SetError(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
case <-w.done:
|
||||||
|
if err := w.streamCloser.Close(); err != nil {
|
||||||
|
w.err.SetError(err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type eventWriteAsyncReport struct {
|
||||||
|
Event Marshaler
|
||||||
|
Result chan<- error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e eventWriteAsyncReport) ReportResult(cancel <-chan struct{}, err error) bool {
|
||||||
|
select {
|
||||||
|
case e.Result <- err:
|
||||||
|
return true
|
||||||
|
case <-cancel:
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
109
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/writer.go
generated
vendored
Normal file
109
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi/writer.go
generated
vendored
Normal file
|
@ -0,0 +1,109 @@
|
||||||
|
package eventstreamapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Marshaler provides a marshaling interface for event types to event stream
|
||||||
|
// messages.
|
||||||
|
type Marshaler interface {
|
||||||
|
MarshalEvent(protocol.PayloadMarshaler) (eventstream.Message, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Encoder is an stream encoder that will encode an event stream message for
|
||||||
|
// the transport.
|
||||||
|
type Encoder interface {
|
||||||
|
Encode(eventstream.Message) error
|
||||||
|
}
|
||||||
|
|
||||||
|
// EventWriter provides a wrapper around the underlying event stream encoder
|
||||||
|
// for an io.WriteCloser.
|
||||||
|
type EventWriter struct {
|
||||||
|
encoder Encoder
|
||||||
|
payloadMarshaler protocol.PayloadMarshaler
|
||||||
|
eventTypeFor func(Marshaler) (string, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewEventWriter returns a new event stream writer, that will write to the
|
||||||
|
// writer provided. Use the WriteEvent method to write an event to the stream.
|
||||||
|
func NewEventWriter(encoder Encoder, pm protocol.PayloadMarshaler, eventTypeFor func(Marshaler) (string, error),
|
||||||
|
) *EventWriter {
|
||||||
|
return &EventWriter{
|
||||||
|
encoder: encoder,
|
||||||
|
payloadMarshaler: pm,
|
||||||
|
eventTypeFor: eventTypeFor,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteEvent writes an event to the stream. Returns an error if the event
|
||||||
|
// fails to marshal into a message, or writing to the underlying writer fails.
|
||||||
|
func (w *EventWriter) WriteEvent(event Marshaler) error {
|
||||||
|
msg, err := w.marshal(event)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return w.encoder.Encode(msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *EventWriter) marshal(event Marshaler) (eventstream.Message, error) {
|
||||||
|
eventType, err := w.eventTypeFor(event)
|
||||||
|
if err != nil {
|
||||||
|
return eventstream.Message{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg, err := event.MarshalEvent(w.payloadMarshaler)
|
||||||
|
if err != nil {
|
||||||
|
return eventstream.Message{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.Headers.Set(EventTypeHeader, eventstream.StringValue(eventType))
|
||||||
|
return msg, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
//type EventEncoder struct {
|
||||||
|
// encoder Encoder
|
||||||
|
// ppayloadMarshaler protocol.PayloadMarshaler
|
||||||
|
// eventTypeFor func(Marshaler) (string, error)
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func (e EventEncoder) Encode(event Marshaler) error {
|
||||||
|
// msg, err := e.marshal(event)
|
||||||
|
// if err != nil {
|
||||||
|
// return err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// return w.encoder.Encode(msg)
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func (e EventEncoder) marshal(event Marshaler) (eventstream.Message, error) {
|
||||||
|
// eventType, err := w.eventTypeFor(event)
|
||||||
|
// if err != nil {
|
||||||
|
// return eventstream.Message{}, err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// msg, err := event.MarshalEvent(w.payloadMarshaler)
|
||||||
|
// if err != nil {
|
||||||
|
// return eventstream.Message{}, err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// msg.Headers.Set(EventTypeHeader, eventstream.StringValue(eventType))
|
||||||
|
// return msg, nil
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//func (w *EventWriter) marshal(event Marshaler) (eventstream.Message, error) {
|
||||||
|
// eventType, err := w.eventTypeFor(event)
|
||||||
|
// if err != nil {
|
||||||
|
// return eventstream.Message{}, err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// msg, err := event.MarshalEvent(w.payloadMarshaler)
|
||||||
|
// if err != nil {
|
||||||
|
// return eventstream.Message{}, err
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// msg.Headers.Set(EventTypeHeader, eventstream.StringValue(eventType))
|
||||||
|
// return msg, nil
|
||||||
|
//}
|
||||||
|
//
|
5
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go
generated
vendored
5
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/header_value.go
generated
vendored
|
@ -461,6 +461,11 @@ func (v *TimestampValue) decode(r io.Reader) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MarshalJSON implements the json.Marshaler interface
|
||||||
|
func (v TimestampValue) MarshalJSON() ([]byte, error) {
|
||||||
|
return []byte(v.String()), nil
|
||||||
|
}
|
||||||
|
|
||||||
func timeFromEpochMilli(t int64) time.Time {
|
func timeFromEpochMilli(t int64) time.Time {
|
||||||
secs := t / 1e3
|
secs := t / 1e3
|
||||||
msec := t % 1e3
|
msec := t % 1e3
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/private/protocol/eventstream/message.go
generated
vendored
|
@ -27,7 +27,7 @@ func (m *Message) rawMessage() (rawMessage, error) {
|
||||||
|
|
||||||
if len(m.Headers) > 0 {
|
if len(m.Headers) > 0 {
|
||||||
var headers bytes.Buffer
|
var headers bytes.Buffer
|
||||||
if err := encodeHeaders(&headers, m.Headers); err != nil {
|
if err := EncodeHeaders(&headers, m.Headers); err != nil {
|
||||||
return rawMessage{}, err
|
return rawMessage{}, err
|
||||||
}
|
}
|
||||||
raw.Headers = headers.Bytes()
|
raw.Headers = headers.Bytes()
|
||||||
|
|
2
vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go
generated
vendored
2
vendor/github.com/aws/aws-sdk-go/private/protocol/payload.go
generated
vendored
|
@ -64,7 +64,7 @@ func (h HandlerPayloadMarshal) MarshalPayload(w io.Writer, v interface{}) error
|
||||||
metadata.ClientInfo{},
|
metadata.ClientInfo{},
|
||||||
request.Handlers{},
|
request.Handlers{},
|
||||||
nil,
|
nil,
|
||||||
&request.Operation{HTTPMethod: "GET"},
|
&request.Operation{HTTPMethod: "PUT"},
|
||||||
v,
|
v,
|
||||||
nil,
|
nil,
|
||||||
)
|
)
|
||||||
|
|
49
vendor/github.com/aws/aws-sdk-go/private/protocol/protocol.go
generated
vendored
Normal file
49
vendor/github.com/aws/aws-sdk-go/private/protocol/protocol.go
generated
vendored
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// RequireHTTPMinProtocol request handler is used to enforce that
|
||||||
|
// the target endpoint supports the given major and minor HTTP protocol version.
|
||||||
|
type RequireHTTPMinProtocol struct {
|
||||||
|
Major, Minor int
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handler will mark the request.Request with an error if the
|
||||||
|
// target endpoint did not connect with the required HTTP protocol
|
||||||
|
// major and minor version.
|
||||||
|
func (p RequireHTTPMinProtocol) Handler(r *request.Request) {
|
||||||
|
if r.Error != nil || r.HTTPResponse == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !strings.HasPrefix(r.HTTPResponse.Proto, "HTTP") {
|
||||||
|
r.Error = newMinHTTPProtoError(p.Major, p.Minor, r)
|
||||||
|
}
|
||||||
|
|
||||||
|
if r.HTTPResponse.ProtoMajor < p.Major || r.HTTPResponse.ProtoMinor < p.Minor {
|
||||||
|
r.Error = newMinHTTPProtoError(p.Major, p.Minor, r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrCodeMinimumHTTPProtocolError error code is returned when the target endpoint
|
||||||
|
// did not match the required HTTP major and minor protocol version.
|
||||||
|
const ErrCodeMinimumHTTPProtocolError = "MinimumHTTPProtocolError"
|
||||||
|
|
||||||
|
func newMinHTTPProtoError(major, minor int, r *request.Request) error {
|
||||||
|
return awserr.NewRequestFailure(
|
||||||
|
awserr.New("MinimumHTTPProtocolError",
|
||||||
|
fmt.Sprintf(
|
||||||
|
"operation requires minimum HTTP protocol of HTTP/%d.%d, but was %s",
|
||||||
|
major, minor, r.HTTPResponse.Proto,
|
||||||
|
),
|
||||||
|
nil,
|
||||||
|
),
|
||||||
|
r.HTTPResponse.StatusCode, r.RequestID,
|
||||||
|
)
|
||||||
|
}
|
78
vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
generated
vendored
78
vendor/github.com/aws/aws-sdk-go/private/protocol/rest/unmarshal.go
generated
vendored
|
@ -15,6 +15,7 @@ import (
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
"github.com/aws/aws-sdk-go/aws/awserr"
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
"github.com/aws/aws-sdk-go/aws/request"
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
awsStrings "github.com/aws/aws-sdk-go/internal/strings"
|
||||||
"github.com/aws/aws-sdk-go/private/protocol"
|
"github.com/aws/aws-sdk-go/private/protocol"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -28,7 +29,9 @@ var UnmarshalMetaHandler = request.NamedHandler{Name: "awssdk.rest.UnmarshalMeta
|
||||||
func Unmarshal(r *request.Request) {
|
func Unmarshal(r *request.Request) {
|
||||||
if r.DataFilled() {
|
if r.DataFilled() {
|
||||||
v := reflect.Indirect(reflect.ValueOf(r.Data))
|
v := reflect.Indirect(reflect.ValueOf(r.Data))
|
||||||
unmarshalBody(r, v)
|
if err := unmarshalBody(r, v); err != nil {
|
||||||
|
r.Error = err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,12 +43,21 @@ func UnmarshalMeta(r *request.Request) {
|
||||||
r.RequestID = r.HTTPResponse.Header.Get("X-Amz-Request-Id")
|
r.RequestID = r.HTTPResponse.Header.Get("X-Amz-Request-Id")
|
||||||
}
|
}
|
||||||
if r.DataFilled() {
|
if r.DataFilled() {
|
||||||
v := reflect.Indirect(reflect.ValueOf(r.Data))
|
if err := UnmarshalResponse(r.HTTPResponse, r.Data, aws.BoolValue(r.Config.LowerCaseHeaderMaps)); err != nil {
|
||||||
unmarshalLocationElements(r, v)
|
r.Error = err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalBody(r *request.Request, v reflect.Value) {
|
// UnmarshalResponse attempts to unmarshal the REST response headers to
|
||||||
|
// the data type passed in. The type must be a pointer. An error is returned
|
||||||
|
// with any error unmarshaling the response into the target datatype.
|
||||||
|
func UnmarshalResponse(resp *http.Response, data interface{}, lowerCaseHeaderMaps bool) error {
|
||||||
|
v := reflect.Indirect(reflect.ValueOf(data))
|
||||||
|
return unmarshalLocationElements(resp, v, lowerCaseHeaderMaps)
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalBody(r *request.Request, v reflect.Value) error {
|
||||||
if field, ok := v.Type().FieldByName("_"); ok {
|
if field, ok := v.Type().FieldByName("_"); ok {
|
||||||
if payloadName := field.Tag.Get("payload"); payloadName != "" {
|
if payloadName := field.Tag.Get("payload"); payloadName != "" {
|
||||||
pfield, _ := v.Type().FieldByName(payloadName)
|
pfield, _ := v.Type().FieldByName(payloadName)
|
||||||
|
@ -57,35 +69,38 @@ func unmarshalBody(r *request.Request, v reflect.Value) {
|
||||||
defer r.HTTPResponse.Body.Close()
|
defer r.HTTPResponse.Body.Close()
|
||||||
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
return awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
||||||
} else {
|
|
||||||
payload.Set(reflect.ValueOf(b))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
payload.Set(reflect.ValueOf(b))
|
||||||
|
|
||||||
case *string:
|
case *string:
|
||||||
defer r.HTTPResponse.Body.Close()
|
defer r.HTTPResponse.Body.Close()
|
||||||
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
return awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
||||||
} else {
|
|
||||||
str := string(b)
|
|
||||||
payload.Set(reflect.ValueOf(&str))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
str := string(b)
|
||||||
|
payload.Set(reflect.ValueOf(&str))
|
||||||
|
|
||||||
default:
|
default:
|
||||||
switch payload.Type().String() {
|
switch payload.Type().String() {
|
||||||
case "io.ReadCloser":
|
case "io.ReadCloser":
|
||||||
payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
|
payload.Set(reflect.ValueOf(r.HTTPResponse.Body))
|
||||||
|
|
||||||
case "io.ReadSeeker":
|
case "io.ReadSeeker":
|
||||||
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
b, err := ioutil.ReadAll(r.HTTPResponse.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization,
|
return awserr.New(request.ErrCodeSerialization,
|
||||||
"failed to read response body", err)
|
"failed to read response body", err)
|
||||||
return
|
|
||||||
}
|
}
|
||||||
payload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b))))
|
payload.Set(reflect.ValueOf(ioutil.NopCloser(bytes.NewReader(b))))
|
||||||
|
|
||||||
default:
|
default:
|
||||||
io.Copy(ioutil.Discard, r.HTTPResponse.Body)
|
io.Copy(ioutil.Discard, r.HTTPResponse.Body)
|
||||||
defer r.HTTPResponse.Body.Close()
|
r.HTTPResponse.Body.Close()
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization,
|
return awserr.New(request.ErrCodeSerialization,
|
||||||
"failed to decode REST response",
|
"failed to decode REST response",
|
||||||
fmt.Errorf("unknown payload type %s", payload.Type()))
|
fmt.Errorf("unknown payload type %s", payload.Type()))
|
||||||
}
|
}
|
||||||
|
@ -94,9 +109,11 @@ func unmarshalBody(r *request.Request, v reflect.Value) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalLocationElements(r *request.Request, v reflect.Value) {
|
func unmarshalLocationElements(resp *http.Response, v reflect.Value, lowerCaseHeaderMaps bool) error {
|
||||||
for i := 0; i < v.NumField(); i++ {
|
for i := 0; i < v.NumField(); i++ {
|
||||||
m, field := v.Field(i), v.Type().Field(i)
|
m, field := v.Field(i), v.Type().Field(i)
|
||||||
if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {
|
if n := field.Name; n[0:1] == strings.ToLower(n[0:1]) {
|
||||||
|
@ -111,26 +128,25 @@ func unmarshalLocationElements(r *request.Request, v reflect.Value) {
|
||||||
|
|
||||||
switch field.Tag.Get("location") {
|
switch field.Tag.Get("location") {
|
||||||
case "statusCode":
|
case "statusCode":
|
||||||
unmarshalStatusCode(m, r.HTTPResponse.StatusCode)
|
unmarshalStatusCode(m, resp.StatusCode)
|
||||||
|
|
||||||
case "header":
|
case "header":
|
||||||
err := unmarshalHeader(m, r.HTTPResponse.Header.Get(name), field.Tag)
|
err := unmarshalHeader(m, resp.Header.Get(name), field.Tag)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
return awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
|
|
||||||
case "headers":
|
case "headers":
|
||||||
prefix := field.Tag.Get("locationName")
|
prefix := field.Tag.Get("locationName")
|
||||||
err := unmarshalHeaderMap(m, r.HTTPResponse.Header, prefix)
|
err := unmarshalHeaderMap(m, resp.Header, prefix, lowerCaseHeaderMaps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.Error = awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
awserr.New(request.ErrCodeSerialization, "failed to decode REST response", err)
|
||||||
break
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if r.Error != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalStatusCode(v reflect.Value, statusCode int) {
|
func unmarshalStatusCode(v reflect.Value, statusCode int) {
|
||||||
|
@ -145,7 +161,7 @@ func unmarshalStatusCode(v reflect.Value, statusCode int) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) error {
|
func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string, normalize bool) error {
|
||||||
if len(headers) == 0 {
|
if len(headers) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -153,8 +169,12 @@ func unmarshalHeaderMap(r reflect.Value, headers http.Header, prefix string) err
|
||||||
case map[string]*string: // we only support string map value types
|
case map[string]*string: // we only support string map value types
|
||||||
out := map[string]*string{}
|
out := map[string]*string{}
|
||||||
for k, v := range headers {
|
for k, v := range headers {
|
||||||
k = http.CanonicalHeaderKey(k)
|
if awsStrings.HasPrefixFold(k, prefix) {
|
||||||
if strings.HasPrefix(strings.ToLower(k), strings.ToLower(prefix)) {
|
if normalize == true {
|
||||||
|
k = strings.ToLower(k)
|
||||||
|
} else {
|
||||||
|
k = http.CanonicalHeaderKey(k)
|
||||||
|
}
|
||||||
out[k[len(prefix):]] = &v[0]
|
out[k[len(prefix):]] = &v[0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
6
vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go
generated
vendored
6
vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal.go
generated
vendored
|
@ -19,3 +19,9 @@ func UnmarshalDiscardBody(r *request.Request) {
|
||||||
io.Copy(ioutil.Discard, r.HTTPResponse.Body)
|
io.Copy(ioutil.Discard, r.HTTPResponse.Body)
|
||||||
r.HTTPResponse.Body.Close()
|
r.HTTPResponse.Body.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ResponseMetadata provides the SDK response metadata attributes.
|
||||||
|
type ResponseMetadata struct {
|
||||||
|
StatusCode int
|
||||||
|
RequestID string
|
||||||
|
}
|
||||||
|
|
65
vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal_error.go
generated
vendored
Normal file
65
vendor/github.com/aws/aws-sdk-go/private/protocol/unmarshal_error.go
generated
vendored
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
||||||
|
"github.com/aws/aws-sdk-go/aws/request"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UnmarshalErrorHandler provides unmarshaling errors API response errors for
|
||||||
|
// both typed and untyped errors.
|
||||||
|
type UnmarshalErrorHandler struct {
|
||||||
|
unmarshaler ErrorUnmarshaler
|
||||||
|
}
|
||||||
|
|
||||||
|
// ErrorUnmarshaler is an abstract interface for concrete implementations to
|
||||||
|
// unmarshal protocol specific response errors.
|
||||||
|
type ErrorUnmarshaler interface {
|
||||||
|
UnmarshalError(*http.Response, ResponseMetadata) (error, error)
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewUnmarshalErrorHandler returns an UnmarshalErrorHandler
|
||||||
|
// initialized for the set of exception names to the error unmarshalers
|
||||||
|
func NewUnmarshalErrorHandler(unmarshaler ErrorUnmarshaler) *UnmarshalErrorHandler {
|
||||||
|
return &UnmarshalErrorHandler{
|
||||||
|
unmarshaler: unmarshaler,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalErrorHandlerName is the name of the named handler.
|
||||||
|
const UnmarshalErrorHandlerName = "awssdk.protocol.UnmarshalError"
|
||||||
|
|
||||||
|
// NamedHandler returns a NamedHandler for the unmarshaler using the set of
|
||||||
|
// errors the unmarshaler was initialized for.
|
||||||
|
func (u *UnmarshalErrorHandler) NamedHandler() request.NamedHandler {
|
||||||
|
return request.NamedHandler{
|
||||||
|
Name: UnmarshalErrorHandlerName,
|
||||||
|
Fn: u.UnmarshalError,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalError will attempt to unmarshal the API response's error message
|
||||||
|
// into either a generic SDK error type, or a typed error corresponding to the
|
||||||
|
// errors exception name.
|
||||||
|
func (u *UnmarshalErrorHandler) UnmarshalError(r *request.Request) {
|
||||||
|
defer r.HTTPResponse.Body.Close()
|
||||||
|
|
||||||
|
respMeta := ResponseMetadata{
|
||||||
|
StatusCode: r.HTTPResponse.StatusCode,
|
||||||
|
RequestID: r.RequestID,
|
||||||
|
}
|
||||||
|
|
||||||
|
v, err := u.unmarshaler.UnmarshalError(r.HTTPResponse, respMeta)
|
||||||
|
if err != nil {
|
||||||
|
r.Error = awserr.NewRequestFailure(
|
||||||
|
awserr.New(request.ErrCodeSerialization,
|
||||||
|
"failed to unmarshal response error", err),
|
||||||
|
respMeta.StatusCode,
|
||||||
|
respMeta.RequestID,
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Error = v
|
||||||
|
}
|
363
vendor/github.com/aws/aws-sdk-go/service/s3/api.go
generated
vendored
363
vendor/github.com/aws/aws-sdk-go/service/s3/api.go
generated
vendored
|
@ -7,7 +7,6 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/aws/aws-sdk-go/aws"
|
"github.com/aws/aws-sdk-go/aws"
|
||||||
|
@ -9496,9 +9495,15 @@ func (c *S3) SelectObjectContentRequest(input *SelectObjectContentInput) (req *r
|
||||||
|
|
||||||
output = &SelectObjectContentOutput{}
|
output = &SelectObjectContentOutput{}
|
||||||
req = c.newRequest(op, input, output)
|
req = c.newRequest(op, input, output)
|
||||||
|
|
||||||
|
es := newSelectObjectContentEventStream()
|
||||||
|
req.Handlers.Unmarshal.PushBack(es.setStreamCloser)
|
||||||
|
output.EventStream = es
|
||||||
|
|
||||||
req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
|
req.Handlers.Send.Swap(client.LogHTTPResponseHandler.Name, client.LogHTTPResponseHeaderHandler)
|
||||||
req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
|
req.Handlers.Unmarshal.Swap(restxml.UnmarshalHandler.Name, rest.UnmarshalHandler)
|
||||||
req.Handlers.Unmarshal.PushBack(output.runEventStreamLoop)
|
req.Handlers.Unmarshal.PushBack(es.runOutputStream)
|
||||||
|
req.Handlers.Unmarshal.PushBack(es.runOnStreamPartClose)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9617,6 +9622,147 @@ func (c *S3) SelectObjectContentWithContext(ctx aws.Context, input *SelectObject
|
||||||
return out, req.Send()
|
return out, req.Send()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SelectObjectContentEventStream provides the event stream handling for the SelectObjectContent.
|
||||||
|
type SelectObjectContentEventStream struct {
|
||||||
|
|
||||||
|
// Reader is the EventStream reader for the SelectObjectContentEventStream
|
||||||
|
// events. This value is automatically set by the SDK when the API call is made
|
||||||
|
// Use this member when unit testing your code with the SDK to mock out the
|
||||||
|
// EventStream Reader.
|
||||||
|
//
|
||||||
|
// Must not be nil.
|
||||||
|
Reader SelectObjectContentEventStreamReader
|
||||||
|
|
||||||
|
outputReader io.ReadCloser
|
||||||
|
|
||||||
|
// StreamCloser is the io.Closer for the EventStream connection. For HTTP
|
||||||
|
// EventStream this is the response Body. The stream will be closed when
|
||||||
|
// the Close method of the EventStream is called.
|
||||||
|
StreamCloser io.Closer
|
||||||
|
|
||||||
|
done chan struct{}
|
||||||
|
closeOnce sync.Once
|
||||||
|
err *eventstreamapi.OnceError
|
||||||
|
}
|
||||||
|
|
||||||
|
func newSelectObjectContentEventStream() *SelectObjectContentEventStream {
|
||||||
|
return &SelectObjectContentEventStream{
|
||||||
|
done: make(chan struct{}),
|
||||||
|
err: eventstreamapi.NewOnceError(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (es *SelectObjectContentEventStream) setStreamCloser(r *request.Request) {
|
||||||
|
es.StreamCloser = r.HTTPResponse.Body
|
||||||
|
}
|
||||||
|
|
||||||
|
func (es *SelectObjectContentEventStream) runOnStreamPartClose(r *request.Request) {
|
||||||
|
if es.done == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
go es.waitStreamPartClose()
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (es *SelectObjectContentEventStream) waitStreamPartClose() {
|
||||||
|
var outputErrCh <-chan struct{}
|
||||||
|
if v, ok := es.Reader.(interface{ ErrorSet() <-chan struct{} }); ok {
|
||||||
|
outputErrCh = v.ErrorSet()
|
||||||
|
}
|
||||||
|
var outputClosedCh <-chan struct{}
|
||||||
|
if v, ok := es.Reader.(interface{ Closed() <-chan struct{} }); ok {
|
||||||
|
outputClosedCh = v.Closed()
|
||||||
|
}
|
||||||
|
|
||||||
|
select {
|
||||||
|
case <-es.done:
|
||||||
|
case <-outputErrCh:
|
||||||
|
es.err.SetError(es.Reader.Err())
|
||||||
|
es.Close()
|
||||||
|
case <-outputClosedCh:
|
||||||
|
if err := es.Reader.Err(); err != nil {
|
||||||
|
es.err.SetError(es.Reader.Err())
|
||||||
|
}
|
||||||
|
es.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Events returns a channel to read events from.
|
||||||
|
//
|
||||||
|
// These events are:
|
||||||
|
//
|
||||||
|
// * ContinuationEvent
|
||||||
|
// * EndEvent
|
||||||
|
// * ProgressEvent
|
||||||
|
// * RecordsEvent
|
||||||
|
// * StatsEvent
|
||||||
|
func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
|
||||||
|
return es.Reader.Events()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (es *SelectObjectContentEventStream) runOutputStream(r *request.Request) {
|
||||||
|
var opts []func(*eventstream.Decoder)
|
||||||
|
if r.Config.Logger != nil && r.Config.LogLevel.Matches(aws.LogDebugWithEventStreamBody) {
|
||||||
|
opts = append(opts, eventstream.DecodeWithLogger(r.Config.Logger))
|
||||||
|
}
|
||||||
|
|
||||||
|
unmarshalerForEvent := unmarshalerForSelectObjectContentEventStreamEvent{
|
||||||
|
metadata: protocol.ResponseMetadata{
|
||||||
|
StatusCode: r.HTTPResponse.StatusCode,
|
||||||
|
RequestID: r.RequestID,
|
||||||
|
},
|
||||||
|
}.UnmarshalerForEventName
|
||||||
|
|
||||||
|
decoder := eventstream.NewDecoder(r.HTTPResponse.Body, opts...)
|
||||||
|
eventReader := eventstreamapi.NewEventReader(decoder,
|
||||||
|
protocol.HandlerPayloadUnmarshal{
|
||||||
|
Unmarshalers: r.Handlers.UnmarshalStream,
|
||||||
|
},
|
||||||
|
unmarshalerForEvent,
|
||||||
|
)
|
||||||
|
|
||||||
|
es.outputReader = r.HTTPResponse.Body
|
||||||
|
es.Reader = newReadSelectObjectContentEventStream(eventReader)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close closes the stream. This will also cause the stream to be closed.
|
||||||
|
// Close must be called when done using the stream API. Not calling Close
|
||||||
|
// may result in resource leaks.
|
||||||
|
//
|
||||||
|
// You can use the closing of the Reader's Events channel to terminate your
|
||||||
|
// application's read from the API's stream.
|
||||||
|
//
|
||||||
|
func (es *SelectObjectContentEventStream) Close() (err error) {
|
||||||
|
es.closeOnce.Do(es.safeClose)
|
||||||
|
return es.Err()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (es *SelectObjectContentEventStream) safeClose() {
|
||||||
|
if es.done != nil {
|
||||||
|
close(es.done)
|
||||||
|
}
|
||||||
|
|
||||||
|
es.Reader.Close()
|
||||||
|
if es.outputReader != nil {
|
||||||
|
es.outputReader.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
es.StreamCloser.Close()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Err returns any error that occurred while reading or writing EventStream
|
||||||
|
// Events from the service API's response. Returns nil if there were no errors.
|
||||||
|
func (es *SelectObjectContentEventStream) Err() error {
|
||||||
|
if err := es.err.Err(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := es.Reader.Err(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
const opUploadPart = "UploadPart"
|
const opUploadPart = "UploadPart"
|
||||||
|
|
||||||
// UploadPartRequest generates a "aws/request.Request" representing the
|
// UploadPartRequest generates a "aws/request.Request" representing the
|
||||||
|
@ -11432,6 +11578,11 @@ func (s *ContinuationEvent) UnmarshalEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ContinuationEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
|
||||||
|
msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
|
||||||
|
return msg, err
|
||||||
|
}
|
||||||
|
|
||||||
type CopyObjectInput struct {
|
type CopyObjectInput struct {
|
||||||
_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
|
_ struct{} `locationName:"CopyObjectRequest" type:"structure"`
|
||||||
|
|
||||||
|
@ -14643,6 +14794,11 @@ func (s *EndEvent) UnmarshalEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *EndEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
|
||||||
|
msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
|
||||||
|
return msg, err
|
||||||
|
}
|
||||||
|
|
||||||
// Container for all error elements.
|
// Container for all error elements.
|
||||||
type Error struct {
|
type Error struct {
|
||||||
_ struct{} `type:"structure"`
|
_ struct{} `type:"structure"`
|
||||||
|
@ -17543,6 +17699,10 @@ type GetObjectOutput struct {
|
||||||
LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
|
LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
|
||||||
|
|
||||||
// A map of metadata to store with the object in S3.
|
// A map of metadata to store with the object in S3.
|
||||||
|
//
|
||||||
|
// By default unmarshaled keys are written as a map keys in following canonicalized format:
|
||||||
|
// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
|
||||||
|
// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
|
||||||
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
||||||
|
|
||||||
// This is set to the number of metadata entries not returned in x-amz-meta
|
// This is set to the number of metadata entries not returned in x-amz-meta
|
||||||
|
@ -18770,6 +18930,10 @@ type HeadObjectOutput struct {
|
||||||
LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
|
LastModified *time.Time `location:"header" locationName:"Last-Modified" type:"timestamp"`
|
||||||
|
|
||||||
// A map of metadata to store with the object in S3.
|
// A map of metadata to store with the object in S3.
|
||||||
|
//
|
||||||
|
// By default unmarshaled keys are written as a map keys in following canonicalized format:
|
||||||
|
// the first letter and any letter following a hyphen will be capitalized, and the rest as lowercase.
|
||||||
|
// Set `aws.Config.LowerCaseHeaderMaps` to `true` to write unmarshaled keys to the map as lowercase.
|
||||||
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
Metadata map[string]*string `location:"headers" locationName:"x-amz-meta-" type:"map"`
|
||||||
|
|
||||||
// This is set to the number of metadata entries not returned in x-amz-meta
|
// This is set to the number of metadata entries not returned in x-amz-meta
|
||||||
|
@ -23366,6 +23530,16 @@ func (s *ProgressEvent) UnmarshalEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ProgressEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
|
||||||
|
msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if err = pm.MarshalPayload(&buf, s); err != nil {
|
||||||
|
return eventstream.Message{}, err
|
||||||
|
}
|
||||||
|
msg.Payload = buf.Bytes()
|
||||||
|
return msg, err
|
||||||
|
}
|
||||||
|
|
||||||
// The PublicAccessBlock configuration that you want to apply to this Amazon
|
// The PublicAccessBlock configuration that you want to apply to this Amazon
|
||||||
// S3 bucket. You can enable the configuration options in any combination. For
|
// S3 bucket. You can enable the configuration options in any combination. For
|
||||||
// more information about when Amazon S3 considers a bucket or object public,
|
// more information about when Amazon S3 considers a bucket or object public,
|
||||||
|
@ -26792,6 +26966,13 @@ func (s *RecordsEvent) UnmarshalEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *RecordsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
|
||||||
|
msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
|
||||||
|
msg.Headers.Set(":content-type", eventstream.StringValue("application/octet-stream"))
|
||||||
|
msg.Payload = s.Payload
|
||||||
|
return msg, err
|
||||||
|
}
|
||||||
|
|
||||||
// Specifies how requests are redirected. In the event of an error, you can
|
// Specifies how requests are redirected. In the event of an error, you can
|
||||||
// specify a different error code to return.
|
// specify a different error code to return.
|
||||||
type Redirect struct {
|
type Redirect struct {
|
||||||
|
@ -27973,75 +28154,8 @@ func (s *ScanRange) SetStart(v int64) *ScanRange {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelectObjectContentEventStream provides handling of EventStreams for
|
|
||||||
// the SelectObjectContent API.
|
|
||||||
//
|
|
||||||
// Use this type to receive SelectObjectContentEventStream events. The events
|
|
||||||
// can be read from the Events channel member.
|
|
||||||
//
|
|
||||||
// The events that can be received are:
|
|
||||||
//
|
|
||||||
// * ContinuationEvent
|
|
||||||
// * EndEvent
|
|
||||||
// * ProgressEvent
|
|
||||||
// * RecordsEvent
|
|
||||||
// * StatsEvent
|
|
||||||
type SelectObjectContentEventStream struct {
|
|
||||||
// Reader is the EventStream reader for the SelectObjectContentEventStream
|
|
||||||
// events. This value is automatically set by the SDK when the API call is made
|
|
||||||
// Use this member when unit testing your code with the SDK to mock out the
|
|
||||||
// EventStream Reader.
|
|
||||||
//
|
|
||||||
// Must not be nil.
|
|
||||||
Reader SelectObjectContentEventStreamReader
|
|
||||||
|
|
||||||
// StreamCloser is the io.Closer for the EventStream connection. For HTTP
|
|
||||||
// EventStream this is the response Body. The stream will be closed when
|
|
||||||
// the Close method of the EventStream is called.
|
|
||||||
StreamCloser io.Closer
|
|
||||||
}
|
|
||||||
|
|
||||||
// Close closes the EventStream. This will also cause the Events channel to be
|
|
||||||
// closed. You can use the closing of the Events channel to terminate your
|
|
||||||
// application's read from the API's EventStream.
|
|
||||||
//
|
|
||||||
// Will close the underlying EventStream reader. For EventStream over HTTP
|
|
||||||
// connection this will also close the HTTP connection.
|
|
||||||
//
|
|
||||||
// Close must be called when done using the EventStream API. Not calling Close
|
|
||||||
// may result in resource leaks.
|
|
||||||
func (es *SelectObjectContentEventStream) Close() (err error) {
|
|
||||||
es.Reader.Close()
|
|
||||||
es.StreamCloser.Close()
|
|
||||||
|
|
||||||
return es.Err()
|
|
||||||
}
|
|
||||||
|
|
||||||
// Err returns any error that occurred while reading EventStream Events from
|
|
||||||
// the service API's response. Returns nil if there were no errors.
|
|
||||||
func (es *SelectObjectContentEventStream) Err() error {
|
|
||||||
if err := es.Reader.Err(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Events returns a channel to read EventStream Events from the
|
|
||||||
// SelectObjectContent API.
|
|
||||||
//
|
|
||||||
// These events are:
|
|
||||||
//
|
|
||||||
// * ContinuationEvent
|
|
||||||
// * EndEvent
|
|
||||||
// * ProgressEvent
|
|
||||||
// * RecordsEvent
|
|
||||||
// * StatsEvent
|
|
||||||
func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
|
|
||||||
return es.Reader.Events()
|
|
||||||
}
|
|
||||||
|
|
||||||
// SelectObjectContentEventStreamEvent groups together all EventStream
|
// SelectObjectContentEventStreamEvent groups together all EventStream
|
||||||
// events read from the SelectObjectContent API.
|
// events writes for SelectObjectContentEventStream.
|
||||||
//
|
//
|
||||||
// These events are:
|
// These events are:
|
||||||
//
|
//
|
||||||
|
@ -28052,11 +28166,12 @@ func (es *SelectObjectContentEventStream) Events() <-chan SelectObjectContentEve
|
||||||
// * StatsEvent
|
// * StatsEvent
|
||||||
type SelectObjectContentEventStreamEvent interface {
|
type SelectObjectContentEventStreamEvent interface {
|
||||||
eventSelectObjectContentEventStream()
|
eventSelectObjectContentEventStream()
|
||||||
|
eventstreamapi.Marshaler
|
||||||
|
eventstreamapi.Unmarshaler
|
||||||
}
|
}
|
||||||
|
|
||||||
// SelectObjectContentEventStreamReader provides the interface for reading EventStream
|
// SelectObjectContentEventStreamReader provides the interface for reading to the stream. The
|
||||||
// Events from the SelectObjectContent API. The
|
// default implementation for this interface will be SelectObjectContentEventStreamData.
|
||||||
// default implementation for this interface will be SelectObjectContentEventStream.
|
|
||||||
//
|
//
|
||||||
// The reader's Close method must allow multiple concurrent calls.
|
// The reader's Close method must allow multiple concurrent calls.
|
||||||
//
|
//
|
||||||
|
@ -28071,8 +28186,7 @@ type SelectObjectContentEventStreamReader interface {
|
||||||
// Returns a channel of events as they are read from the event stream.
|
// Returns a channel of events as they are read from the event stream.
|
||||||
Events() <-chan SelectObjectContentEventStreamEvent
|
Events() <-chan SelectObjectContentEventStreamEvent
|
||||||
|
|
||||||
// Close will close the underlying event stream reader. For event stream over
|
// Close will stop the reader reading events from the stream.
|
||||||
// HTTP this will also close the HTTP connection.
|
|
||||||
Close() error
|
Close() error
|
||||||
|
|
||||||
// Returns any error that has occurred while reading from the event stream.
|
// Returns any error that has occurred while reading from the event stream.
|
||||||
|
@ -28082,57 +28196,44 @@ type SelectObjectContentEventStreamReader interface {
|
||||||
type readSelectObjectContentEventStream struct {
|
type readSelectObjectContentEventStream struct {
|
||||||
eventReader *eventstreamapi.EventReader
|
eventReader *eventstreamapi.EventReader
|
||||||
stream chan SelectObjectContentEventStreamEvent
|
stream chan SelectObjectContentEventStreamEvent
|
||||||
errVal atomic.Value
|
err *eventstreamapi.OnceError
|
||||||
|
|
||||||
done chan struct{}
|
done chan struct{}
|
||||||
closeOnce sync.Once
|
closeOnce sync.Once
|
||||||
}
|
}
|
||||||
|
|
||||||
func newReadSelectObjectContentEventStream(
|
func newReadSelectObjectContentEventStream(eventReader *eventstreamapi.EventReader) *readSelectObjectContentEventStream {
|
||||||
reader io.ReadCloser,
|
|
||||||
unmarshalers request.HandlerList,
|
|
||||||
logger aws.Logger,
|
|
||||||
logLevel aws.LogLevelType,
|
|
||||||
) *readSelectObjectContentEventStream {
|
|
||||||
r := &readSelectObjectContentEventStream{
|
r := &readSelectObjectContentEventStream{
|
||||||
stream: make(chan SelectObjectContentEventStreamEvent),
|
eventReader: eventReader,
|
||||||
done: make(chan struct{}),
|
stream: make(chan SelectObjectContentEventStreamEvent),
|
||||||
|
done: make(chan struct{}),
|
||||||
|
err: eventstreamapi.NewOnceError(),
|
||||||
}
|
}
|
||||||
|
go r.readEventStream()
|
||||||
r.eventReader = eventstreamapi.NewEventReader(
|
|
||||||
reader,
|
|
||||||
protocol.HandlerPayloadUnmarshal{
|
|
||||||
Unmarshalers: unmarshalers,
|
|
||||||
},
|
|
||||||
r.unmarshalerForEventType,
|
|
||||||
)
|
|
||||||
r.eventReader.UseLogger(logger, logLevel)
|
|
||||||
|
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close will close the underlying event stream reader. For EventStream over
|
// Close will close the underlying event stream reader.
|
||||||
// HTTP this will also close the HTTP connection.
|
|
||||||
func (r *readSelectObjectContentEventStream) Close() error {
|
func (r *readSelectObjectContentEventStream) Close() error {
|
||||||
r.closeOnce.Do(r.safeClose)
|
r.closeOnce.Do(r.safeClose)
|
||||||
|
|
||||||
return r.Err()
|
return r.Err()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *readSelectObjectContentEventStream) ErrorSet() <-chan struct{} {
|
||||||
|
return r.err.ErrorSet()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *readSelectObjectContentEventStream) Closed() <-chan struct{} {
|
||||||
|
return r.done
|
||||||
|
}
|
||||||
|
|
||||||
func (r *readSelectObjectContentEventStream) safeClose() {
|
func (r *readSelectObjectContentEventStream) safeClose() {
|
||||||
close(r.done)
|
close(r.done)
|
||||||
err := r.eventReader.Close()
|
|
||||||
if err != nil {
|
|
||||||
r.errVal.Store(err)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *readSelectObjectContentEventStream) Err() error {
|
func (r *readSelectObjectContentEventStream) Err() error {
|
||||||
if v := r.errVal.Load(); v != nil {
|
return r.err.Err()
|
||||||
return v.(error)
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
|
func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContentEventStreamEvent {
|
||||||
|
@ -28140,6 +28241,7 @@ func (r *readSelectObjectContentEventStream) Events() <-chan SelectObjectContent
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *readSelectObjectContentEventStream) readEventStream() {
|
func (r *readSelectObjectContentEventStream) readEventStream() {
|
||||||
|
defer r.Close()
|
||||||
defer close(r.stream)
|
defer close(r.stream)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
|
@ -28154,7 +28256,7 @@ func (r *readSelectObjectContentEventStream) readEventStream() {
|
||||||
return
|
return
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
r.errVal.Store(err)
|
r.err.SetError(err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28166,22 +28268,20 @@ func (r *readSelectObjectContentEventStream) readEventStream() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *readSelectObjectContentEventStream) unmarshalerForEventType(
|
type unmarshalerForSelectObjectContentEventStreamEvent struct {
|
||||||
eventType string,
|
metadata protocol.ResponseMetadata
|
||||||
) (eventstreamapi.Unmarshaler, error) {
|
}
|
||||||
|
|
||||||
|
func (u unmarshalerForSelectObjectContentEventStreamEvent) UnmarshalerForEventName(eventType string) (eventstreamapi.Unmarshaler, error) {
|
||||||
switch eventType {
|
switch eventType {
|
||||||
case "Cont":
|
case "Cont":
|
||||||
return &ContinuationEvent{}, nil
|
return &ContinuationEvent{}, nil
|
||||||
|
|
||||||
case "End":
|
case "End":
|
||||||
return &EndEvent{}, nil
|
return &EndEvent{}, nil
|
||||||
|
|
||||||
case "Progress":
|
case "Progress":
|
||||||
return &ProgressEvent{}, nil
|
return &ProgressEvent{}, nil
|
||||||
|
|
||||||
case "Records":
|
case "Records":
|
||||||
return &RecordsEvent{}, nil
|
return &RecordsEvent{}, nil
|
||||||
|
|
||||||
case "Stats":
|
case "Stats":
|
||||||
return &StatsEvent{}, nil
|
return &StatsEvent{}, nil
|
||||||
default:
|
default:
|
||||||
|
@ -28408,8 +28508,7 @@ func (s *SelectObjectContentInput) hasEndpointARN() bool {
|
||||||
type SelectObjectContentOutput struct {
|
type SelectObjectContentOutput struct {
|
||||||
_ struct{} `type:"structure" payload:"Payload"`
|
_ struct{} `type:"structure" payload:"Payload"`
|
||||||
|
|
||||||
// Use EventStream to use the API's stream.
|
EventStream *SelectObjectContentEventStream
|
||||||
EventStream *SelectObjectContentEventStream `type:"structure"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// String returns the string representation
|
// String returns the string representation
|
||||||
|
@ -28422,29 +28521,17 @@ func (s SelectObjectContentOutput) GoString() string {
|
||||||
return s.String()
|
return s.String()
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetEventStream sets the EventStream field's value.
|
|
||||||
func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
|
func (s *SelectObjectContentOutput) SetEventStream(v *SelectObjectContentEventStream) *SelectObjectContentOutput {
|
||||||
s.EventStream = v
|
s.EventStream = v
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
func (s *SelectObjectContentOutput) GetEventStream() *SelectObjectContentEventStream {
|
||||||
|
return s.EventStream
|
||||||
|
}
|
||||||
|
|
||||||
func (s *SelectObjectContentOutput) runEventStreamLoop(r *request.Request) {
|
// GetStream returns the type to interact with the event stream.
|
||||||
if r.Error != nil {
|
func (s *SelectObjectContentOutput) GetStream() *SelectObjectContentEventStream {
|
||||||
return
|
return s.EventStream
|
||||||
}
|
|
||||||
reader := newReadSelectObjectContentEventStream(
|
|
||||||
r.HTTPResponse.Body,
|
|
||||||
r.Handlers.UnmarshalStream,
|
|
||||||
r.Config.Logger,
|
|
||||||
r.Config.LogLevel.Value(),
|
|
||||||
)
|
|
||||||
go reader.readEventStream()
|
|
||||||
|
|
||||||
eventStream := &SelectObjectContentEventStream{
|
|
||||||
StreamCloser: r.HTTPResponse.Body,
|
|
||||||
Reader: reader,
|
|
||||||
}
|
|
||||||
s.EventStream = eventStream
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Describes the parameters for Select job types.
|
// Describes the parameters for Select job types.
|
||||||
|
@ -28841,6 +28928,16 @@ func (s *StatsEvent) UnmarshalEvent(
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *StatsEvent) MarshalEvent(pm protocol.PayloadMarshaler) (msg eventstream.Message, err error) {
|
||||||
|
msg.Headers.Set(eventstreamapi.MessageTypeHeader, eventstream.StringValue(eventstreamapi.EventMessageType))
|
||||||
|
var buf bytes.Buffer
|
||||||
|
if err = pm.MarshalPayload(&buf, s); err != nil {
|
||||||
|
return eventstream.Message{}, err
|
||||||
|
}
|
||||||
|
msg.Payload = buf.Bytes()
|
||||||
|
return msg, err
|
||||||
|
}
|
||||||
|
|
||||||
// Specifies data related to access patterns to be collected and made available
|
// Specifies data related to access patterns to be collected and made available
|
||||||
// to analyze the tradeoffs between different storage classes for an Amazon
|
// to analyze the tradeoffs between different storage classes for an Amazon
|
||||||
// S3 bucket.
|
// S3 bucket.
|
||||||
|
|
33
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
33
vendor/github.com/aws/aws-sdk-go/service/s3/s3manager/upload.go
generated
vendored
|
@ -167,7 +167,7 @@ type Uploader struct {
|
||||||
BufferProvider ReadSeekerWriteToProvider
|
BufferProvider ReadSeekerWriteToProvider
|
||||||
|
|
||||||
// partPool allows for the re-usage of streaming payload part buffers between upload calls
|
// partPool allows for the re-usage of streaming payload part buffers between upload calls
|
||||||
partPool *partPool
|
partPool byteSlicePool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewUploader creates a new Uploader instance to upload objects to S3. Pass In
|
// NewUploader creates a new Uploader instance to upload objects to S3. Pass In
|
||||||
|
@ -204,7 +204,7 @@ func newUploader(client s3iface.S3API, options ...func(*Uploader)) *Uploader {
|
||||||
option(u)
|
option(u)
|
||||||
}
|
}
|
||||||
|
|
||||||
u.partPool = newPartPool(u.PartSize)
|
u.partPool = newByteSlicePool(u.PartSize)
|
||||||
|
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
@ -404,8 +404,8 @@ func (u *uploader) init() error {
|
||||||
|
|
||||||
// If PartSize was changed or partPool was never setup then we need to allocated a new pool
|
// If PartSize was changed or partPool was never setup then we need to allocated a new pool
|
||||||
// so that we return []byte slices of the correct size
|
// so that we return []byte slices of the correct size
|
||||||
if u.cfg.partPool == nil || u.cfg.partPool.partSize != u.cfg.PartSize {
|
if u.cfg.partPool == nil || u.cfg.partPool.Size() != u.cfg.PartSize {
|
||||||
u.cfg.partPool = newPartPool(u.cfg.PartSize)
|
u.cfg.partPool = newByteSlicePool(u.cfg.PartSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -476,7 +476,7 @@ func (u *uploader) nextReader() (io.ReadSeeker, int, func(), error) {
|
||||||
return reader, int(n), cleanup, err
|
return reader, int(n), cleanup, err
|
||||||
|
|
||||||
default:
|
default:
|
||||||
part := u.cfg.partPool.Get().([]byte)
|
part := u.cfg.partPool.Get()
|
||||||
n, err := readFillBuf(r, part)
|
n, err := readFillBuf(r, part)
|
||||||
u.readerPos += int64(n)
|
u.readerPos += int64(n)
|
||||||
|
|
||||||
|
@ -558,6 +558,7 @@ func (u *multiuploader) upload(firstBuf io.ReadSeeker, cleanup func()) (*UploadO
|
||||||
// Create the multipart
|
// Create the multipart
|
||||||
resp, err := u.cfg.S3.CreateMultipartUploadWithContext(u.ctx, params, u.cfg.RequestOptions...)
|
resp, err := u.cfg.S3.CreateMultipartUploadWithContext(u.ctx, params, u.cfg.RequestOptions...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
cleanup()
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
u.uploadID = *resp.UploadId
|
u.uploadID = *resp.UploadId
|
||||||
|
@ -762,11 +763,29 @@ func (u *multiuploader) complete() *s3.CompleteMultipartUploadOutput {
|
||||||
return resp
|
return resp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type byteSlicePool interface {
|
||||||
|
Get() []byte
|
||||||
|
Put([]byte)
|
||||||
|
Size() int64
|
||||||
|
}
|
||||||
|
|
||||||
type partPool struct {
|
type partPool struct {
|
||||||
partSize int64
|
partSize int64
|
||||||
sync.Pool
|
sync.Pool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *partPool) Get() []byte {
|
||||||
|
return p.Pool.Get().([]byte)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *partPool) Put(b []byte) {
|
||||||
|
p.Pool.Put(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *partPool) Size() int64 {
|
||||||
|
return p.partSize
|
||||||
|
}
|
||||||
|
|
||||||
func newPartPool(partSize int64) *partPool {
|
func newPartPool(partSize int64) *partPool {
|
||||||
p := &partPool{partSize: partSize}
|
p := &partPool{partSize: partSize}
|
||||||
|
|
||||||
|
@ -776,3 +795,7 @@ func newPartPool(partSize int64) *partPool {
|
||||||
|
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var newByteSlicePool = func(partSize int64) byteSlicePool {
|
||||||
|
return newPartPool(partSize)
|
||||||
|
}
|
||||||
|
|
1
vendor/github.com/aws/aws-sdk-go/service/s3/service.go
generated
vendored
1
vendor/github.com/aws/aws-sdk-go/service/s3/service.go
generated
vendored
|
@ -78,6 +78,7 @@ func newClient(cfg aws.Config, handlers request.Handlers, partitionID, endpoint,
|
||||||
svc.Handlers.UnmarshalMeta.PushBackNamed(restxml.UnmarshalMetaHandler)
|
svc.Handlers.UnmarshalMeta.PushBackNamed(restxml.UnmarshalMetaHandler)
|
||||||
svc.Handlers.UnmarshalError.PushBackNamed(restxml.UnmarshalErrorHandler)
|
svc.Handlers.UnmarshalError.PushBackNamed(restxml.UnmarshalErrorHandler)
|
||||||
|
|
||||||
|
svc.Handlers.BuildStream.PushBackNamed(restxml.BuildHandler)
|
||||||
svc.Handlers.UnmarshalStream.PushBackNamed(restxml.UnmarshalHandler)
|
svc.Handlers.UnmarshalStream.PushBackNamed(restxml.UnmarshalHandler)
|
||||||
|
|
||||||
// Run custom client initialization if present
|
// Run custom client initialization if present
|
||||||
|
|
13
vendor/github.com/klauspost/compress/huff0/bitwriter.go
generated
vendored
13
vendor/github.com/klauspost/compress/huff0/bitwriter.go
generated
vendored
|
@ -38,7 +38,7 @@ func (b *bitWriter) addBits16Clean(value uint16, bits uint8) {
|
||||||
b.nBits += bits
|
b.nBits += bits
|
||||||
}
|
}
|
||||||
|
|
||||||
// addBits16Clean will add up to 16 bits. value may not contain more set bits than indicated.
|
// encSymbol will add up to 16 bits. value may not contain more set bits than indicated.
|
||||||
// It will not check if there is space for them, so the caller must ensure that it has flushed recently.
|
// It will not check if there is space for them, so the caller must ensure that it has flushed recently.
|
||||||
func (b *bitWriter) encSymbol(ct cTable, symbol byte) {
|
func (b *bitWriter) encSymbol(ct cTable, symbol byte) {
|
||||||
enc := ct[symbol]
|
enc := ct[symbol]
|
||||||
|
@ -46,6 +46,17 @@ func (b *bitWriter) encSymbol(ct cTable, symbol byte) {
|
||||||
b.nBits += enc.nBits
|
b.nBits += enc.nBits
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// encTwoSymbols will add up to 32 bits. value may not contain more set bits than indicated.
|
||||||
|
// It will not check if there is space for them, so the caller must ensure that it has flushed recently.
|
||||||
|
func (b *bitWriter) encTwoSymbols(ct cTable, av, bv byte) {
|
||||||
|
encA := ct[av]
|
||||||
|
encB := ct[bv]
|
||||||
|
sh := b.nBits & 63
|
||||||
|
combined := uint64(encA.val) | (uint64(encB.val) << (encA.nBits & 63))
|
||||||
|
b.bitContainer |= combined << sh
|
||||||
|
b.nBits += encA.nBits + encB.nBits
|
||||||
|
}
|
||||||
|
|
||||||
// addBits16ZeroNC will add up to 16 bits.
|
// addBits16ZeroNC will add up to 16 bits.
|
||||||
// It will not check if there is space for them,
|
// It will not check if there is space for them,
|
||||||
// so the caller must ensure that it has flushed recently.
|
// so the caller must ensure that it has flushed recently.
|
||||||
|
|
70
vendor/github.com/klauspost/compress/huff0/compress.go
generated
vendored
70
vendor/github.com/klauspost/compress/huff0/compress.go
generated
vendored
|
@ -80,9 +80,12 @@ func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)
|
||||||
|
|
||||||
if s.Reuse == ReusePolicyPrefer && canReuse {
|
if s.Reuse == ReusePolicyPrefer && canReuse {
|
||||||
keepTable := s.cTable
|
keepTable := s.cTable
|
||||||
|
keepTL := s.actualTableLog
|
||||||
s.cTable = s.prevTable
|
s.cTable = s.prevTable
|
||||||
|
s.actualTableLog = s.prevTableLog
|
||||||
s.Out, err = compressor(in)
|
s.Out, err = compressor(in)
|
||||||
s.cTable = keepTable
|
s.cTable = keepTable
|
||||||
|
s.actualTableLog = keepTL
|
||||||
if err == nil && len(s.Out) < wantSize {
|
if err == nil && len(s.Out) < wantSize {
|
||||||
s.OutData = s.Out
|
s.OutData = s.Out
|
||||||
return s.Out, true, nil
|
return s.Out, true, nil
|
||||||
|
@ -92,7 +95,6 @@ func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate new table.
|
// Calculate new table.
|
||||||
s.optimalTableLog()
|
|
||||||
err = s.buildCTable()
|
err = s.buildCTable()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
|
@ -109,9 +111,15 @@ func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)
|
||||||
if oldSize <= hSize+newSize || hSize+12 >= wantSize {
|
if oldSize <= hSize+newSize || hSize+12 >= wantSize {
|
||||||
// Retain cTable even if we re-use.
|
// Retain cTable even if we re-use.
|
||||||
keepTable := s.cTable
|
keepTable := s.cTable
|
||||||
|
keepTL := s.actualTableLog
|
||||||
|
|
||||||
s.cTable = s.prevTable
|
s.cTable = s.prevTable
|
||||||
|
s.actualTableLog = s.prevTableLog
|
||||||
s.Out, err = compressor(in)
|
s.Out, err = compressor(in)
|
||||||
|
|
||||||
|
// Restore ctable.
|
||||||
s.cTable = keepTable
|
s.cTable = keepTable
|
||||||
|
s.actualTableLog = keepTL
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
@ -142,7 +150,7 @@ func compress(in []byte, s *Scratch, compressor func(src []byte) ([]byte, error)
|
||||||
return nil, false, ErrIncompressible
|
return nil, false, ErrIncompressible
|
||||||
}
|
}
|
||||||
// Move current table into previous.
|
// Move current table into previous.
|
||||||
s.prevTable, s.cTable = s.cTable, s.prevTable[:0]
|
s.prevTable, s.prevTableLog, s.cTable = s.cTable, s.actualTableLog, s.prevTable[:0]
|
||||||
s.OutData = s.Out[len(s.OutTable):]
|
s.OutData = s.Out[len(s.OutTable):]
|
||||||
return s.Out, false, nil
|
return s.Out, false, nil
|
||||||
}
|
}
|
||||||
|
@ -163,28 +171,23 @@ func (s *Scratch) compress1xDo(dst, src []byte) ([]byte, error) {
|
||||||
for i := len(src) & 3; i > 0; i-- {
|
for i := len(src) & 3; i > 0; i-- {
|
||||||
bw.encSymbol(cTable, src[n+i-1])
|
bw.encSymbol(cTable, src[n+i-1])
|
||||||
}
|
}
|
||||||
|
n -= 4
|
||||||
if s.actualTableLog <= 8 {
|
if s.actualTableLog <= 8 {
|
||||||
n -= 4
|
|
||||||
for ; n >= 0; n -= 4 {
|
for ; n >= 0; n -= 4 {
|
||||||
tmp := src[n : n+4]
|
tmp := src[n : n+4]
|
||||||
// tmp should be len 4
|
// tmp should be len 4
|
||||||
bw.flush32()
|
bw.flush32()
|
||||||
bw.encSymbol(cTable, tmp[3])
|
bw.encTwoSymbols(cTable, tmp[3], tmp[2])
|
||||||
bw.encSymbol(cTable, tmp[2])
|
bw.encTwoSymbols(cTable, tmp[1], tmp[0])
|
||||||
bw.encSymbol(cTable, tmp[1])
|
|
||||||
bw.encSymbol(cTable, tmp[0])
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
n -= 4
|
|
||||||
for ; n >= 0; n -= 4 {
|
for ; n >= 0; n -= 4 {
|
||||||
tmp := src[n : n+4]
|
tmp := src[n : n+4]
|
||||||
// tmp should be len 4
|
// tmp should be len 4
|
||||||
bw.flush32()
|
bw.flush32()
|
||||||
bw.encSymbol(cTable, tmp[3])
|
bw.encTwoSymbols(cTable, tmp[3], tmp[2])
|
||||||
bw.encSymbol(cTable, tmp[2])
|
|
||||||
bw.flush32()
|
bw.flush32()
|
||||||
bw.encSymbol(cTable, tmp[1])
|
bw.encTwoSymbols(cTable, tmp[1], tmp[0])
|
||||||
bw.encSymbol(cTable, tmp[0])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
err := bw.close()
|
err := bw.close()
|
||||||
|
@ -322,9 +325,26 @@ func (s *Scratch) canUseTable(c cTable) bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *Scratch) validateTable(c cTable) bool {
|
||||||
|
if len(c) < int(s.symbolLen) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for i, v := range s.count[:s.symbolLen] {
|
||||||
|
if v != 0 {
|
||||||
|
if c[i].nBits == 0 {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if c[i].nBits > s.actualTableLog {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
// minTableLog provides the minimum logSize to safely represent a distribution.
|
// minTableLog provides the minimum logSize to safely represent a distribution.
|
||||||
func (s *Scratch) minTableLog() uint8 {
|
func (s *Scratch) minTableLog() uint8 {
|
||||||
minBitsSrc := highBit32(uint32(s.br.remain()-1)) + 1
|
minBitsSrc := highBit32(uint32(s.br.remain())) + 1
|
||||||
minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2
|
minBitsSymbols := highBit32(uint32(s.symbolLen-1)) + 2
|
||||||
if minBitsSrc < minBitsSymbols {
|
if minBitsSrc < minBitsSymbols {
|
||||||
return uint8(minBitsSrc)
|
return uint8(minBitsSrc)
|
||||||
|
@ -336,7 +356,7 @@ func (s *Scratch) minTableLog() uint8 {
|
||||||
func (s *Scratch) optimalTableLog() {
|
func (s *Scratch) optimalTableLog() {
|
||||||
tableLog := s.TableLog
|
tableLog := s.TableLog
|
||||||
minBits := s.minTableLog()
|
minBits := s.minTableLog()
|
||||||
maxBitsSrc := uint8(highBit32(uint32(s.br.remain()-1))) - 2
|
maxBitsSrc := uint8(highBit32(uint32(s.br.remain()-1))) - 1
|
||||||
if maxBitsSrc < tableLog {
|
if maxBitsSrc < tableLog {
|
||||||
// Accuracy can be reduced
|
// Accuracy can be reduced
|
||||||
tableLog = maxBitsSrc
|
tableLog = maxBitsSrc
|
||||||
|
@ -363,6 +383,7 @@ type cTableEntry struct {
|
||||||
const huffNodesMask = huffNodesLen - 1
|
const huffNodesMask = huffNodesLen - 1
|
||||||
|
|
||||||
func (s *Scratch) buildCTable() error {
|
func (s *Scratch) buildCTable() error {
|
||||||
|
s.optimalTableLog()
|
||||||
s.huffSort()
|
s.huffSort()
|
||||||
if cap(s.cTable) < maxSymbolValue+1 {
|
if cap(s.cTable) < maxSymbolValue+1 {
|
||||||
s.cTable = make([]cTableEntry, s.symbolLen, maxSymbolValue+1)
|
s.cTable = make([]cTableEntry, s.symbolLen, maxSymbolValue+1)
|
||||||
|
@ -439,7 +460,7 @@ func (s *Scratch) buildCTable() error {
|
||||||
return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax)
|
return fmt.Errorf("internal error: maxNbBits (%d) > tableLogMax (%d)", maxNbBits, tableLogMax)
|
||||||
}
|
}
|
||||||
var nbPerRank [tableLogMax + 1]uint16
|
var nbPerRank [tableLogMax + 1]uint16
|
||||||
var valPerRank [tableLogMax + 1]uint16
|
var valPerRank [16]uint16
|
||||||
for _, v := range huffNode[:nonNullRank+1] {
|
for _, v := range huffNode[:nonNullRank+1] {
|
||||||
nbPerRank[v.nbBits]++
|
nbPerRank[v.nbBits]++
|
||||||
}
|
}
|
||||||
|
@ -455,16 +476,17 @@ func (s *Scratch) buildCTable() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// push nbBits per symbol, symbol order
|
// push nbBits per symbol, symbol order
|
||||||
// TODO: changed `s.symbolLen` -> `nonNullRank+1` (micro-opt)
|
|
||||||
for _, v := range huffNode[:nonNullRank+1] {
|
for _, v := range huffNode[:nonNullRank+1] {
|
||||||
s.cTable[v.symbol].nBits = v.nbBits
|
s.cTable[v.symbol].nBits = v.nbBits
|
||||||
}
|
}
|
||||||
|
|
||||||
// assign value within rank, symbol order
|
// assign value within rank, symbol order
|
||||||
for n, val := range s.cTable[:s.symbolLen] {
|
t := s.cTable[:s.symbolLen]
|
||||||
v := valPerRank[val.nBits]
|
for n, val := range t {
|
||||||
s.cTable[n].val = v
|
nbits := val.nBits & 15
|
||||||
valPerRank[val.nBits] = v + 1
|
v := valPerRank[nbits]
|
||||||
|
t[n].val = v
|
||||||
|
valPerRank[nbits] = v + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
@ -488,10 +510,12 @@ func (s *Scratch) huffSort() {
|
||||||
r := highBit32(v+1) & 31
|
r := highBit32(v+1) & 31
|
||||||
rank[r].base++
|
rank[r].base++
|
||||||
}
|
}
|
||||||
for n := 30; n > 0; n-- {
|
// maxBitLength is log2(BlockSizeMax) + 1
|
||||||
|
const maxBitLength = 18 + 1
|
||||||
|
for n := maxBitLength; n > 0; n-- {
|
||||||
rank[n-1].base += rank[n].base
|
rank[n-1].base += rank[n].base
|
||||||
}
|
}
|
||||||
for n := range rank[:] {
|
for n := range rank[:maxBitLength] {
|
||||||
rank[n].current = rank[n].base
|
rank[n].current = rank[n].base
|
||||||
}
|
}
|
||||||
for n, c := range s.count[:s.symbolLen] {
|
for n, c := range s.count[:s.symbolLen] {
|
||||||
|
@ -510,7 +534,7 @@ func (s *Scratch) huffSort() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Scratch) setMaxHeight(lastNonNull int) uint8 {
|
func (s *Scratch) setMaxHeight(lastNonNull int) uint8 {
|
||||||
maxNbBits := s.TableLog
|
maxNbBits := s.actualTableLog
|
||||||
huffNode := s.nodes[1 : huffNodesLen+1]
|
huffNode := s.nodes[1 : huffNodesLen+1]
|
||||||
//huffNode = huffNode[: huffNodesLen]
|
//huffNode = huffNode[: huffNodesLen]
|
||||||
|
|
||||||
|
|
7
vendor/github.com/klauspost/compress/huff0/huff0.go
generated
vendored
7
vendor/github.com/klauspost/compress/huff0/huff0.go
generated
vendored
|
@ -83,7 +83,7 @@ type Scratch struct {
|
||||||
MaxSymbolValue uint8
|
MaxSymbolValue uint8
|
||||||
|
|
||||||
// TableLog will attempt to override the tablelog for the next block.
|
// TableLog will attempt to override the tablelog for the next block.
|
||||||
// Must be <= 11.
|
// Must be <= 11 and >= 5.
|
||||||
TableLog uint8
|
TableLog uint8
|
||||||
|
|
||||||
// Reuse will specify the reuse policy
|
// Reuse will specify the reuse policy
|
||||||
|
@ -105,6 +105,7 @@ type Scratch struct {
|
||||||
maxCount int // count of the most probable symbol
|
maxCount int // count of the most probable symbol
|
||||||
clearCount bool // clear count
|
clearCount bool // clear count
|
||||||
actualTableLog uint8 // Selected tablelog.
|
actualTableLog uint8 // Selected tablelog.
|
||||||
|
prevTableLog uint8 // Tablelog for previous table
|
||||||
prevTable cTable // Table used for previous compression.
|
prevTable cTable // Table used for previous compression.
|
||||||
cTable cTable // compression table
|
cTable cTable // compression table
|
||||||
dt dTable // decompression table
|
dt dTable // decompression table
|
||||||
|
@ -127,8 +128,8 @@ func (s *Scratch) prepare(in []byte) (*Scratch, error) {
|
||||||
if s.TableLog == 0 {
|
if s.TableLog == 0 {
|
||||||
s.TableLog = tableLogDefault
|
s.TableLog = tableLogDefault
|
||||||
}
|
}
|
||||||
if s.TableLog > tableLogMax {
|
if s.TableLog > tableLogMax || s.TableLog < minTablelog {
|
||||||
return nil, fmt.Errorf("tableLog (%d) > maxTableLog (%d)", s.TableLog, tableLogMax)
|
return nil, fmt.Errorf(" invalid tableLog %d (%d -> %d)", s.TableLog, minTablelog, tableLogMax)
|
||||||
}
|
}
|
||||||
if s.MaxDecodedSize <= 0 || s.MaxDecodedSize > BlockSizeMax {
|
if s.MaxDecodedSize <= 0 || s.MaxDecodedSize > BlockSizeMax {
|
||||||
s.MaxDecodedSize = BlockSizeMax
|
s.MaxDecodedSize = BlockSizeMax
|
||||||
|
|
4
vendor/github.com/klauspost/compress/zstd/README.md
generated
vendored
4
vendor/github.com/klauspost/compress/zstd/README.md
generated
vendored
|
@ -36,7 +36,7 @@ so as always, testing is recommended.
|
||||||
For now, a high speed (fastest) and medium-fast (default) compressor has been implemented.
|
For now, a high speed (fastest) and medium-fast (default) compressor has been implemented.
|
||||||
|
|
||||||
The "Fastest" compression ratio is roughly equivalent to zstd level 1.
|
The "Fastest" compression ratio is roughly equivalent to zstd level 1.
|
||||||
The "Default" compression ration is roughly equivalent to zstd level 3 (default).
|
The "Default" compression ratio is roughly equivalent to zstd level 3 (default).
|
||||||
|
|
||||||
In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its fastest mode.
|
In terms of speed, it is typically 2x as fast as the stdlib deflate/gzip in its fastest mode.
|
||||||
The compression ratio compared to stdlib is around level 3, but usually 3x as fast.
|
The compression ratio compared to stdlib is around level 3, but usually 3x as fast.
|
||||||
|
@ -390,4 +390,4 @@ For sending files for reproducing errors use a service like [goobox](https://goo
|
||||||
|
|
||||||
For general feedback and experience reports, feel free to open an issue or write me on [Twitter](https://twitter.com/sh0dan).
|
For general feedback and experience reports, feel free to open an issue or write me on [Twitter](https://twitter.com/sh0dan).
|
||||||
|
|
||||||
This package includes the excellent [`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package Copyright (c) 2016 Caleb Spare.
|
This package includes the excellent [`github.com/cespare/xxhash`](https://github.com/cespare/xxhash) package Copyright (c) 2016 Caleb Spare.
|
||||||
|
|
33
vendor/github.com/klauspost/compress/zstd/blockenc.go
generated
vendored
33
vendor/github.com/klauspost/compress/zstd/blockenc.go
generated
vendored
|
@ -299,6 +299,20 @@ func (b *blockEnc) encodeRaw(a []byte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// encodeRaw can be used to set the output to a raw representation of supplied bytes.
|
||||||
|
func (b *blockEnc) encodeRawTo(dst, src []byte) []byte {
|
||||||
|
var bh blockHeader
|
||||||
|
bh.setLast(b.last)
|
||||||
|
bh.setSize(uint32(len(src)))
|
||||||
|
bh.setType(blockTypeRaw)
|
||||||
|
dst = bh.appendTo(dst)
|
||||||
|
dst = append(dst, src...)
|
||||||
|
if debug {
|
||||||
|
println("Adding RAW block, length", len(src))
|
||||||
|
}
|
||||||
|
return dst
|
||||||
|
}
|
||||||
|
|
||||||
// encodeLits can be used if the block is only litLen.
|
// encodeLits can be used if the block is only litLen.
|
||||||
func (b *blockEnc) encodeLits(raw bool) error {
|
func (b *blockEnc) encodeLits(raw bool) error {
|
||||||
var bh blockHeader
|
var bh blockHeader
|
||||||
|
@ -324,18 +338,10 @@ func (b *blockEnc) encodeLits(raw bool) error {
|
||||||
if len(b.literals) >= 1024 {
|
if len(b.literals) >= 1024 {
|
||||||
// Use 4 Streams.
|
// Use 4 Streams.
|
||||||
out, reUsed, err = huff0.Compress4X(b.literals, b.litEnc)
|
out, reUsed, err = huff0.Compress4X(b.literals, b.litEnc)
|
||||||
if len(out) > len(b.literals)-len(b.literals)>>4 {
|
|
||||||
// Bail out of compression is too little.
|
|
||||||
err = huff0.ErrIncompressible
|
|
||||||
}
|
|
||||||
} else if len(b.literals) > 32 {
|
} else if len(b.literals) > 32 {
|
||||||
// Use 1 stream
|
// Use 1 stream
|
||||||
single = true
|
single = true
|
||||||
out, reUsed, err = huff0.Compress1X(b.literals, b.litEnc)
|
out, reUsed, err = huff0.Compress1X(b.literals, b.litEnc)
|
||||||
if len(out) > len(b.literals)-len(b.literals)>>4 {
|
|
||||||
// Bail out of compression is too little.
|
|
||||||
err = huff0.ErrIncompressible
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
err = huff0.ErrIncompressible
|
err = huff0.ErrIncompressible
|
||||||
}
|
}
|
||||||
|
@ -437,7 +443,7 @@ func fuzzFseEncoder(data []byte) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// encode will encode the block and put the output in b.output.
|
// encode will encode the block and append the output in b.output.
|
||||||
func (b *blockEnc) encode(raw bool) error {
|
func (b *blockEnc) encode(raw bool) error {
|
||||||
if len(b.sequences) == 0 {
|
if len(b.sequences) == 0 {
|
||||||
return b.encodeLits(raw)
|
return b.encodeLits(raw)
|
||||||
|
@ -451,6 +457,8 @@ func (b *blockEnc) encode(raw bool) error {
|
||||||
var lh literalsHeader
|
var lh literalsHeader
|
||||||
bh.setLast(b.last)
|
bh.setLast(b.last)
|
||||||
bh.setType(blockTypeCompressed)
|
bh.setType(blockTypeCompressed)
|
||||||
|
// Store offset of the block header. Needed when we know the size.
|
||||||
|
bhOffset := len(b.output)
|
||||||
b.output = bh.appendTo(b.output)
|
b.output = bh.appendTo(b.output)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -468,6 +476,7 @@ func (b *blockEnc) encode(raw bool) error {
|
||||||
} else {
|
} else {
|
||||||
err = huff0.ErrIncompressible
|
err = huff0.ErrIncompressible
|
||||||
}
|
}
|
||||||
|
|
||||||
switch err {
|
switch err {
|
||||||
case huff0.ErrIncompressible:
|
case huff0.ErrIncompressible:
|
||||||
lh.setType(literalsBlockRaw)
|
lh.setType(literalsBlockRaw)
|
||||||
|
@ -735,18 +744,18 @@ func (b *blockEnc) encode(raw bool) error {
|
||||||
}
|
}
|
||||||
b.output = wr.out
|
b.output = wr.out
|
||||||
|
|
||||||
if len(b.output)-3 >= b.size {
|
if len(b.output)-3-bhOffset >= b.size {
|
||||||
// Maybe even add a bigger margin.
|
// Maybe even add a bigger margin.
|
||||||
b.litEnc.Reuse = huff0.ReusePolicyNone
|
b.litEnc.Reuse = huff0.ReusePolicyNone
|
||||||
return errIncompressible
|
return errIncompressible
|
||||||
}
|
}
|
||||||
|
|
||||||
// Size is output minus block header.
|
// Size is output minus block header.
|
||||||
bh.setSize(uint32(len(b.output)) - 3)
|
bh.setSize(uint32(len(b.output)-bhOffset) - 3)
|
||||||
if debug {
|
if debug {
|
||||||
println("Rewriting block header", bh)
|
println("Rewriting block header", bh)
|
||||||
}
|
}
|
||||||
_ = bh.appendTo(b.output[:0])
|
_ = bh.appendTo(b.output[bhOffset:bhOffset])
|
||||||
b.coders.setPrev(llEnc, mlEnc, ofEnc)
|
b.coders.setPrev(llEnc, mlEnc, ofEnc)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
29
vendor/github.com/klauspost/compress/zstd/decoder.go
generated
vendored
29
vendor/github.com/klauspost/compress/zstd/decoder.go
generated
vendored
|
@ -388,6 +388,35 @@ func (d *Decoder) Close() {
|
||||||
d.current.err = ErrDecoderClosed
|
d.current.err = ErrDecoderClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IOReadCloser returns the decoder as an io.ReadCloser for convenience.
|
||||||
|
// Any changes to the decoder will be reflected, so the returned ReadCloser
|
||||||
|
// can be reused along with the decoder.
|
||||||
|
// io.WriterTo is also supported by the returned ReadCloser.
|
||||||
|
func (d *Decoder) IOReadCloser() io.ReadCloser {
|
||||||
|
return closeWrapper{d: d}
|
||||||
|
}
|
||||||
|
|
||||||
|
// closeWrapper wraps a function call as a closer.
|
||||||
|
type closeWrapper struct {
|
||||||
|
d *Decoder
|
||||||
|
}
|
||||||
|
|
||||||
|
// WriteTo forwards WriteTo calls to the decoder.
|
||||||
|
func (c closeWrapper) WriteTo(w io.Writer) (n int64, err error) {
|
||||||
|
return c.d.WriteTo(w)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Read forwards read calls to the decoder.
|
||||||
|
func (c closeWrapper) Read(p []byte) (n int, err error) {
|
||||||
|
return c.d.Read(p)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Close closes the decoder.
|
||||||
|
func (c closeWrapper) Close() error {
|
||||||
|
c.d.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
type decodeOutput struct {
|
type decodeOutput struct {
|
||||||
d *blockDec
|
d *blockDec
|
||||||
b []byte
|
b []byte
|
||||||
|
|
313
vendor/github.com/klauspost/compress/zstd/enc_dfast.go
generated
vendored
313
vendor/github.com/klauspost/compress/zstd/enc_dfast.go
generated
vendored
|
@ -411,3 +411,316 @@ encodeLoop:
|
||||||
println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits)
|
println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EncodeNoHist will encode a block with no history and no following blocks.
|
||||||
|
// Most notable difference is that src will not be copied for history and
|
||||||
|
// we do not need to check for max match length.
|
||||||
|
func (e *doubleFastEncoder) EncodeNoHist(blk *blockEnc, src []byte) {
|
||||||
|
const (
|
||||||
|
// Input margin is the number of bytes we read (8)
|
||||||
|
// and the maximum we will read ahead (2)
|
||||||
|
inputMargin = 8 + 2
|
||||||
|
minNonLiteralBlockSize = 16
|
||||||
|
)
|
||||||
|
|
||||||
|
// Protect against e.cur wraparound.
|
||||||
|
if e.cur > (1<<30)+e.maxMatchOff {
|
||||||
|
for i := range e.table[:] {
|
||||||
|
e.table[i] = tableEntry{}
|
||||||
|
}
|
||||||
|
for i := range e.longTable[:] {
|
||||||
|
e.longTable[i] = tableEntry{}
|
||||||
|
}
|
||||||
|
e.cur = e.maxMatchOff
|
||||||
|
}
|
||||||
|
|
||||||
|
s := int32(0)
|
||||||
|
blk.size = len(src)
|
||||||
|
if len(src) < minNonLiteralBlockSize {
|
||||||
|
blk.extraLits = len(src)
|
||||||
|
blk.literals = blk.literals[:len(src)]
|
||||||
|
copy(blk.literals, src)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Override src
|
||||||
|
sLimit := int32(len(src)) - inputMargin
|
||||||
|
// stepSize is the number of bytes to skip on every main loop iteration.
|
||||||
|
// It should be >= 1.
|
||||||
|
stepSize := int32(e.o.targetLength)
|
||||||
|
if stepSize == 0 {
|
||||||
|
stepSize++
|
||||||
|
}
|
||||||
|
|
||||||
|
const kSearchStrength = 8
|
||||||
|
|
||||||
|
// nextEmit is where in src the next emitLiteral should start from.
|
||||||
|
nextEmit := s
|
||||||
|
cv := load6432(src, s)
|
||||||
|
|
||||||
|
// Relative offsets
|
||||||
|
offset1 := int32(blk.recentOffsets[0])
|
||||||
|
offset2 := int32(blk.recentOffsets[1])
|
||||||
|
|
||||||
|
addLiterals := func(s *seq, until int32) {
|
||||||
|
if until == nextEmit {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:until]...)
|
||||||
|
s.litLen = uint32(until - nextEmit)
|
||||||
|
}
|
||||||
|
if debug {
|
||||||
|
println("recent offsets:", blk.recentOffsets)
|
||||||
|
}
|
||||||
|
|
||||||
|
encodeLoop:
|
||||||
|
for {
|
||||||
|
var t int32
|
||||||
|
for {
|
||||||
|
|
||||||
|
nextHashS := hash5(cv, dFastShortTableBits)
|
||||||
|
nextHashL := hash8(cv, dFastLongTableBits)
|
||||||
|
candidateL := e.longTable[nextHashL]
|
||||||
|
candidateS := e.table[nextHashS]
|
||||||
|
|
||||||
|
const repOff = 1
|
||||||
|
repIndex := s - offset1 + repOff
|
||||||
|
entry := tableEntry{offset: s + e.cur, val: uint32(cv)}
|
||||||
|
e.longTable[nextHashL] = entry
|
||||||
|
e.table[nextHashS] = entry
|
||||||
|
|
||||||
|
if len(blk.sequences) > 2 {
|
||||||
|
if load3232(src, repIndex) == uint32(cv>>(repOff*8)) {
|
||||||
|
// Consider history as well.
|
||||||
|
var seq seq
|
||||||
|
//length := 4 + e.matchlen(s+4+repOff, repIndex+4, src)
|
||||||
|
length := 4 + int32(matchLen(src[s+4+repOff:], src[repIndex+4:]))
|
||||||
|
|
||||||
|
seq.matchLen = uint32(length - zstdMinMatch)
|
||||||
|
|
||||||
|
// We might be able to match backwards.
|
||||||
|
// Extend as long as we can.
|
||||||
|
start := s + repOff
|
||||||
|
// We end the search early, so we don't risk 0 literals
|
||||||
|
// and have to do special offset treatment.
|
||||||
|
startLimit := nextEmit + 1
|
||||||
|
|
||||||
|
tMin := s - e.maxMatchOff
|
||||||
|
if tMin < 0 {
|
||||||
|
tMin = 0
|
||||||
|
}
|
||||||
|
for repIndex > tMin && start > startLimit && src[repIndex-1] == src[start-1] {
|
||||||
|
repIndex--
|
||||||
|
start--
|
||||||
|
seq.matchLen++
|
||||||
|
}
|
||||||
|
addLiterals(&seq, start)
|
||||||
|
|
||||||
|
// rep 0
|
||||||
|
seq.offset = 1
|
||||||
|
if debugSequences {
|
||||||
|
println("repeat sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
s += length + repOff
|
||||||
|
nextEmit = s
|
||||||
|
if s >= sLimit {
|
||||||
|
if debug {
|
||||||
|
println("repeat ended", s, length)
|
||||||
|
|
||||||
|
}
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Find the offsets of our two matches.
|
||||||
|
coffsetL := s - (candidateL.offset - e.cur)
|
||||||
|
coffsetS := s - (candidateS.offset - e.cur)
|
||||||
|
|
||||||
|
// Check if we have a long match.
|
||||||
|
if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val {
|
||||||
|
// Found a long match, likely at least 8 bytes.
|
||||||
|
// Reference encoder checks all 8 bytes, we only check 4,
|
||||||
|
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
||||||
|
t = candidateL.offset - e.cur
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
if debug && s-t > e.maxMatchOff {
|
||||||
|
panic("s - t >e.maxMatchOff")
|
||||||
|
}
|
||||||
|
if debugMatches {
|
||||||
|
println("long match")
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if we have a short match.
|
||||||
|
if coffsetS < e.maxMatchOff && uint32(cv) == candidateS.val {
|
||||||
|
// found a regular match
|
||||||
|
// See if we can find a long match at s+1
|
||||||
|
const checkAt = 1
|
||||||
|
cv := load6432(src, s+checkAt)
|
||||||
|
nextHashL = hash8(cv, dFastLongTableBits)
|
||||||
|
candidateL = e.longTable[nextHashL]
|
||||||
|
coffsetL = s - (candidateL.offset - e.cur) + checkAt
|
||||||
|
|
||||||
|
// We can store it, since we have at least a 4 byte match.
|
||||||
|
e.longTable[nextHashL] = tableEntry{offset: s + checkAt + e.cur, val: uint32(cv)}
|
||||||
|
if coffsetL < e.maxMatchOff && uint32(cv) == candidateL.val {
|
||||||
|
// Found a long match, likely at least 8 bytes.
|
||||||
|
// Reference encoder checks all 8 bytes, we only check 4,
|
||||||
|
// but the likelihood of both the first 4 bytes and the hash matching should be enough.
|
||||||
|
t = candidateL.offset - e.cur
|
||||||
|
s += checkAt
|
||||||
|
if debugMatches {
|
||||||
|
println("long match (after short)")
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
t = candidateS.offset - e.cur
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
if debug && s-t > e.maxMatchOff {
|
||||||
|
panic("s - t >e.maxMatchOff")
|
||||||
|
}
|
||||||
|
if debug && t < 0 {
|
||||||
|
panic("t<0")
|
||||||
|
}
|
||||||
|
if debugMatches {
|
||||||
|
println("short match")
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// No match found, move forward in input.
|
||||||
|
s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1))
|
||||||
|
if s >= sLimit {
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
}
|
||||||
|
|
||||||
|
// A 4-byte match has been found. Update recent offsets.
|
||||||
|
// We'll later see if more than 4 bytes.
|
||||||
|
offset2 = offset1
|
||||||
|
offset1 = s - t
|
||||||
|
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend the 4-byte match as long as possible.
|
||||||
|
//l := e.matchlen(s+4, t+4, src) + 4
|
||||||
|
l := int32(matchLen(src[s+4:], src[t+4:])) + 4
|
||||||
|
|
||||||
|
// Extend backwards
|
||||||
|
tMin := s - e.maxMatchOff
|
||||||
|
if tMin < 0 {
|
||||||
|
tMin = 0
|
||||||
|
}
|
||||||
|
for t > tMin && s > nextEmit && src[t-1] == src[s-1] {
|
||||||
|
s--
|
||||||
|
t--
|
||||||
|
l++
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write our sequence
|
||||||
|
var seq seq
|
||||||
|
seq.litLen = uint32(s - nextEmit)
|
||||||
|
seq.matchLen = uint32(l - zstdMinMatch)
|
||||||
|
if seq.litLen > 0 {
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:s]...)
|
||||||
|
}
|
||||||
|
seq.offset = uint32(s-t) + 3
|
||||||
|
s += l
|
||||||
|
if debugSequences {
|
||||||
|
println("sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
nextEmit = s
|
||||||
|
if s >= sLimit {
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
|
||||||
|
// Index match start+1 (long) and start+2 (short)
|
||||||
|
index0 := s - l + 1
|
||||||
|
// Index match end-2 (long) and end-1 (short)
|
||||||
|
index1 := s - 2
|
||||||
|
|
||||||
|
cv0 := load6432(src, index0)
|
||||||
|
cv1 := load6432(src, index1)
|
||||||
|
te0 := tableEntry{offset: index0 + e.cur, val: uint32(cv0)}
|
||||||
|
te1 := tableEntry{offset: index1 + e.cur, val: uint32(cv1)}
|
||||||
|
e.longTable[hash8(cv0, dFastLongTableBits)] = te0
|
||||||
|
e.longTable[hash8(cv1, dFastLongTableBits)] = te1
|
||||||
|
cv0 >>= 8
|
||||||
|
cv1 >>= 8
|
||||||
|
te0.offset++
|
||||||
|
te1.offset++
|
||||||
|
te0.val = uint32(cv0)
|
||||||
|
te1.val = uint32(cv1)
|
||||||
|
e.table[hash5(cv0, dFastShortTableBits)] = te0
|
||||||
|
e.table[hash5(cv1, dFastShortTableBits)] = te1
|
||||||
|
|
||||||
|
cv = load6432(src, s)
|
||||||
|
|
||||||
|
if len(blk.sequences) <= 2 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check offset 2
|
||||||
|
for {
|
||||||
|
o2 := s - offset2
|
||||||
|
if load3232(src, o2) != uint32(cv) {
|
||||||
|
// Do regular search
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store this, since we have it.
|
||||||
|
nextHashS := hash5(cv1>>8, dFastShortTableBits)
|
||||||
|
nextHashL := hash8(cv, dFastLongTableBits)
|
||||||
|
|
||||||
|
// We have at least 4 byte match.
|
||||||
|
// No need to check backwards. We come straight from a match
|
||||||
|
//l := 4 + e.matchlen(s+4, o2+4, src)
|
||||||
|
l := 4 + int32(matchLen(src[s+4:], src[o2+4:]))
|
||||||
|
|
||||||
|
entry := tableEntry{offset: s + e.cur, val: uint32(cv)}
|
||||||
|
e.longTable[nextHashL] = entry
|
||||||
|
e.table[nextHashS] = entry
|
||||||
|
seq.matchLen = uint32(l) - zstdMinMatch
|
||||||
|
seq.litLen = 0
|
||||||
|
|
||||||
|
// Since litlen is always 0, this is offset 1.
|
||||||
|
seq.offset = 1
|
||||||
|
s += l
|
||||||
|
nextEmit = s
|
||||||
|
if debugSequences {
|
||||||
|
println("sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
|
||||||
|
// Swap offset 1 and 2.
|
||||||
|
offset1, offset2 = offset2, offset1
|
||||||
|
if s >= sLimit {
|
||||||
|
// Finished
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if int(nextEmit) < len(src) {
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:]...)
|
||||||
|
blk.extraLits = len(src) - int(nextEmit)
|
||||||
|
}
|
||||||
|
if debug {
|
||||||
|
println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
245
vendor/github.com/klauspost/compress/zstd/enc_fast.go
generated
vendored
245
vendor/github.com/klauspost/compress/zstd/enc_fast.go
generated
vendored
|
@ -329,6 +329,246 @@ encodeLoop:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EncodeNoHist will encode a block with no history and no following blocks.
|
||||||
|
// Most notable difference is that src will not be copied for history and
|
||||||
|
// we do not need to check for max match length.
|
||||||
|
func (e *fastEncoder) EncodeNoHist(blk *blockEnc, src []byte) {
|
||||||
|
const (
|
||||||
|
inputMargin = 8
|
||||||
|
minNonLiteralBlockSize = 1 + 1 + inputMargin
|
||||||
|
)
|
||||||
|
if debug {
|
||||||
|
if len(src) > maxBlockSize {
|
||||||
|
panic("src too big")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Protect against e.cur wraparound.
|
||||||
|
if e.cur > (1<<30)+e.maxMatchOff {
|
||||||
|
for i := range e.table[:] {
|
||||||
|
e.table[i] = tableEntry{}
|
||||||
|
}
|
||||||
|
e.cur = e.maxMatchOff
|
||||||
|
}
|
||||||
|
|
||||||
|
s := int32(0)
|
||||||
|
blk.size = len(src)
|
||||||
|
if len(src) < minNonLiteralBlockSize {
|
||||||
|
blk.extraLits = len(src)
|
||||||
|
blk.literals = blk.literals[:len(src)]
|
||||||
|
copy(blk.literals, src)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
sLimit := int32(len(src)) - inputMargin
|
||||||
|
// stepSize is the number of bytes to skip on every main loop iteration.
|
||||||
|
// It should be >= 2.
|
||||||
|
const stepSize = 2
|
||||||
|
|
||||||
|
// TEMPLATE
|
||||||
|
const hashLog = tableBits
|
||||||
|
// seems global, but would be nice to tweak.
|
||||||
|
const kSearchStrength = 8
|
||||||
|
|
||||||
|
// nextEmit is where in src the next emitLiteral should start from.
|
||||||
|
nextEmit := s
|
||||||
|
cv := load6432(src, s)
|
||||||
|
|
||||||
|
// Relative offsets
|
||||||
|
offset1 := int32(blk.recentOffsets[0])
|
||||||
|
offset2 := int32(blk.recentOffsets[1])
|
||||||
|
|
||||||
|
addLiterals := func(s *seq, until int32) {
|
||||||
|
if until == nextEmit {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:until]...)
|
||||||
|
s.litLen = uint32(until - nextEmit)
|
||||||
|
}
|
||||||
|
if debug {
|
||||||
|
println("recent offsets:", blk.recentOffsets)
|
||||||
|
}
|
||||||
|
|
||||||
|
encodeLoop:
|
||||||
|
for {
|
||||||
|
// t will contain the match offset when we find one.
|
||||||
|
// When existing the search loop, we have already checked 4 bytes.
|
||||||
|
var t int32
|
||||||
|
|
||||||
|
// We will not use repeat offsets across blocks.
|
||||||
|
// By not using them for the first 3 matches
|
||||||
|
|
||||||
|
for {
|
||||||
|
nextHash := hash6(cv, hashLog)
|
||||||
|
nextHash2 := hash6(cv>>8, hashLog)
|
||||||
|
candidate := e.table[nextHash]
|
||||||
|
candidate2 := e.table[nextHash2]
|
||||||
|
repIndex := s - offset1 + 2
|
||||||
|
|
||||||
|
e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)}
|
||||||
|
e.table[nextHash2] = tableEntry{offset: s + e.cur + 1, val: uint32(cv >> 8)}
|
||||||
|
|
||||||
|
if len(blk.sequences) > 2 && load3232(src, repIndex) == uint32(cv>>16) {
|
||||||
|
// Consider history as well.
|
||||||
|
var seq seq
|
||||||
|
// lenght := 4 + e.matchlen(s+6, repIndex+4, src)
|
||||||
|
lenght := 4 + int32(matchLen(src[s+6:], src[repIndex+4:]))
|
||||||
|
|
||||||
|
seq.matchLen = uint32(lenght - zstdMinMatch)
|
||||||
|
|
||||||
|
// We might be able to match backwards.
|
||||||
|
// Extend as long as we can.
|
||||||
|
start := s + 2
|
||||||
|
// We end the search early, so we don't risk 0 literals
|
||||||
|
// and have to do special offset treatment.
|
||||||
|
startLimit := nextEmit + 1
|
||||||
|
|
||||||
|
sMin := s - e.maxMatchOff
|
||||||
|
if sMin < 0 {
|
||||||
|
sMin = 0
|
||||||
|
}
|
||||||
|
for repIndex > sMin && start > startLimit && src[repIndex-1] == src[start-1] {
|
||||||
|
repIndex--
|
||||||
|
start--
|
||||||
|
seq.matchLen++
|
||||||
|
}
|
||||||
|
addLiterals(&seq, start)
|
||||||
|
|
||||||
|
// rep 0
|
||||||
|
seq.offset = 1
|
||||||
|
if debugSequences {
|
||||||
|
println("repeat sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
s += lenght + 2
|
||||||
|
nextEmit = s
|
||||||
|
if s >= sLimit {
|
||||||
|
if debug {
|
||||||
|
println("repeat ended", s, lenght)
|
||||||
|
|
||||||
|
}
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
coffset0 := s - (candidate.offset - e.cur)
|
||||||
|
coffset1 := s - (candidate2.offset - e.cur) + 1
|
||||||
|
if coffset0 < e.maxMatchOff && uint32(cv) == candidate.val {
|
||||||
|
// found a regular match
|
||||||
|
t = candidate.offset - e.cur
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
if debug && s-t > e.maxMatchOff {
|
||||||
|
panic("s - t >e.maxMatchOff")
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if coffset1 < e.maxMatchOff && uint32(cv>>8) == candidate2.val {
|
||||||
|
// found a regular match
|
||||||
|
t = candidate2.offset - e.cur
|
||||||
|
s++
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
if debug && s-t > e.maxMatchOff {
|
||||||
|
panic("s - t >e.maxMatchOff")
|
||||||
|
}
|
||||||
|
if debug && t < 0 {
|
||||||
|
panic("t<0")
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
s += stepSize + ((s - nextEmit) >> (kSearchStrength - 1))
|
||||||
|
if s >= sLimit {
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
}
|
||||||
|
// A 4-byte match has been found. We'll later see if more than 4 bytes.
|
||||||
|
offset2 = offset1
|
||||||
|
offset1 = s - t
|
||||||
|
|
||||||
|
if debug && s <= t {
|
||||||
|
panic("s <= t")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend the 4-byte match as long as possible.
|
||||||
|
//l := e.matchlenNoHist(s+4, t+4, src) + 4
|
||||||
|
l := int32(matchLen(src[s+4:], src[t+4:])) + 4
|
||||||
|
|
||||||
|
// Extend backwards
|
||||||
|
tMin := s - e.maxMatchOff
|
||||||
|
if tMin < 0 {
|
||||||
|
tMin = 0
|
||||||
|
}
|
||||||
|
for t > tMin && s > nextEmit && src[t-1] == src[s-1] {
|
||||||
|
s--
|
||||||
|
t--
|
||||||
|
l++
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write our sequence.
|
||||||
|
var seq seq
|
||||||
|
seq.litLen = uint32(s - nextEmit)
|
||||||
|
seq.matchLen = uint32(l - zstdMinMatch)
|
||||||
|
if seq.litLen > 0 {
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:s]...)
|
||||||
|
}
|
||||||
|
// Don't use repeat offsets
|
||||||
|
seq.offset = uint32(s-t) + 3
|
||||||
|
s += l
|
||||||
|
if debugSequences {
|
||||||
|
println("sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
nextEmit = s
|
||||||
|
if s >= sLimit {
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
cv = load6432(src, s)
|
||||||
|
|
||||||
|
// Check offset 2
|
||||||
|
if o2 := s - offset2; len(blk.sequences) > 2 && load3232(src, o2) == uint32(cv) {
|
||||||
|
// We have at least 4 byte match.
|
||||||
|
// No need to check backwards. We come straight from a match
|
||||||
|
//l := 4 + e.matchlenNoHist(s+4, o2+4, src)
|
||||||
|
l := 4 + int32(matchLen(src[s+4:], src[o2+4:]))
|
||||||
|
|
||||||
|
// Store this, since we have it.
|
||||||
|
nextHash := hash6(cv, hashLog)
|
||||||
|
e.table[nextHash] = tableEntry{offset: s + e.cur, val: uint32(cv)}
|
||||||
|
seq.matchLen = uint32(l) - zstdMinMatch
|
||||||
|
seq.litLen = 0
|
||||||
|
// Since litlen is always 0, this is offset 1.
|
||||||
|
seq.offset = 1
|
||||||
|
s += l
|
||||||
|
nextEmit = s
|
||||||
|
if debugSequences {
|
||||||
|
println("sequence", seq, "next s:", s)
|
||||||
|
}
|
||||||
|
blk.sequences = append(blk.sequences, seq)
|
||||||
|
|
||||||
|
// Swap offset 1 and 2.
|
||||||
|
offset1, offset2 = offset2, offset1
|
||||||
|
if s >= sLimit {
|
||||||
|
break encodeLoop
|
||||||
|
}
|
||||||
|
// Prepare next loop.
|
||||||
|
cv = load6432(src, s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if int(nextEmit) < len(src) {
|
||||||
|
blk.literals = append(blk.literals, src[nextEmit:]...)
|
||||||
|
blk.extraLits = len(src) - int(nextEmit)
|
||||||
|
}
|
||||||
|
if debug {
|
||||||
|
println("returning, recent offsets:", blk.recentOffsets, "extra literals:", blk.extraLits)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (e *fastEncoder) addBlock(src []byte) int32 {
|
func (e *fastEncoder) addBlock(src []byte) int32 {
|
||||||
// check if we have space already
|
// check if we have space already
|
||||||
if len(e.hist)+len(src) > cap(e.hist) {
|
if len(e.hist)+len(src) > cap(e.hist) {
|
||||||
|
@ -362,6 +602,11 @@ func (e *fastEncoder) UseBlock(enc *blockEnc) {
|
||||||
e.blk = enc
|
e.blk = enc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (e *fastEncoder) matchlenNoHist(s, t int32, src []byte) int32 {
|
||||||
|
// Extend the match to be as long as possible.
|
||||||
|
return int32(matchLen(src[s:], src[t:]))
|
||||||
|
}
|
||||||
|
|
||||||
func (e *fastEncoder) matchlen(s, t int32, src []byte) int32 {
|
func (e *fastEncoder) matchlen(s, t int32, src []byte) int32 {
|
||||||
if debug {
|
if debug {
|
||||||
if s < 0 {
|
if s < 0 {
|
||||||
|
|
71
vendor/github.com/klauspost/compress/zstd/encoder.go
generated
vendored
71
vendor/github.com/klauspost/compress/zstd/encoder.go
generated
vendored
|
@ -29,6 +29,7 @@ type Encoder struct {
|
||||||
|
|
||||||
type encoder interface {
|
type encoder interface {
|
||||||
Encode(blk *blockEnc, src []byte)
|
Encode(blk *blockEnc, src []byte)
|
||||||
|
EncodeNoHist(blk *blockEnc, src []byte)
|
||||||
Block() *blockEnc
|
Block() *blockEnc
|
||||||
CRC() *xxhash.Digest
|
CRC() *xxhash.Digest
|
||||||
AppendCRC([]byte) []byte
|
AppendCRC([]byte) []byte
|
||||||
|
@ -433,7 +434,8 @@ func (e *Encoder) EncodeAll(src, dst []byte) []byte {
|
||||||
}()
|
}()
|
||||||
enc.Reset()
|
enc.Reset()
|
||||||
blk := enc.Block()
|
blk := enc.Block()
|
||||||
single := len(src) > 1<<20
|
// Use single segments when above minimum window and below 1MB.
|
||||||
|
single := len(src) < 1<<20 && len(src) > MinWindowSize
|
||||||
if e.o.single != nil {
|
if e.o.single != nil {
|
||||||
single = *e.o.single
|
single = *e.o.single
|
||||||
}
|
}
|
||||||
|
@ -454,25 +456,22 @@ func (e *Encoder) EncodeAll(src, dst []byte) []byte {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for len(src) > 0 {
|
if len(src) <= e.o.blockSize && len(src) <= maxBlockSize {
|
||||||
todo := src
|
// Slightly faster with no history and everything in one block.
|
||||||
if len(todo) > e.o.blockSize {
|
|
||||||
todo = todo[:e.o.blockSize]
|
|
||||||
}
|
|
||||||
src = src[len(todo):]
|
|
||||||
if e.o.crc {
|
if e.o.crc {
|
||||||
_, _ = enc.CRC().Write(todo)
|
_, _ = enc.CRC().Write(src)
|
||||||
}
|
}
|
||||||
blk.reset(nil)
|
blk.reset(nil)
|
||||||
blk.pushOffsets()
|
blk.last = true
|
||||||
enc.Encode(blk, todo)
|
enc.EncodeNoHist(blk, src)
|
||||||
if len(src) == 0 {
|
|
||||||
blk.last = true
|
|
||||||
}
|
|
||||||
err := errIncompressible
|
|
||||||
// If we got the exact same number of literals as input,
|
// If we got the exact same number of literals as input,
|
||||||
// assume the literals cannot be compressed.
|
// assume the literals cannot be compressed.
|
||||||
if len(blk.literals) != len(todo) || len(todo) != e.o.blockSize {
|
err := errIncompressible
|
||||||
|
oldout := blk.output
|
||||||
|
if len(blk.literals) != len(src) || len(src) != e.o.blockSize {
|
||||||
|
// Output directly to dst
|
||||||
|
blk.output = dst
|
||||||
err = blk.encode(e.o.noEntropy)
|
err = blk.encode(e.o.noEntropy)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,13 +480,49 @@ func (e *Encoder) EncodeAll(src, dst []byte) []byte {
|
||||||
if debug {
|
if debug {
|
||||||
println("Storing incompressible block as raw")
|
println("Storing incompressible block as raw")
|
||||||
}
|
}
|
||||||
blk.encodeRaw(todo)
|
dst = blk.encodeRawTo(dst, src)
|
||||||
blk.popOffsets()
|
|
||||||
case nil:
|
case nil:
|
||||||
|
dst = blk.output
|
||||||
default:
|
default:
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
dst = append(dst, blk.output...)
|
blk.output = oldout
|
||||||
|
} else {
|
||||||
|
for len(src) > 0 {
|
||||||
|
todo := src
|
||||||
|
if len(todo) > e.o.blockSize {
|
||||||
|
todo = todo[:e.o.blockSize]
|
||||||
|
}
|
||||||
|
src = src[len(todo):]
|
||||||
|
if e.o.crc {
|
||||||
|
_, _ = enc.CRC().Write(todo)
|
||||||
|
}
|
||||||
|
blk.reset(nil)
|
||||||
|
blk.pushOffsets()
|
||||||
|
enc.Encode(blk, todo)
|
||||||
|
if len(src) == 0 {
|
||||||
|
blk.last = true
|
||||||
|
}
|
||||||
|
err := errIncompressible
|
||||||
|
// If we got the exact same number of literals as input,
|
||||||
|
// assume the literals cannot be compressed.
|
||||||
|
if len(blk.literals) != len(todo) || len(todo) != e.o.blockSize {
|
||||||
|
err = blk.encode(e.o.noEntropy)
|
||||||
|
}
|
||||||
|
|
||||||
|
switch err {
|
||||||
|
case errIncompressible:
|
||||||
|
if debug {
|
||||||
|
println("Storing incompressible block as raw")
|
||||||
|
}
|
||||||
|
dst = blk.encodeRawTo(dst, todo)
|
||||||
|
blk.popOffsets()
|
||||||
|
case nil:
|
||||||
|
dst = append(dst, blk.output...)
|
||||||
|
default:
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if e.o.crc {
|
if e.o.crc {
|
||||||
dst = enc.AppendCRC(dst)
|
dst = enc.AppendCRC(dst)
|
||||||
|
|
2
vendor/golang.org/x/net/http2/transport.go
generated
vendored
2
vendor/golang.org/x/net/http2/transport.go
generated
vendored
|
@ -93,7 +93,7 @@ type Transport struct {
|
||||||
// send in the initial settings frame. It is how many bytes
|
// send in the initial settings frame. It is how many bytes
|
||||||
// of response headers are allowed. Unlike the http2 spec, zero here
|
// of response headers are allowed. Unlike the http2 spec, zero here
|
||||||
// means to use a default limit (currently 10MB). If you actually
|
// means to use a default limit (currently 10MB). If you actually
|
||||||
// want to advertise an ulimited value to the peer, Transport
|
// want to advertise an unlimited value to the peer, Transport
|
||||||
// interprets the highest possible value here (0xffffffff or 1<<32-1)
|
// interprets the highest possible value here (0xffffffff or 1<<32-1)
|
||||||
// to mean no limit.
|
// to mean no limit.
|
||||||
MaxHeaderListSize uint32
|
MaxHeaderListSize uint32
|
||||||
|
|
13
vendor/golang.org/x/oauth2/README.md
generated
vendored
13
vendor/golang.org/x/oauth2/README.md
generated
vendored
|
@ -16,15 +16,16 @@ Or you can manually git clone the repository to
|
||||||
|
|
||||||
See godoc for further documentation and examples.
|
See godoc for further documentation and examples.
|
||||||
|
|
||||||
* [godoc.org/golang.org/x/oauth2](http://godoc.org/golang.org/x/oauth2)
|
* [godoc.org/golang.org/x/oauth2](https://godoc.org/golang.org/x/oauth2)
|
||||||
* [godoc.org/golang.org/x/oauth2/google](http://godoc.org/golang.org/x/oauth2/google)
|
* [godoc.org/golang.org/x/oauth2/google](https://godoc.org/golang.org/x/oauth2/google)
|
||||||
|
|
||||||
## Policy for new packages
|
## Policy for new packages
|
||||||
|
|
||||||
We no longer accept new provider-specific packages in this repo. For
|
We no longer accept new provider-specific packages in this repo if all
|
||||||
defining provider endpoints and provider-specific OAuth2 behavior, we
|
they do is add a single endpoint variable. If you just want to add a
|
||||||
encourage you to create packages elsewhere. We'll keep the existing
|
single endpoint, add it to the
|
||||||
packages for compatibility.
|
[godoc.org/golang.org/x/oauth2/endpoints](https://godoc.org/golang.org/x/oauth2/endpoints)
|
||||||
|
package.
|
||||||
|
|
||||||
## Report Issues / Send Patches
|
## Report Issues / Send Patches
|
||||||
|
|
||||||
|
|
7
vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
generated
vendored
7
vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
generated
vendored
|
@ -23,10 +23,6 @@ TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
|
||||||
MOV a1+8(FP), A0
|
MOV a1+8(FP), A0
|
||||||
MOV a2+16(FP), A1
|
MOV a2+16(FP), A1
|
||||||
MOV a3+24(FP), A2
|
MOV a3+24(FP), A2
|
||||||
MOV $0, A3
|
|
||||||
MOV $0, A4
|
|
||||||
MOV $0, A5
|
|
||||||
MOV $0, A6
|
|
||||||
MOV trap+0(FP), A7 // syscall entry
|
MOV trap+0(FP), A7 // syscall entry
|
||||||
ECALL
|
ECALL
|
||||||
MOV A0, r1+32(FP) // r1
|
MOV A0, r1+32(FP) // r1
|
||||||
|
@ -44,9 +40,6 @@ TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
|
||||||
MOV a1+8(FP), A0
|
MOV a1+8(FP), A0
|
||||||
MOV a2+16(FP), A1
|
MOV a2+16(FP), A1
|
||||||
MOV a3+24(FP), A2
|
MOV a3+24(FP), A2
|
||||||
MOV ZERO, A3
|
|
||||||
MOV ZERO, A4
|
|
||||||
MOV ZERO, A5
|
|
||||||
MOV trap+0(FP), A7 // syscall entry
|
MOV trap+0(FP), A7 // syscall entry
|
||||||
ECALL
|
ECALL
|
||||||
MOV A0, r1+32(FP)
|
MOV A0, r1+32(FP)
|
||||||
|
|
17
vendor/golang.org/x/sys/unix/syscall_bsd.go
generated
vendored
17
vendor/golang.org/x/sys/unix/syscall_bsd.go
generated
vendored
|
@ -510,6 +510,23 @@ func SysctlRaw(name string, args ...int) ([]byte, error) {
|
||||||
return buf[:n], nil
|
return buf[:n], nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func SysctlClockinfo(name string) (*Clockinfo, error) {
|
||||||
|
mib, err := sysctlmib(name)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
n := uintptr(SizeofClockinfo)
|
||||||
|
var ci Clockinfo
|
||||||
|
if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if n != SizeofClockinfo {
|
||||||
|
return nil, EIO
|
||||||
|
}
|
||||||
|
return &ci, nil
|
||||||
|
}
|
||||||
|
|
||||||
//sys utimes(path string, timeval *[2]Timeval) (err error)
|
//sys utimes(path string, timeval *[2]Timeval) (err error)
|
||||||
|
|
||||||
func Utimes(path string, tv []Timeval) error {
|
func Utimes(path string, tv []Timeval) error {
|
||||||
|
|
17
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
17
vendor/golang.org/x/sys/unix/syscall_darwin.go
generated
vendored
|
@ -155,23 +155,6 @@ func getAttrList(path string, attrList attrList, attrBuf []byte, options uint) (
|
||||||
|
|
||||||
//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
|
//sys getattrlist(path *byte, list unsafe.Pointer, buf unsafe.Pointer, size uintptr, options int) (err error)
|
||||||
|
|
||||||
func SysctlClockinfo(name string) (*Clockinfo, error) {
|
|
||||||
mib, err := sysctlmib(name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
n := uintptr(SizeofClockinfo)
|
|
||||||
var ci Clockinfo
|
|
||||||
if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if n != SizeofClockinfo {
|
|
||||||
return nil, EIO
|
|
||||||
}
|
|
||||||
return &ci, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
//sysnb pipe() (r int, w int, err error)
|
//sysnb pipe() (r int, w int, err error)
|
||||||
|
|
||||||
func Pipe(p []int) (err error) {
|
func Pipe(p []int) (err error) {
|
||||||
|
|
2
vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
generated
vendored
2
vendor/golang.org/x/sys/unix/syscall_darwin_arm.1_11.go
generated
vendored
|
@ -2,7 +2,7 @@
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// +build darwin,386,!go1.12
|
// +build darwin,arm,!go1.12
|
||||||
|
|
||||||
package unix
|
package unix
|
||||||
|
|
||||||
|
|
22
vendor/golang.org/x/sys/unix/syscall_netbsd.go
generated
vendored
22
vendor/golang.org/x/sys/unix/syscall_netbsd.go
generated
vendored
|
@ -106,23 +106,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
|
||||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysctlClockinfo(name string) (*Clockinfo, error) {
|
|
||||||
mib, err := sysctlmib(name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
n := uintptr(SizeofClockinfo)
|
|
||||||
var ci Clockinfo
|
|
||||||
if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if n != SizeofClockinfo {
|
|
||||||
return nil, EIO
|
|
||||||
}
|
|
||||||
return &ci, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
//sysnb pipe() (fd1 int, fd2 int, err error)
|
//sysnb pipe() (fd1 int, fd2 int, err error)
|
||||||
func Pipe(p []int) (err error) {
|
func Pipe(p []int) (err error) {
|
||||||
if len(p) != 2 {
|
if len(p) != 2 {
|
||||||
|
@ -270,6 +253,7 @@ func Statvfs(path string, buf *Statvfs_t) (err error) {
|
||||||
//sys Close(fd int) (err error)
|
//sys Close(fd int) (err error)
|
||||||
//sys Dup(fd int) (nfd int, err error)
|
//sys Dup(fd int) (nfd int, err error)
|
||||||
//sys Dup2(from int, to int) (err error)
|
//sys Dup2(from int, to int) (err error)
|
||||||
|
//sys Dup3(from int, to int, flags int) (err error)
|
||||||
//sys Exit(code int)
|
//sys Exit(code int)
|
||||||
//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
|
//sys ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
|
||||||
//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
|
//sys ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)
|
||||||
|
@ -295,7 +279,7 @@ func Statvfs(path string, buf *Statvfs_t) (err error) {
|
||||||
//sys Fpathconf(fd int, name int) (val int, err error)
|
//sys Fpathconf(fd int, name int) (val int, err error)
|
||||||
//sys Fstat(fd int, stat *Stat_t) (err error)
|
//sys Fstat(fd int, stat *Stat_t) (err error)
|
||||||
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
|
//sys Fstatat(fd int, path string, stat *Stat_t, flags int) (err error)
|
||||||
//sys Fstatvfs1(fd int, buf *Statvfs_t) (err error) = SYS_FSTATVFS1
|
//sys Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1
|
||||||
//sys Fsync(fd int) (err error)
|
//sys Fsync(fd int) (err error)
|
||||||
//sys Ftruncate(fd int, length int64) (err error)
|
//sys Ftruncate(fd int, length int64) (err error)
|
||||||
//sysnb Getegid() (egid int)
|
//sysnb Getegid() (egid int)
|
||||||
|
@ -352,7 +336,7 @@ func Statvfs(path string, buf *Statvfs_t) (err error) {
|
||||||
//sysnb Settimeofday(tp *Timeval) (err error)
|
//sysnb Settimeofday(tp *Timeval) (err error)
|
||||||
//sysnb Setuid(uid int) (err error)
|
//sysnb Setuid(uid int) (err error)
|
||||||
//sys Stat(path string, stat *Stat_t) (err error)
|
//sys Stat(path string, stat *Stat_t) (err error)
|
||||||
//sys Statvfs1(path string, buf *Statvfs_t) (err error) = SYS_STATVFS1
|
//sys Statvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1
|
||||||
//sys Symlink(path string, link string) (err error)
|
//sys Symlink(path string, link string) (err error)
|
||||||
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
//sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
|
||||||
//sys Sync() (err error)
|
//sys Sync() (err error)
|
||||||
|
|
18
vendor/golang.org/x/sys/unix/syscall_openbsd.go
generated
vendored
18
vendor/golang.org/x/sys/unix/syscall_openbsd.go
generated
vendored
|
@ -55,23 +55,6 @@ func direntNamlen(buf []byte) (uint64, bool) {
|
||||||
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
return readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))
|
||||||
}
|
}
|
||||||
|
|
||||||
func SysctlClockinfo(name string) (*Clockinfo, error) {
|
|
||||||
mib, err := sysctlmib(name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
n := uintptr(SizeofClockinfo)
|
|
||||||
var ci Clockinfo
|
|
||||||
if err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if n != SizeofClockinfo {
|
|
||||||
return nil, EIO
|
|
||||||
}
|
|
||||||
return &ci, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func SysctlUvmexp(name string) (*Uvmexp, error) {
|
func SysctlUvmexp(name string) (*Uvmexp, error) {
|
||||||
mib, err := sysctlmib(name)
|
mib, err := sysctlmib(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -248,6 +231,7 @@ func Uname(uname *Utsname) error {
|
||||||
//sys Close(fd int) (err error)
|
//sys Close(fd int) (err error)
|
||||||
//sys Dup(fd int) (nfd int, err error)
|
//sys Dup(fd int) (nfd int, err error)
|
||||||
//sys Dup2(from int, to int) (err error)
|
//sys Dup2(from int, to int) (err error)
|
||||||
|
//sys Dup3(from int, to int, flags int) (err error)
|
||||||
//sys Exit(code int)
|
//sys Exit(code int)
|
||||||
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
|
//sys Faccessat(dirfd int, path string, mode uint32, flags int) (err error)
|
||||||
//sys Fchdir(fd int) (err error)
|
//sys Fchdir(fd int) (err error)
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe() (fd1 int, fd2 int, err error) {
|
func pipe() (fd1 int, fd2 int, err error) {
|
||||||
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
||||||
fd1 = int(r0)
|
fd1 = int(r0)
|
||||||
|
@ -422,6 +406,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -553,6 +553,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe() (fd1 int, fd2 int, err error) {
|
func pipe() (fd1 int, fd2 int, err error) {
|
||||||
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
||||||
fd1 = int(r0)
|
fd1 = int(r0)
|
||||||
|
@ -422,6 +406,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -553,6 +553,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe() (fd1 int, fd2 int, err error) {
|
func pipe() (fd1 int, fd2 int, err error) {
|
||||||
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
||||||
fd1 = int(r0)
|
fd1 = int(r0)
|
||||||
|
@ -422,6 +406,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -553,6 +553,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe() (fd1 int, fd2 int, err error) {
|
func pipe() (fd1 int, fd2 int, err error) {
|
||||||
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
r0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)
|
||||||
fd1 = int(r0)
|
fd1 = int(r0)
|
||||||
|
@ -422,6 +406,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Access(path string, mode uint32) (err error) {
|
func Access(path string, mode uint32) (err error) {
|
||||||
var _p0 *byte
|
var _p0 *byte
|
||||||
_p0, err = BytePtrFromString(path)
|
_p0, err = BytePtrFromString(path)
|
||||||
|
@ -553,6 +553,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe(p *[2]_C_int) (err error) {
|
func pipe(p *[2]_C_int) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -420,6 +404,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
@ -562,6 +562,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe(p *[2]_C_int) (err error) {
|
func pipe(p *[2]_C_int) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -420,6 +404,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
@ -562,6 +562,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe(p *[2]_C_int) (err error) {
|
func pipe(p *[2]_C_int) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -420,6 +404,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
@ -562,6 +562,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
generated
vendored
42
vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go
generated
vendored
|
@ -350,22 +350,6 @@ func Munlockall() (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
|
||||||
var _p0 unsafe.Pointer
|
|
||||||
if len(mib) > 0 {
|
|
||||||
_p0 = unsafe.Pointer(&mib[0])
|
|
||||||
} else {
|
|
||||||
_p0 = unsafe.Pointer(&_zero)
|
|
||||||
}
|
|
||||||
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
|
||||||
if e1 != 0 {
|
|
||||||
err = errnoErr(e1)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
|
||||||
|
|
||||||
func pipe(p *[2]_C_int) (err error) {
|
func pipe(p *[2]_C_int) (err error) {
|
||||||
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
_, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)
|
||||||
if e1 != 0 {
|
if e1 != 0 {
|
||||||
|
@ -420,6 +404,22 @@ func ioctl(fd int, req uint, arg uintptr) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {
|
||||||
|
var _p0 unsafe.Pointer
|
||||||
|
if len(mib) > 0 {
|
||||||
|
_p0 = unsafe.Pointer(&mib[0])
|
||||||
|
} else {
|
||||||
|
_p0 = unsafe.Pointer(&_zero)
|
||||||
|
}
|
||||||
|
_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
func ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
|
||||||
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
r0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)
|
||||||
n = int(r0)
|
n = int(r0)
|
||||||
|
@ -562,6 +562,16 @@ func Dup2(from int, to int) (err error) {
|
||||||
|
|
||||||
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
|
func Dup3(from int, to int, flags int) (err error) {
|
||||||
|
_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))
|
||||||
|
if e1 != 0 {
|
||||||
|
err = errnoErr(e1)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT
|
||||||
|
|
||||||
func Exit(code int) {
|
func Exit(code int) {
|
||||||
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
Syscall(SYS_EXIT, uintptr(code), 0, 0)
|
||||||
return
|
return
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go
generated
vendored
|
@ -467,3 +467,13 @@ type Utsname struct {
|
||||||
Version [32]byte
|
Version [32]byte
|
||||||
Machine [32]byte
|
Machine [32]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeofClockinfo = 0x14
|
||||||
|
|
||||||
|
type Clockinfo struct {
|
||||||
|
Hz int32
|
||||||
|
Tick int32
|
||||||
|
Tickadj int32
|
||||||
|
Stathz int32
|
||||||
|
Profhz int32
|
||||||
|
}
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go
generated
vendored
|
@ -698,3 +698,13 @@ type Utsname struct {
|
||||||
Version [256]byte
|
Version [256]byte
|
||||||
Machine [256]byte
|
Machine [256]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeofClockinfo = 0x14
|
||||||
|
|
||||||
|
type Clockinfo struct {
|
||||||
|
Hz int32
|
||||||
|
Tick int32
|
||||||
|
Spare int32
|
||||||
|
Stathz int32
|
||||||
|
Profhz int32
|
||||||
|
}
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go
generated
vendored
|
@ -704,3 +704,13 @@ type Utsname struct {
|
||||||
Version [256]byte
|
Version [256]byte
|
||||||
Machine [256]byte
|
Machine [256]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeofClockinfo = 0x14
|
||||||
|
|
||||||
|
type Clockinfo struct {
|
||||||
|
Hz int32
|
||||||
|
Tick int32
|
||||||
|
Spare int32
|
||||||
|
Stathz int32
|
||||||
|
Profhz int32
|
||||||
|
}
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go
generated
vendored
|
@ -681,3 +681,13 @@ type Utsname struct {
|
||||||
Version [256]byte
|
Version [256]byte
|
||||||
Machine [256]byte
|
Machine [256]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeofClockinfo = 0x14
|
||||||
|
|
||||||
|
type Clockinfo struct {
|
||||||
|
Hz int32
|
||||||
|
Tick int32
|
||||||
|
Spare int32
|
||||||
|
Stathz int32
|
||||||
|
Profhz int32
|
||||||
|
}
|
||||||
|
|
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
generated
vendored
10
vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go
generated
vendored
|
@ -682,3 +682,13 @@ type Utsname struct {
|
||||||
Version [256]byte
|
Version [256]byte
|
||||||
Machine [256]byte
|
Machine [256]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const SizeofClockinfo = 0x14
|
||||||
|
|
||||||
|
type Clockinfo struct {
|
||||||
|
Hz int32
|
||||||
|
Tick int32
|
||||||
|
Spare int32
|
||||||
|
Stathz int32
|
||||||
|
Profhz int32
|
||||||
|
}
|
||||||
|
|
7
vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
generated
vendored
7
vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go
generated
vendored
|
@ -211,6 +211,12 @@ type Cmsghdr struct {
|
||||||
Type int32
|
Type int32
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Inet4Pktinfo struct {
|
||||||
|
Ifindex uint32
|
||||||
|
Spec_dst [4]byte /* in_addr */
|
||||||
|
Addr [4]byte /* in_addr */
|
||||||
|
}
|
||||||
|
|
||||||
type Inet6Pktinfo struct {
|
type Inet6Pktinfo struct {
|
||||||
Addr [16]byte /* in6_addr */
|
Addr [16]byte /* in6_addr */
|
||||||
Ifindex uint32
|
Ifindex uint32
|
||||||
|
@ -236,6 +242,7 @@ const (
|
||||||
SizeofIPv6Mreq = 0x14
|
SizeofIPv6Mreq = 0x14
|
||||||
SizeofMsghdr = 0x30
|
SizeofMsghdr = 0x30
|
||||||
SizeofCmsghdr = 0xc
|
SizeofCmsghdr = 0xc
|
||||||
|
SizeofInet4Pktinfo = 0xc
|
||||||
SizeofInet6Pktinfo = 0x14
|
SizeofInet6Pktinfo = 0x14
|
||||||
SizeofIPv6MTUInfo = 0x24
|
SizeofIPv6MTUInfo = 0x24
|
||||||
SizeofICMPv6Filter = 0x20
|
SizeofICMPv6Filter = 0x20
|
||||||
|
|
33
vendor/golang.org/x/tools/go/analysis/doc.go
generated
vendored
33
vendor/golang.org/x/tools/go/analysis/doc.go
generated
vendored
|
@ -70,39 +70,6 @@ A driver may use the name, flags, and documentation to provide on-line
|
||||||
help that describes the analyses it performs.
|
help that describes the analyses it performs.
|
||||||
The doc comment contains a brief one-line summary,
|
The doc comment contains a brief one-line summary,
|
||||||
optionally followed by paragraphs of explanation.
|
optionally followed by paragraphs of explanation.
|
||||||
The vet command, shown below, is an example of a driver that runs
|
|
||||||
multiple analyzers. It is based on the multichecker package
|
|
||||||
(see the "Standalone commands" section for details).
|
|
||||||
|
|
||||||
$ go build golang.org/x/tools/go/analysis/cmd/vet
|
|
||||||
$ ./vet help
|
|
||||||
vet is a tool for static analysis of Go programs.
|
|
||||||
|
|
||||||
Usage: vet [-flag] [package]
|
|
||||||
|
|
||||||
Registered analyzers:
|
|
||||||
|
|
||||||
asmdecl report mismatches between assembly files and Go declarations
|
|
||||||
assign check for useless assignments
|
|
||||||
atomic check for common mistakes using the sync/atomic package
|
|
||||||
...
|
|
||||||
unusedresult check for unused results of calls to some functions
|
|
||||||
|
|
||||||
$ ./vet help unusedresult
|
|
||||||
unusedresult: check for unused results of calls to some functions
|
|
||||||
|
|
||||||
Analyzer flags:
|
|
||||||
|
|
||||||
-unusedresult.funcs value
|
|
||||||
comma-separated list of functions whose results must be used (default Error,String)
|
|
||||||
-unusedresult.stringmethods value
|
|
||||||
comma-separated list of names of methods of type func() string whose results must be used
|
|
||||||
|
|
||||||
Some functions like fmt.Errorf return a result and have no side effects,
|
|
||||||
so it is always a mistake to discard the result. This analyzer reports
|
|
||||||
calls to certain functions in which the result of the call is ignored.
|
|
||||||
|
|
||||||
The set of functions may be controlled using flags.
|
|
||||||
|
|
||||||
The Analyzer type has more fields besides those shown above:
|
The Analyzer type has more fields besides those shown above:
|
||||||
|
|
||||||
|
|
11
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
11
vendor/golang.org/x/tools/go/packages/golist.go
generated
vendored
|
@ -673,7 +673,7 @@ func golistDriver(cfg *Config, rootsDirs func() *goInfo, words ...string) (*driv
|
||||||
|
|
||||||
// Run "go list" for complete
|
// Run "go list" for complete
|
||||||
// information on the specified packages.
|
// information on the specified packages.
|
||||||
buf, err := invokeGo(cfg, golistargs(cfg, words)...)
|
buf, err := invokeGo(cfg, "list", golistargs(cfg, words)...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -877,7 +877,7 @@ func absJoin(dir string, fileses ...[]string) (res []string) {
|
||||||
func golistargs(cfg *Config, words []string) []string {
|
func golistargs(cfg *Config, words []string) []string {
|
||||||
const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo
|
const findFlags = NeedImports | NeedTypes | NeedSyntax | NeedTypesInfo
|
||||||
fullargs := []string{
|
fullargs := []string{
|
||||||
"list", "-e", "-json",
|
"-e", "-json",
|
||||||
fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypesInfo|NeedTypesSizes) != 0),
|
fmt.Sprintf("-compiled=%t", cfg.Mode&(NeedCompiledGoFiles|NeedSyntax|NeedTypesInfo|NeedTypesSizes) != 0),
|
||||||
fmt.Sprintf("-test=%t", cfg.Tests),
|
fmt.Sprintf("-test=%t", cfg.Tests),
|
||||||
fmt.Sprintf("-export=%t", usesExportData(cfg)),
|
fmt.Sprintf("-export=%t", usesExportData(cfg)),
|
||||||
|
@ -893,10 +893,13 @@ func golistargs(cfg *Config, words []string) []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// invokeGo returns the stdout of a go command invocation.
|
// invokeGo returns the stdout of a go command invocation.
|
||||||
func invokeGo(cfg *Config, args ...string) (*bytes.Buffer, error) {
|
func invokeGo(cfg *Config, verb string, args ...string) (*bytes.Buffer, error) {
|
||||||
stdout := new(bytes.Buffer)
|
stdout := new(bytes.Buffer)
|
||||||
stderr := new(bytes.Buffer)
|
stderr := new(bytes.Buffer)
|
||||||
cmd := exec.CommandContext(cfg.Context, "go", args...)
|
goArgs := []string{verb}
|
||||||
|
goArgs = append(goArgs, cfg.BuildFlags...)
|
||||||
|
goArgs = append(goArgs, args...)
|
||||||
|
cmd := exec.CommandContext(cfg.Context, "go", goArgs...)
|
||||||
// On darwin the cwd gets resolved to the real path, which breaks anything that
|
// On darwin the cwd gets resolved to the real path, which breaks anything that
|
||||||
// expects the working directory to keep the original path, including the
|
// expects the working directory to keep the original path, including the
|
||||||
// go command when dealing with modules.
|
// go command when dealing with modules.
|
||||||
|
|
2
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
2
vendor/golang.org/x/tools/go/packages/packages.go
generated
vendored
|
@ -160,7 +160,7 @@ type Config struct {
|
||||||
Tests bool
|
Tests bool
|
||||||
|
|
||||||
// Overlay provides a mapping of absolute file paths to file contents.
|
// Overlay provides a mapping of absolute file paths to file contents.
|
||||||
// If the file with the given path already exists, the parser will use the
|
// If the file with the given path already exists, the parser will use the
|
||||||
// alternative file contents provided by the map.
|
// alternative file contents provided by the map.
|
||||||
//
|
//
|
||||||
// Overlays provide incomplete support for when a given file doesn't
|
// Overlays provide incomplete support for when a given file doesn't
|
||||||
|
|
535
vendor/golang.org/x/tools/internal/imports/fix.go
generated
vendored
535
vendor/golang.org/x/tools/internal/imports/fix.go
generated
vendored
|
@ -27,7 +27,6 @@ import (
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
"golang.org/x/tools/go/ast/astutil"
|
"golang.org/x/tools/go/ast/astutil"
|
||||||
"golang.org/x/tools/go/packages"
|
|
||||||
"golang.org/x/tools/internal/gopathwalk"
|
"golang.org/x/tools/internal/gopathwalk"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -82,7 +81,8 @@ type ImportFix struct {
|
||||||
// IdentName is the identifier that this fix will add or remove.
|
// IdentName is the identifier that this fix will add or remove.
|
||||||
IdentName string
|
IdentName string
|
||||||
// FixType is the type of fix this is (AddImport, DeleteImport, SetImportName).
|
// FixType is the type of fix this is (AddImport, DeleteImport, SetImportName).
|
||||||
FixType ImportFixType
|
FixType ImportFixType
|
||||||
|
Relevance int // see pkg
|
||||||
}
|
}
|
||||||
|
|
||||||
// An ImportInfo represents a single import statement.
|
// An ImportInfo represents a single import statement.
|
||||||
|
@ -585,62 +585,62 @@ func getFixes(fset *token.FileSet, f *ast.File, filename string, env *ProcessEnv
|
||||||
return fixes, nil
|
return fixes, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// getCandidatePkgs returns the list of pkgs that are accessible from filename,
|
// Highest relevance, used for the standard library. Chosen arbitrarily to
|
||||||
// optionall filtered to only packages named pkgName.
|
// match pre-existing gopls code.
|
||||||
func getCandidatePkgs(pkgName, filename string, env *ProcessEnv) ([]*pkg, error) {
|
const MaxRelevance = 7
|
||||||
// TODO(heschi): filter out current package. (Don't forget x_test can import x.)
|
|
||||||
|
|
||||||
var result []*pkg
|
// getCandidatePkgs works with the passed callback to find all acceptable packages.
|
||||||
|
// It deduplicates by import path, and uses a cached stdlib rather than reading
|
||||||
|
// from disk.
|
||||||
|
func getCandidatePkgs(ctx context.Context, wrappedCallback *scanCallback, filename, filePkg string, env *ProcessEnv) error {
|
||||||
|
notSelf := func(p *pkg) bool {
|
||||||
|
return p.packageName != filePkg || p.dir != filepath.Dir(filename)
|
||||||
|
}
|
||||||
// Start off with the standard library.
|
// Start off with the standard library.
|
||||||
for importPath := range stdlib {
|
for importPath, exports := range stdlib {
|
||||||
if pkgName != "" && path.Base(importPath) != pkgName {
|
p := &pkg{
|
||||||
continue
|
|
||||||
}
|
|
||||||
result = append(result, &pkg{
|
|
||||||
dir: filepath.Join(env.GOROOT, "src", importPath),
|
dir: filepath.Join(env.GOROOT, "src", importPath),
|
||||||
importPathShort: importPath,
|
importPathShort: importPath,
|
||||||
packageName: path.Base(importPath),
|
packageName: path.Base(importPath),
|
||||||
relevance: 0,
|
relevance: MaxRelevance,
|
||||||
})
|
}
|
||||||
}
|
if notSelf(p) && wrappedCallback.packageNameLoaded(p) {
|
||||||
|
wrappedCallback.exportsLoaded(p, exports)
|
||||||
// Exclude goroot results -- getting them is relatively expensive, not cached,
|
}
|
||||||
// and generally redundant with the in-memory version.
|
|
||||||
exclude := []gopathwalk.RootType{gopathwalk.RootGOROOT}
|
|
||||||
// Only the go/packages resolver uses the first argument, and nobody uses that resolver.
|
|
||||||
scannedPkgs, err := env.GetResolver().scan(nil, true, exclude)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var mu sync.Mutex
|
||||||
dupCheck := map[string]struct{}{}
|
dupCheck := map[string]struct{}{}
|
||||||
for _, pkg := range scannedPkgs {
|
|
||||||
if pkgName != "" && pkg.packageName != pkgName {
|
scanFilter := &scanCallback{
|
||||||
continue
|
rootFound: func(root gopathwalk.Root) bool {
|
||||||
}
|
// Exclude goroot results -- getting them is relatively expensive, not cached,
|
||||||
if !canUse(filename, pkg.dir) {
|
// and generally redundant with the in-memory version.
|
||||||
continue
|
return root.Type != gopathwalk.RootGOROOT && wrappedCallback.rootFound(root)
|
||||||
}
|
},
|
||||||
if _, ok := dupCheck[pkg.importPathShort]; ok {
|
dirFound: wrappedCallback.dirFound,
|
||||||
continue
|
packageNameLoaded: func(pkg *pkg) bool {
|
||||||
}
|
mu.Lock()
|
||||||
dupCheck[pkg.importPathShort] = struct{}{}
|
defer mu.Unlock()
|
||||||
result = append(result, pkg)
|
if _, ok := dupCheck[pkg.importPathShort]; ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
dupCheck[pkg.importPathShort] = struct{}{}
|
||||||
|
return notSelf(pkg) && wrappedCallback.packageNameLoaded(pkg)
|
||||||
|
},
|
||||||
|
exportsLoaded: func(pkg *pkg, exports []string) {
|
||||||
|
// If we're an x_test, load the package under test's test variant.
|
||||||
|
if strings.HasSuffix(filePkg, "_test") && pkg.dir == filepath.Dir(filename) {
|
||||||
|
var err error
|
||||||
|
_, exports, err = loadExportsFromFiles(ctx, env, pkg.dir, true)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wrappedCallback.exportsLoaded(pkg, exports)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
return env.GetResolver().scan(ctx, scanFilter)
|
||||||
// Sort first by relevance, then by package name, with import path as a tiebreaker.
|
|
||||||
sort.Slice(result, func(i, j int) bool {
|
|
||||||
pi, pj := result[i], result[j]
|
|
||||||
if pi.relevance != pj.relevance {
|
|
||||||
return pi.relevance < pj.relevance
|
|
||||||
}
|
|
||||||
if pi.packageName != pj.packageName {
|
|
||||||
return pi.packageName < pj.packageName
|
|
||||||
}
|
|
||||||
return pi.importPathShort < pj.importPathShort
|
|
||||||
})
|
|
||||||
|
|
||||||
return result, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func candidateImportName(pkg *pkg) string {
|
func candidateImportName(pkg *pkg) string {
|
||||||
|
@ -651,23 +651,37 @@ func candidateImportName(pkg *pkg) string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// getAllCandidates gets all of the candidates to be imported, regardless of if they are needed.
|
// getAllCandidates gets all of the candidates to be imported, regardless of if they are needed.
|
||||||
func getAllCandidates(filename string, env *ProcessEnv) ([]ImportFix, error) {
|
func getAllCandidates(ctx context.Context, wrapped func(ImportFix), searchPrefix, filename, filePkg string, env *ProcessEnv) error {
|
||||||
pkgs, err := getCandidatePkgs("", filename, env)
|
callback := &scanCallback{
|
||||||
if err != nil {
|
rootFound: func(gopathwalk.Root) bool {
|
||||||
return nil, err
|
return true
|
||||||
|
},
|
||||||
|
dirFound: func(pkg *pkg) bool {
|
||||||
|
if !canUse(filename, pkg.dir) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// Try the assumed package name first, then a simpler path match
|
||||||
|
// in case of packages named vN, which are not uncommon.
|
||||||
|
return strings.HasPrefix(ImportPathToAssumedName(pkg.importPathShort), searchPrefix) ||
|
||||||
|
strings.HasPrefix(path.Base(pkg.importPathShort), searchPrefix)
|
||||||
|
},
|
||||||
|
packageNameLoaded: func(pkg *pkg) bool {
|
||||||
|
if !strings.HasPrefix(pkg.packageName, searchPrefix) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
wrapped(ImportFix{
|
||||||
|
StmtInfo: ImportInfo{
|
||||||
|
ImportPath: pkg.importPathShort,
|
||||||
|
Name: candidateImportName(pkg),
|
||||||
|
},
|
||||||
|
IdentName: pkg.packageName,
|
||||||
|
FixType: AddImport,
|
||||||
|
Relevance: pkg.relevance,
|
||||||
|
})
|
||||||
|
return false
|
||||||
|
},
|
||||||
}
|
}
|
||||||
result := make([]ImportFix, 0, len(pkgs))
|
return getCandidatePkgs(ctx, callback, filename, filePkg, env)
|
||||||
for _, pkg := range pkgs {
|
|
||||||
result = append(result, ImportFix{
|
|
||||||
StmtInfo: ImportInfo{
|
|
||||||
ImportPath: pkg.importPathShort,
|
|
||||||
Name: candidateImportName(pkg),
|
|
||||||
},
|
|
||||||
IdentName: pkg.packageName,
|
|
||||||
FixType: AddImport,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// A PackageExport is a package and its exports.
|
// A PackageExport is a package and its exports.
|
||||||
|
@ -676,42 +690,34 @@ type PackageExport struct {
|
||||||
Exports []string
|
Exports []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPackageExports(completePackage, filename string, env *ProcessEnv) ([]PackageExport, error) {
|
func getPackageExports(ctx context.Context, wrapped func(PackageExport), searchPkg, filename, filePkg string, env *ProcessEnv) error {
|
||||||
pkgs, err := getCandidatePkgs(completePackage, filename, env)
|
callback := &scanCallback{
|
||||||
if err != nil {
|
rootFound: func(gopathwalk.Root) bool {
|
||||||
return nil, err
|
return true
|
||||||
|
},
|
||||||
|
dirFound: func(pkg *pkg) bool {
|
||||||
|
return pkgIsCandidate(filename, references{searchPkg: nil}, pkg)
|
||||||
|
},
|
||||||
|
packageNameLoaded: func(pkg *pkg) bool {
|
||||||
|
return pkg.packageName == searchPkg
|
||||||
|
},
|
||||||
|
exportsLoaded: func(pkg *pkg, exports []string) {
|
||||||
|
sort.Strings(exports)
|
||||||
|
wrapped(PackageExport{
|
||||||
|
Fix: &ImportFix{
|
||||||
|
StmtInfo: ImportInfo{
|
||||||
|
ImportPath: pkg.importPathShort,
|
||||||
|
Name: candidateImportName(pkg),
|
||||||
|
},
|
||||||
|
IdentName: pkg.packageName,
|
||||||
|
FixType: AddImport,
|
||||||
|
Relevance: pkg.relevance,
|
||||||
|
},
|
||||||
|
Exports: exports,
|
||||||
|
})
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
return getCandidatePkgs(ctx, callback, filename, filePkg, env)
|
||||||
results := make([]PackageExport, 0, len(pkgs))
|
|
||||||
for _, pkg := range pkgs {
|
|
||||||
fix := &ImportFix{
|
|
||||||
StmtInfo: ImportInfo{
|
|
||||||
ImportPath: pkg.importPathShort,
|
|
||||||
Name: candidateImportName(pkg),
|
|
||||||
},
|
|
||||||
IdentName: pkg.packageName,
|
|
||||||
FixType: AddImport,
|
|
||||||
}
|
|
||||||
var exports []string
|
|
||||||
if e, ok := stdlib[pkg.importPathShort]; ok {
|
|
||||||
exports = e
|
|
||||||
} else {
|
|
||||||
exports, err = loadExportsForPackage(context.Background(), env, completePackage, pkg)
|
|
||||||
if err != nil {
|
|
||||||
if env.Debug {
|
|
||||||
env.Logf("while completing %q, error loading exports from %q: %v", completePackage, pkg.importPathShort, err)
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sort.Strings(exports)
|
|
||||||
results = append(results, PackageExport{
|
|
||||||
Fix: fix,
|
|
||||||
Exports: exports,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return results, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ProcessEnv contains environment variables and settings that affect the use of
|
// ProcessEnv contains environment variables and settings that affect the use of
|
||||||
|
@ -725,9 +731,6 @@ type ProcessEnv struct {
|
||||||
GOPATH, GOROOT, GO111MODULE, GOPROXY, GOFLAGS, GOSUMDB string
|
GOPATH, GOROOT, GO111MODULE, GOPROXY, GOFLAGS, GOSUMDB string
|
||||||
WorkingDir string
|
WorkingDir string
|
||||||
|
|
||||||
// If true, use go/packages regardless of the environment.
|
|
||||||
ForceGoPackages bool
|
|
||||||
|
|
||||||
// Logf is the default logger for the ProcessEnv.
|
// Logf is the default logger for the ProcessEnv.
|
||||||
Logf func(format string, args ...interface{})
|
Logf func(format string, args ...interface{})
|
||||||
|
|
||||||
|
@ -757,28 +760,15 @@ func (e *ProcessEnv) GetResolver() Resolver {
|
||||||
if e.resolver != nil {
|
if e.resolver != nil {
|
||||||
return e.resolver
|
return e.resolver
|
||||||
}
|
}
|
||||||
if e.ForceGoPackages {
|
|
||||||
e.resolver = &goPackagesResolver{env: e}
|
|
||||||
return e.resolver
|
|
||||||
}
|
|
||||||
|
|
||||||
out, err := e.invokeGo("env", "GOMOD")
|
out, err := e.invokeGo("env", "GOMOD")
|
||||||
if err != nil || len(bytes.TrimSpace(out.Bytes())) == 0 {
|
if err != nil || len(bytes.TrimSpace(out.Bytes())) == 0 {
|
||||||
e.resolver = &gopathResolver{env: e}
|
e.resolver = newGopathResolver(e)
|
||||||
return e.resolver
|
return e.resolver
|
||||||
}
|
}
|
||||||
e.resolver = &ModuleResolver{env: e}
|
e.resolver = newModuleResolver(e)
|
||||||
return e.resolver
|
return e.resolver
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *ProcessEnv) newPackagesConfig(mode packages.LoadMode) *packages.Config {
|
|
||||||
return &packages.Config{
|
|
||||||
Mode: mode,
|
|
||||||
Dir: e.WorkingDir,
|
|
||||||
Env: e.env(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (e *ProcessEnv) buildContext() *build.Context {
|
func (e *ProcessEnv) buildContext() *build.Context {
|
||||||
ctx := build.Default
|
ctx := build.Default
|
||||||
ctx.GOROOT = e.GOROOT
|
ctx.GOROOT = e.GOROOT
|
||||||
|
@ -856,94 +846,63 @@ func addStdlibCandidates(pass *pass, refs references) {
|
||||||
type Resolver interface {
|
type Resolver interface {
|
||||||
// loadPackageNames loads the package names in importPaths.
|
// loadPackageNames loads the package names in importPaths.
|
||||||
loadPackageNames(importPaths []string, srcDir string) (map[string]string, error)
|
loadPackageNames(importPaths []string, srcDir string) (map[string]string, error)
|
||||||
// scan finds (at least) the packages satisfying refs. If loadNames is true,
|
// scan works with callback to search for packages. See scanCallback for details.
|
||||||
// package names will be set on the results, and dirs whose package name
|
scan(ctx context.Context, callback *scanCallback) error
|
||||||
// could not be determined will be excluded.
|
|
||||||
scan(refs references, loadNames bool, exclude []gopathwalk.RootType) ([]*pkg, error)
|
|
||||||
// loadExports returns the set of exported symbols in the package at dir.
|
// loadExports returns the set of exported symbols in the package at dir.
|
||||||
// loadExports may be called concurrently.
|
// loadExports may be called concurrently.
|
||||||
loadExports(ctx context.Context, pkg *pkg) (string, []string, error)
|
loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []string, error)
|
||||||
|
|
||||||
ClearForNewScan()
|
ClearForNewScan()
|
||||||
}
|
}
|
||||||
|
|
||||||
// gopackagesResolver implements resolver for GOPATH and module workspaces using go/packages.
|
// A scanCallback controls a call to scan and receives its results.
|
||||||
type goPackagesResolver struct {
|
// In general, minor errors will be silently discarded; a user should not
|
||||||
env *ProcessEnv
|
// expect to receive a full series of calls for everything.
|
||||||
}
|
type scanCallback struct {
|
||||||
|
// rootFound is called before scanning a new root dir. If it returns true,
|
||||||
func (r *goPackagesResolver) ClearForNewScan() {}
|
// the root will be scanned. Returning false will not necessarily prevent
|
||||||
|
// directories from that root making it to dirFound.
|
||||||
func (r *goPackagesResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) {
|
rootFound func(gopathwalk.Root) bool
|
||||||
if len(importPaths) == 0 {
|
// dirFound is called when a directory is found that is possibly a Go package.
|
||||||
return nil, nil
|
// pkg will be populated with everything except packageName.
|
||||||
}
|
// If it returns true, the package's name will be loaded.
|
||||||
cfg := r.env.newPackagesConfig(packages.LoadFiles)
|
dirFound func(pkg *pkg) bool
|
||||||
pkgs, err := packages.Load(cfg, importPaths...)
|
// packageNameLoaded is called when a package is found and its name is loaded.
|
||||||
if err != nil {
|
// If it returns true, the package's exports will be loaded.
|
||||||
return nil, err
|
packageNameLoaded func(pkg *pkg) bool
|
||||||
}
|
// exportsLoaded is called when a package's exports have been loaded.
|
||||||
names := map[string]string{}
|
exportsLoaded func(pkg *pkg, exports []string)
|
||||||
for _, pkg := range pkgs {
|
|
||||||
names[VendorlessPath(pkg.PkgPath)] = pkg.Name
|
|
||||||
}
|
|
||||||
// We may not have found all the packages. Guess the rest.
|
|
||||||
for _, path := range importPaths {
|
|
||||||
if _, ok := names[path]; ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
names[path] = ImportPathToAssumedName(path)
|
|
||||||
}
|
|
||||||
return names, nil
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *goPackagesResolver) scan(refs references, _ bool, _ []gopathwalk.RootType) ([]*pkg, error) {
|
|
||||||
var loadQueries []string
|
|
||||||
for pkgName := range refs {
|
|
||||||
loadQueries = append(loadQueries, "iamashamedtousethedisabledqueryname="+pkgName)
|
|
||||||
}
|
|
||||||
sort.Strings(loadQueries)
|
|
||||||
cfg := r.env.newPackagesConfig(packages.LoadFiles)
|
|
||||||
goPackages, err := packages.Load(cfg, loadQueries...)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
var scan []*pkg
|
|
||||||
for _, goPackage := range goPackages {
|
|
||||||
scan = append(scan, &pkg{
|
|
||||||
dir: filepath.Dir(goPackage.CompiledGoFiles[0]),
|
|
||||||
importPathShort: VendorlessPath(goPackage.PkgPath),
|
|
||||||
goPackage: goPackage,
|
|
||||||
packageName: goPackage.Name,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
return scan, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (r *goPackagesResolver) loadExports(ctx context.Context, pkg *pkg) (string, []string, error) {
|
|
||||||
if pkg.goPackage == nil {
|
|
||||||
return "", nil, fmt.Errorf("goPackage not set")
|
|
||||||
}
|
|
||||||
var exports []string
|
|
||||||
fset := token.NewFileSet()
|
|
||||||
for _, fname := range pkg.goPackage.CompiledGoFiles {
|
|
||||||
f, err := parser.ParseFile(fset, fname, nil, 0)
|
|
||||||
if err != nil {
|
|
||||||
return "", nil, fmt.Errorf("parsing %s: %v", fname, err)
|
|
||||||
}
|
|
||||||
for name := range f.Scope.Objects {
|
|
||||||
if ast.IsExported(name) {
|
|
||||||
exports = append(exports, name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return pkg.goPackage.Name, exports, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func addExternalCandidates(pass *pass, refs references, filename string) error {
|
func addExternalCandidates(pass *pass, refs references, filename string) error {
|
||||||
dirScan, err := pass.env.GetResolver().scan(refs, false, nil)
|
var mu sync.Mutex
|
||||||
|
found := make(map[string][]pkgDistance)
|
||||||
|
callback := &scanCallback{
|
||||||
|
rootFound: func(gopathwalk.Root) bool {
|
||||||
|
return true // We want everything.
|
||||||
|
},
|
||||||
|
dirFound: func(pkg *pkg) bool {
|
||||||
|
return pkgIsCandidate(filename, refs, pkg)
|
||||||
|
},
|
||||||
|
packageNameLoaded: func(pkg *pkg) bool {
|
||||||
|
if _, want := refs[pkg.packageName]; !want {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if pkg.dir == pass.srcDir && pass.f.Name.Name == pkg.packageName {
|
||||||
|
// The candidate is in the same directory and has the
|
||||||
|
// same package name. Don't try to import ourselves.
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if !canUse(filename, pkg.dir) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
mu.Lock()
|
||||||
|
defer mu.Unlock()
|
||||||
|
found[pkg.packageName] = append(found[pkg.packageName], pkgDistance{pkg, distance(pass.srcDir, pkg.dir)})
|
||||||
|
return false // We'll do our own loading after we sort.
|
||||||
|
},
|
||||||
|
}
|
||||||
|
err := pass.env.GetResolver().scan(context.Background(), callback)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -970,7 +929,7 @@ func addExternalCandidates(pass *pass, refs references, filename string) error {
|
||||||
go func(pkgName string, symbols map[string]bool) {
|
go func(pkgName string, symbols map[string]bool) {
|
||||||
defer wg.Done()
|
defer wg.Done()
|
||||||
|
|
||||||
found, err := findImport(ctx, pass, dirScan, pkgName, symbols, filename)
|
found, err := findImport(ctx, pass, found[pkgName], pkgName, symbols, filename)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
firstErrOnce.Do(func() {
|
firstErrOnce.Do(func() {
|
||||||
|
@ -1041,24 +1000,36 @@ func ImportPathToAssumedName(importPath string) string {
|
||||||
|
|
||||||
// gopathResolver implements resolver for GOPATH workspaces.
|
// gopathResolver implements resolver for GOPATH workspaces.
|
||||||
type gopathResolver struct {
|
type gopathResolver struct {
|
||||||
env *ProcessEnv
|
env *ProcessEnv
|
||||||
cache *dirInfoCache
|
walked bool
|
||||||
|
cache *dirInfoCache
|
||||||
|
scanSema chan struct{} // scanSema prevents concurrent scans.
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *gopathResolver) init() {
|
func newGopathResolver(env *ProcessEnv) *gopathResolver {
|
||||||
if r.cache == nil {
|
r := &gopathResolver{
|
||||||
r.cache = &dirInfoCache{
|
env: env,
|
||||||
dirs: map[string]*directoryPackageInfo{},
|
cache: &dirInfoCache{
|
||||||
}
|
dirs: map[string]*directoryPackageInfo{},
|
||||||
|
listeners: map[*int]cacheListener{},
|
||||||
|
},
|
||||||
|
scanSema: make(chan struct{}, 1),
|
||||||
}
|
}
|
||||||
|
r.scanSema <- struct{}{}
|
||||||
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *gopathResolver) ClearForNewScan() {
|
func (r *gopathResolver) ClearForNewScan() {
|
||||||
r.cache = nil
|
<-r.scanSema
|
||||||
|
r.cache = &dirInfoCache{
|
||||||
|
dirs: map[string]*directoryPackageInfo{},
|
||||||
|
listeners: map[*int]cacheListener{},
|
||||||
|
}
|
||||||
|
r.walked = false
|
||||||
|
r.scanSema <- struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *gopathResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) {
|
func (r *gopathResolver) loadPackageNames(importPaths []string, srcDir string) (map[string]string, error) {
|
||||||
r.init()
|
|
||||||
names := map[string]string{}
|
names := map[string]string{}
|
||||||
for _, path := range importPaths {
|
for _, path := range importPaths {
|
||||||
names[path] = importPathToName(r.env, path, srcDir)
|
names[path] = importPathToName(r.env, path, srcDir)
|
||||||
|
@ -1138,7 +1109,6 @@ func packageDirToName(dir string) (packageName string, err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type pkg struct {
|
type pkg struct {
|
||||||
goPackage *packages.Package
|
|
||||||
dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
|
dir string // absolute file path to pkg directory ("/usr/lib/go/src/net/http")
|
||||||
importPathShort string // vendorless import path ("net/http", "a/b")
|
importPathShort string // vendorless import path ("net/http", "a/b")
|
||||||
packageName string // package name loaded from source if requested
|
packageName string // package name loaded from source if requested
|
||||||
|
@ -1186,8 +1156,7 @@ func distance(basepath, targetpath string) int {
|
||||||
return strings.Count(p, string(filepath.Separator)) + 1
|
return strings.Count(p, string(filepath.Separator)) + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *gopathResolver) scan(_ references, loadNames bool, exclude []gopathwalk.RootType) ([]*pkg, error) {
|
func (r *gopathResolver) scan(ctx context.Context, callback *scanCallback) error {
|
||||||
r.init()
|
|
||||||
add := func(root gopathwalk.Root, dir string) {
|
add := func(root gopathwalk.Root, dir string) {
|
||||||
// We assume cached directories have not changed. We can skip them and their
|
// We assume cached directories have not changed. We can skip them and their
|
||||||
// children.
|
// children.
|
||||||
|
@ -1204,56 +1173,77 @@ func (r *gopathResolver) scan(_ references, loadNames bool, exclude []gopathwalk
|
||||||
}
|
}
|
||||||
r.cache.Store(dir, info)
|
r.cache.Store(dir, info)
|
||||||
}
|
}
|
||||||
roots := filterRoots(gopathwalk.SrcDirsRoots(r.env.buildContext()), exclude)
|
processDir := func(info directoryPackageInfo) {
|
||||||
gopathwalk.Walk(roots, add, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: false})
|
// Skip this directory if we were not able to get the package information successfully.
|
||||||
var result []*pkg
|
if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {
|
||||||
for _, dir := range r.cache.Keys() {
|
return
|
||||||
info, ok := r.cache.Load(dir)
|
|
||||||
if !ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if loadNames {
|
|
||||||
var err error
|
|
||||||
info, err = r.cache.CachePackageName(info)
|
|
||||||
if err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
p := &pkg{
|
p := &pkg{
|
||||||
importPathShort: info.nonCanonicalImportPath,
|
importPathShort: info.nonCanonicalImportPath,
|
||||||
dir: dir,
|
dir: info.dir,
|
||||||
relevance: 1,
|
relevance: MaxRelevance - 1,
|
||||||
packageName: info.packageName,
|
|
||||||
}
|
}
|
||||||
if info.rootType == gopathwalk.RootGOROOT {
|
if info.rootType == gopathwalk.RootGOROOT {
|
||||||
p.relevance = 0
|
p.relevance = MaxRelevance
|
||||||
|
}
|
||||||
|
|
||||||
|
if !callback.dirFound(p) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var err error
|
||||||
|
p.packageName, err = r.cache.CachePackageName(info)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !callback.packageNameLoaded(p) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if _, exports, err := r.loadExports(ctx, p, false); err == nil {
|
||||||
|
callback.exportsLoaded(p, exports)
|
||||||
}
|
}
|
||||||
result = append(result, p)
|
|
||||||
}
|
}
|
||||||
return result, nil
|
stop := r.cache.ScanAndListen(ctx, processDir)
|
||||||
|
defer stop()
|
||||||
|
// The callback is not necessarily safe to use in the goroutine below. Process roots eagerly.
|
||||||
|
roots := filterRoots(gopathwalk.SrcDirsRoots(r.env.buildContext()), callback.rootFound)
|
||||||
|
// We can't cancel walks, because we need them to finish to have a usable
|
||||||
|
// cache. Instead, run them in a separate goroutine and detach.
|
||||||
|
scanDone := make(chan struct{})
|
||||||
|
go func() {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-r.scanSema:
|
||||||
|
}
|
||||||
|
defer func() { r.scanSema <- struct{}{} }()
|
||||||
|
gopathwalk.Walk(roots, add, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: false})
|
||||||
|
close(scanDone)
|
||||||
|
}()
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
case <-scanDone:
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func filterRoots(roots []gopathwalk.Root, exclude []gopathwalk.RootType) []gopathwalk.Root {
|
func filterRoots(roots []gopathwalk.Root, include func(gopathwalk.Root) bool) []gopathwalk.Root {
|
||||||
var result []gopathwalk.Root
|
var result []gopathwalk.Root
|
||||||
outer:
|
|
||||||
for _, root := range roots {
|
for _, root := range roots {
|
||||||
for _, i := range exclude {
|
if !include(root) {
|
||||||
if i == root.Type {
|
continue
|
||||||
continue outer
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
result = append(result, root)
|
result = append(result, root)
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *gopathResolver) loadExports(ctx context.Context, pkg *pkg) (string, []string, error) {
|
func (r *gopathResolver) loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []string, error) {
|
||||||
r.init()
|
if info, ok := r.cache.Load(pkg.dir); ok && !includeTest {
|
||||||
if info, ok := r.cache.Load(pkg.dir); ok {
|
|
||||||
return r.cache.CacheExports(ctx, r.env, info)
|
return r.cache.CacheExports(ctx, r.env, info)
|
||||||
}
|
}
|
||||||
return loadExportsFromFiles(ctx, r.env, pkg.dir)
|
return loadExportsFromFiles(ctx, r.env, pkg.dir, includeTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
// VendorlessPath returns the devendorized version of the import path ipath.
|
// VendorlessPath returns the devendorized version of the import path ipath.
|
||||||
|
@ -1269,7 +1259,7 @@ func VendorlessPath(ipath string) string {
|
||||||
return ipath
|
return ipath
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string) (string, []string, error) {
|
func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string, includeTest bool) (string, []string, error) {
|
||||||
var exports []string
|
var exports []string
|
||||||
|
|
||||||
// Look for non-test, buildable .go files which could provide exports.
|
// Look for non-test, buildable .go files which could provide exports.
|
||||||
|
@ -1280,7 +1270,7 @@ func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string) (str
|
||||||
var files []os.FileInfo
|
var files []os.FileInfo
|
||||||
for _, fi := range all {
|
for _, fi := range all {
|
||||||
name := fi.Name()
|
name := fi.Name()
|
||||||
if !strings.HasSuffix(name, ".go") || strings.HasSuffix(name, "_test.go") {
|
if !strings.HasSuffix(name, ".go") || (!includeTest && strings.HasSuffix(name, "_test.go")) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
match, err := env.buildContext().MatchFile(dir, fi.Name())
|
match, err := env.buildContext().MatchFile(dir, fi.Name())
|
||||||
|
@ -1313,6 +1303,10 @@ func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string) (str
|
||||||
// handled by MatchFile above.
|
// handled by MatchFile above.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if includeTest && strings.HasSuffix(f.Name.Name, "_test") {
|
||||||
|
// x_test package. We want internal test files only.
|
||||||
|
continue
|
||||||
|
}
|
||||||
pkgName = f.Name.Name
|
pkgName = f.Name.Name
|
||||||
for name := range f.Scope.Objects {
|
for name := range f.Scope.Objects {
|
||||||
if ast.IsExported(name) {
|
if ast.IsExported(name) {
|
||||||
|
@ -1331,29 +1325,7 @@ func loadExportsFromFiles(ctx context.Context, env *ProcessEnv, dir string) (str
|
||||||
|
|
||||||
// findImport searches for a package with the given symbols.
|
// findImport searches for a package with the given symbols.
|
||||||
// If no package is found, findImport returns ("", false, nil)
|
// If no package is found, findImport returns ("", false, nil)
|
||||||
func findImport(ctx context.Context, pass *pass, dirScan []*pkg, pkgName string, symbols map[string]bool, filename string) (*pkg, error) {
|
func findImport(ctx context.Context, pass *pass, candidates []pkgDistance, pkgName string, symbols map[string]bool, filename string) (*pkg, error) {
|
||||||
pkgDir, err := filepath.Abs(filename)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
pkgDir = filepath.Dir(pkgDir)
|
|
||||||
|
|
||||||
// Find candidate packages, looking only at their directory names first.
|
|
||||||
var candidates []pkgDistance
|
|
||||||
for _, pkg := range dirScan {
|
|
||||||
if pkg.dir == pkgDir && pass.f.Name.Name == pkgName {
|
|
||||||
// The candidate is in the same directory and has the
|
|
||||||
// same package name. Don't try to import ourselves.
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if pkgIsCandidate(filename, pkgName, pkg) {
|
|
||||||
candidates = append(candidates, pkgDistance{
|
|
||||||
pkg: pkg,
|
|
||||||
distance: distance(pkgDir, pkg.dir),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sort the candidates by their import package length,
|
// Sort the candidates by their import package length,
|
||||||
// assuming that shorter package names are better than long
|
// assuming that shorter package names are better than long
|
||||||
// ones. Note that this sorts by the de-vendored name, so
|
// ones. Note that this sorts by the de-vendored name, so
|
||||||
|
@ -1366,7 +1338,6 @@ func findImport(ctx context.Context, pass *pass, dirScan []*pkg, pkgName string,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect exports for packages with matching names.
|
// Collect exports for packages with matching names.
|
||||||
|
|
||||||
rescv := make([]chan *pkg, len(candidates))
|
rescv := make([]chan *pkg, len(candidates))
|
||||||
for i := range candidates {
|
for i := range candidates {
|
||||||
rescv[i] = make(chan *pkg, 1)
|
rescv[i] = make(chan *pkg, 1)
|
||||||
|
@ -1401,7 +1372,9 @@ func findImport(ctx context.Context, pass *pass, dirScan []*pkg, pkgName string,
|
||||||
if pass.env.Debug {
|
if pass.env.Debug {
|
||||||
pass.env.Logf("loading exports in dir %s (seeking package %s)", c.pkg.dir, pkgName)
|
pass.env.Logf("loading exports in dir %s (seeking package %s)", c.pkg.dir, pkgName)
|
||||||
}
|
}
|
||||||
exports, err := loadExportsForPackage(ctx, pass.env, pkgName, c.pkg)
|
// If we're an x_test, load the package under test's test variant.
|
||||||
|
includeTest := strings.HasSuffix(pass.f.Name.Name, "_test") && c.pkg.dir == pass.srcDir
|
||||||
|
_, exports, err := pass.env.GetResolver().loadExports(ctx, c.pkg, includeTest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if pass.env.Debug {
|
if pass.env.Debug {
|
||||||
pass.env.Logf("loading exports in dir %s (seeking package %s): %v", c.pkg.dir, pkgName, err)
|
pass.env.Logf("loading exports in dir %s (seeking package %s): %v", c.pkg.dir, pkgName, err)
|
||||||
|
@ -1438,17 +1411,6 @@ func findImport(ctx context.Context, pass *pass, dirScan []*pkg, pkgName string,
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func loadExportsForPackage(ctx context.Context, env *ProcessEnv, expectPkg string, pkg *pkg) ([]string, error) {
|
|
||||||
pkgName, exports, err := env.GetResolver().loadExports(ctx, pkg)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
if expectPkg != pkgName {
|
|
||||||
return nil, fmt.Errorf("dir %v is package %v, wanted %v", pkg.dir, pkgName, expectPkg)
|
|
||||||
}
|
|
||||||
return exports, err
|
|
||||||
}
|
|
||||||
|
|
||||||
// pkgIsCandidate reports whether pkg is a candidate for satisfying the
|
// pkgIsCandidate reports whether pkg is a candidate for satisfying the
|
||||||
// finding which package pkgIdent in the file named by filename is trying
|
// finding which package pkgIdent in the file named by filename is trying
|
||||||
// to refer to.
|
// to refer to.
|
||||||
|
@ -1461,7 +1423,7 @@ func loadExportsForPackage(ctx context.Context, env *ProcessEnv, expectPkg strin
|
||||||
// filename is the file being formatted.
|
// filename is the file being formatted.
|
||||||
// pkgIdent is the package being searched for, like "client" (if
|
// pkgIdent is the package being searched for, like "client" (if
|
||||||
// searching for "client.New")
|
// searching for "client.New")
|
||||||
func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool {
|
func pkgIsCandidate(filename string, refs references, pkg *pkg) bool {
|
||||||
// Check "internal" and "vendor" visibility:
|
// Check "internal" and "vendor" visibility:
|
||||||
if !canUse(filename, pkg.dir) {
|
if !canUse(filename, pkg.dir) {
|
||||||
return false
|
return false
|
||||||
|
@ -1479,17 +1441,18 @@ func pkgIsCandidate(filename, pkgIdent string, pkg *pkg) bool {
|
||||||
// "bar", which is strongly discouraged
|
// "bar", which is strongly discouraged
|
||||||
// anyway. There's no reason goimports needs
|
// anyway. There's no reason goimports needs
|
||||||
// to be slow just to accommodate that.
|
// to be slow just to accommodate that.
|
||||||
lastTwo := lastTwoComponents(pkg.importPathShort)
|
for pkgIdent := range refs {
|
||||||
if strings.Contains(lastTwo, pkgIdent) {
|
lastTwo := lastTwoComponents(pkg.importPathShort)
|
||||||
return true
|
|
||||||
}
|
|
||||||
if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) {
|
|
||||||
lastTwo = lowerASCIIAndRemoveHyphen(lastTwo)
|
|
||||||
if strings.Contains(lastTwo, pkgIdent) {
|
if strings.Contains(lastTwo, pkgIdent) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
if hasHyphenOrUpperASCII(lastTwo) && !hasHyphenOrUpperASCII(pkgIdent) {
|
||||||
|
lastTwo = lowerASCIIAndRemoveHyphen(lastTwo)
|
||||||
|
if strings.Contains(lastTwo, pkgIdent) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
21
vendor/golang.org/x/tools/internal/imports/imports.go
generated
vendored
21
vendor/golang.org/x/tools/internal/imports/imports.go
generated
vendored
|
@ -11,6 +11,7 @@ package imports
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/build"
|
"go/build"
|
||||||
|
@ -115,23 +116,23 @@ func ApplyFixes(fixes []*ImportFix, filename string, src []byte, opt *Options, e
|
||||||
return formatFile(fileSet, file, src, nil, opt)
|
return formatFile(fileSet, file, src, nil, opt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetAllCandidates gets all of the standard library candidate packages to import in
|
// GetAllCandidates gets all of the packages starting with prefix that can be
|
||||||
// sorted order on import path.
|
// imported by filename, sorted by import path.
|
||||||
func GetAllCandidates(filename string, opt *Options) (pkgs []ImportFix, err error) {
|
func GetAllCandidates(ctx context.Context, callback func(ImportFix), searchPrefix, filename, filePkg string, opt *Options) error {
|
||||||
_, opt, err = initialize(filename, nil, opt)
|
_, opt, err := initialize(filename, nil, opt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
return getAllCandidates(filename, opt.Env)
|
return getAllCandidates(ctx, callback, searchPrefix, filename, filePkg, opt.Env)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetPackageExports returns all known packages with name pkg and their exports.
|
// GetPackageExports returns all known packages with name pkg and their exports.
|
||||||
func GetPackageExports(pkg, filename string, opt *Options) (exports []PackageExport, err error) {
|
func GetPackageExports(ctx context.Context, callback func(PackageExport), searchPkg, filename, filePkg string, opt *Options) error {
|
||||||
_, opt, err = initialize(filename, nil, opt)
|
_, opt, err := initialize(filename, nil, opt)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
return getPackageExports(pkg, filename, opt.Env)
|
return getPackageExports(ctx, callback, searchPkg, filename, filePkg, opt.Env)
|
||||||
}
|
}
|
||||||
|
|
||||||
// initialize sets the values for opt and src.
|
// initialize sets the values for opt and src.
|
||||||
|
|
212
vendor/golang.org/x/tools/internal/imports/mod.go
generated
vendored
212
vendor/golang.org/x/tools/internal/imports/mod.go
generated
vendored
|
@ -13,7 +13,6 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
|
||||||
|
|
||||||
"golang.org/x/tools/internal/gopathwalk"
|
"golang.org/x/tools/internal/gopathwalk"
|
||||||
"golang.org/x/tools/internal/module"
|
"golang.org/x/tools/internal/module"
|
||||||
|
@ -26,6 +25,9 @@ type ModuleResolver struct {
|
||||||
env *ProcessEnv
|
env *ProcessEnv
|
||||||
moduleCacheDir string
|
moduleCacheDir string
|
||||||
dummyVendorMod *ModuleJSON // If vendoring is enabled, the pseudo-module that represents the /vendor directory.
|
dummyVendorMod *ModuleJSON // If vendoring is enabled, the pseudo-module that represents the /vendor directory.
|
||||||
|
roots []gopathwalk.Root
|
||||||
|
scanSema chan struct{} // scanSema prevents concurrent scans and guards scannedRoots.
|
||||||
|
scannedRoots map[gopathwalk.Root]bool
|
||||||
|
|
||||||
Initialized bool
|
Initialized bool
|
||||||
Main *ModuleJSON
|
Main *ModuleJSON
|
||||||
|
@ -47,6 +49,15 @@ type ModuleJSON struct {
|
||||||
GoVersion string // go version used in module
|
GoVersion string // go version used in module
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func newModuleResolver(e *ProcessEnv) *ModuleResolver {
|
||||||
|
r := &ModuleResolver{
|
||||||
|
env: e,
|
||||||
|
scanSema: make(chan struct{}, 1),
|
||||||
|
}
|
||||||
|
r.scanSema <- struct{}{}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) init() error {
|
func (r *ModuleResolver) init() error {
|
||||||
if r.Initialized {
|
if r.Initialized {
|
||||||
return nil
|
return nil
|
||||||
|
@ -86,14 +97,48 @@ func (r *ModuleResolver) init() error {
|
||||||
return count(j) < count(i) // descending order
|
return count(j) < count(i) // descending order
|
||||||
})
|
})
|
||||||
|
|
||||||
|
r.roots = []gopathwalk.Root{
|
||||||
|
{filepath.Join(r.env.GOROOT, "/src"), gopathwalk.RootGOROOT},
|
||||||
|
}
|
||||||
|
if r.Main != nil {
|
||||||
|
r.roots = append(r.roots, gopathwalk.Root{r.Main.Dir, gopathwalk.RootCurrentModule})
|
||||||
|
}
|
||||||
|
if vendorEnabled {
|
||||||
|
r.roots = append(r.roots, gopathwalk.Root{r.dummyVendorMod.Dir, gopathwalk.RootOther})
|
||||||
|
} else {
|
||||||
|
addDep := func(mod *ModuleJSON) {
|
||||||
|
if mod.Replace == nil {
|
||||||
|
// This is redundant with the cache, but we'll skip it cheaply enough.
|
||||||
|
r.roots = append(r.roots, gopathwalk.Root{mod.Dir, gopathwalk.RootModuleCache})
|
||||||
|
} else {
|
||||||
|
r.roots = append(r.roots, gopathwalk.Root{mod.Dir, gopathwalk.RootOther})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Walk dependent modules before scanning the full mod cache, direct deps first.
|
||||||
|
for _, mod := range r.ModsByModPath {
|
||||||
|
if !mod.Indirect && !mod.Main {
|
||||||
|
addDep(mod)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, mod := range r.ModsByModPath {
|
||||||
|
if mod.Indirect && !mod.Main {
|
||||||
|
addDep(mod)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
r.roots = append(r.roots, gopathwalk.Root{r.moduleCacheDir, gopathwalk.RootModuleCache})
|
||||||
|
}
|
||||||
|
|
||||||
|
r.scannedRoots = map[gopathwalk.Root]bool{}
|
||||||
if r.moduleCacheCache == nil {
|
if r.moduleCacheCache == nil {
|
||||||
r.moduleCacheCache = &dirInfoCache{
|
r.moduleCacheCache = &dirInfoCache{
|
||||||
dirs: map[string]*directoryPackageInfo{},
|
dirs: map[string]*directoryPackageInfo{},
|
||||||
|
listeners: map[*int]cacheListener{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if r.otherCache == nil {
|
if r.otherCache == nil {
|
||||||
r.otherCache = &dirInfoCache{
|
r.otherCache = &dirInfoCache{
|
||||||
dirs: map[string]*directoryPackageInfo{},
|
dirs: map[string]*directoryPackageInfo{},
|
||||||
|
listeners: map[*int]cacheListener{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
r.Initialized = true
|
r.Initialized = true
|
||||||
|
@ -127,17 +172,25 @@ func (r *ModuleResolver) initAllMods() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) ClearForNewScan() {
|
func (r *ModuleResolver) ClearForNewScan() {
|
||||||
|
<-r.scanSema
|
||||||
|
r.scannedRoots = map[gopathwalk.Root]bool{}
|
||||||
r.otherCache = &dirInfoCache{
|
r.otherCache = &dirInfoCache{
|
||||||
dirs: map[string]*directoryPackageInfo{},
|
dirs: map[string]*directoryPackageInfo{},
|
||||||
|
listeners: map[*int]cacheListener{},
|
||||||
}
|
}
|
||||||
|
r.scanSema <- struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) ClearForNewMod() {
|
func (r *ModuleResolver) ClearForNewMod() {
|
||||||
env := r.env
|
<-r.scanSema
|
||||||
*r = ModuleResolver{
|
*r = ModuleResolver{
|
||||||
env: env,
|
env: r.env,
|
||||||
|
moduleCacheCache: r.moduleCacheCache,
|
||||||
|
otherCache: r.otherCache,
|
||||||
|
scanSema: r.scanSema,
|
||||||
}
|
}
|
||||||
r.init()
|
r.init()
|
||||||
|
r.scanSema <- struct{}{}
|
||||||
}
|
}
|
||||||
|
|
||||||
// findPackage returns the module and directory that contains the package at
|
// findPackage returns the module and directory that contains the package at
|
||||||
|
@ -212,7 +265,7 @@ func (r *ModuleResolver) cacheKeys() []string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// cachePackageName caches the package name for a dir already in the cache.
|
// cachePackageName caches the package name for a dir already in the cache.
|
||||||
func (r *ModuleResolver) cachePackageName(info directoryPackageInfo) (directoryPackageInfo, error) {
|
func (r *ModuleResolver) cachePackageName(info directoryPackageInfo) (string, error) {
|
||||||
if info.rootType == gopathwalk.RootModuleCache {
|
if info.rootType == gopathwalk.RootModuleCache {
|
||||||
return r.moduleCacheCache.CachePackageName(info)
|
return r.moduleCacheCache.CachePackageName(info)
|
||||||
}
|
}
|
||||||
|
@ -334,41 +387,49 @@ func (r *ModuleResolver) loadPackageNames(importPaths []string, srcDir string) (
|
||||||
return names, nil
|
return names, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) scan(_ references, loadNames bool, exclude []gopathwalk.RootType) ([]*pkg, error) {
|
func (r *ModuleResolver) scan(ctx context.Context, callback *scanCallback) error {
|
||||||
if err := r.init(); err != nil {
|
if err := r.init(); err != nil {
|
||||||
return nil, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Walk GOROOT, GOPATH/pkg/mod, and the main module.
|
processDir := func(info directoryPackageInfo) {
|
||||||
roots := []gopathwalk.Root{
|
// Skip this directory if we were not able to get the package information successfully.
|
||||||
{filepath.Join(r.env.GOROOT, "/src"), gopathwalk.RootGOROOT},
|
if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {
|
||||||
}
|
return
|
||||||
if r.Main != nil {
|
|
||||||
roots = append(roots, gopathwalk.Root{r.Main.Dir, gopathwalk.RootCurrentModule})
|
|
||||||
}
|
|
||||||
if r.dummyVendorMod != nil {
|
|
||||||
roots = append(roots, gopathwalk.Root{r.dummyVendorMod.Dir, gopathwalk.RootOther})
|
|
||||||
} else {
|
|
||||||
roots = append(roots, gopathwalk.Root{r.moduleCacheDir, gopathwalk.RootModuleCache})
|
|
||||||
// Walk replace targets, just in case they're not in any of the above.
|
|
||||||
for _, mod := range r.ModsByModPath {
|
|
||||||
if mod.Replace != nil {
|
|
||||||
roots = append(roots, gopathwalk.Root{mod.Dir, gopathwalk.RootOther})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
pkg, err := r.canonicalize(info)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !callback.dirFound(pkg) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
pkg.packageName, err = r.cachePackageName(info)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !callback.packageNameLoaded(pkg) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
_, exports, err := r.loadExports(ctx, pkg, false)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
callback.exportsLoaded(pkg, exports)
|
||||||
}
|
}
|
||||||
|
|
||||||
roots = filterRoots(roots, exclude)
|
// Start processing everything in the cache, and listen for the new stuff
|
||||||
|
// we discover in the walk below.
|
||||||
|
stop1 := r.moduleCacheCache.ScanAndListen(ctx, processDir)
|
||||||
|
defer stop1()
|
||||||
|
stop2 := r.otherCache.ScanAndListen(ctx, processDir)
|
||||||
|
defer stop2()
|
||||||
|
|
||||||
var result []*pkg
|
// We assume cached directories are fully cached, including all their
|
||||||
var mu sync.Mutex
|
// children, and have not changed. We can skip them.
|
||||||
|
|
||||||
// We assume cached directories have not changed. We can skip them and their
|
|
||||||
// children.
|
|
||||||
skip := func(root gopathwalk.Root, dir string) bool {
|
skip := func(root gopathwalk.Root, dir string) bool {
|
||||||
mu.Lock()
|
|
||||||
defer mu.Unlock()
|
|
||||||
|
|
||||||
info, ok := r.cacheLoad(dir)
|
info, ok := r.cacheLoad(dir)
|
||||||
if !ok {
|
if !ok {
|
||||||
return false
|
return false
|
||||||
|
@ -380,44 +441,43 @@ func (r *ModuleResolver) scan(_ references, loadNames bool, exclude []gopathwalk
|
||||||
return packageScanned
|
return packageScanned
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add anything new to the cache. We'll process everything in it below.
|
// Add anything new to the cache, and process it if we're still listening.
|
||||||
add := func(root gopathwalk.Root, dir string) {
|
add := func(root gopathwalk.Root, dir string) {
|
||||||
mu.Lock()
|
|
||||||
defer mu.Unlock()
|
|
||||||
|
|
||||||
r.cacheStore(r.scanDirForPackage(root, dir))
|
r.cacheStore(r.scanDirForPackage(root, dir))
|
||||||
}
|
}
|
||||||
|
|
||||||
gopathwalk.WalkSkip(roots, add, skip, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: true})
|
// r.roots and the callback are not necessarily safe to use in the
|
||||||
|
// goroutine below. Process them eagerly.
|
||||||
// Everything we already had, and everything new, is now in the cache.
|
roots := filterRoots(r.roots, callback.rootFound)
|
||||||
for _, dir := range r.cacheKeys() {
|
// We can't cancel walks, because we need them to finish to have a usable
|
||||||
info, ok := r.cacheLoad(dir)
|
// cache. Instead, run them in a separate goroutine and detach.
|
||||||
if !ok {
|
scanDone := make(chan struct{})
|
||||||
continue
|
go func() {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-r.scanSema:
|
||||||
}
|
}
|
||||||
|
defer func() { r.scanSema <- struct{}{} }()
|
||||||
|
// We have the lock on r.scannedRoots, and no other scans can run.
|
||||||
|
for _, root := range roots {
|
||||||
|
if ctx.Err() != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Skip this directory if we were not able to get the package information successfully.
|
if r.scannedRoots[root] {
|
||||||
if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we want package names, make sure the cache has them.
|
|
||||||
if loadNames {
|
|
||||||
var err error
|
|
||||||
if info, err = r.cachePackageName(info); err != nil {
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
gopathwalk.WalkSkip([]gopathwalk.Root{root}, add, skip, gopathwalk.Options{Debug: r.env.Debug, ModulesEnabled: true})
|
||||||
|
r.scannedRoots[root] = true
|
||||||
}
|
}
|
||||||
|
close(scanDone)
|
||||||
res, err := r.canonicalize(info)
|
}()
|
||||||
if err != nil {
|
select {
|
||||||
continue
|
case <-ctx.Done():
|
||||||
}
|
case <-scanDone:
|
||||||
result = append(result, res)
|
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
return result, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// canonicalize gets the result of canonicalizing the packages using the results
|
// canonicalize gets the result of canonicalizing the packages using the results
|
||||||
|
@ -429,18 +489,18 @@ func (r *ModuleResolver) canonicalize(info directoryPackageInfo) (*pkg, error) {
|
||||||
importPathShort: info.nonCanonicalImportPath,
|
importPathShort: info.nonCanonicalImportPath,
|
||||||
dir: info.dir,
|
dir: info.dir,
|
||||||
packageName: path.Base(info.nonCanonicalImportPath),
|
packageName: path.Base(info.nonCanonicalImportPath),
|
||||||
relevance: 0,
|
relevance: MaxRelevance,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
importPath := info.nonCanonicalImportPath
|
importPath := info.nonCanonicalImportPath
|
||||||
relevance := 3
|
relevance := MaxRelevance - 3
|
||||||
// Check if the directory is underneath a module that's in scope.
|
// Check if the directory is underneath a module that's in scope.
|
||||||
if mod := r.findModuleByDir(info.dir); mod != nil {
|
if mod := r.findModuleByDir(info.dir); mod != nil {
|
||||||
if mod.Indirect {
|
if mod.Indirect {
|
||||||
relevance = 2
|
relevance = MaxRelevance - 2
|
||||||
} else {
|
} else {
|
||||||
relevance = 1
|
relevance = MaxRelevance - 1
|
||||||
}
|
}
|
||||||
// It is. If dir is the target of a replace directive,
|
// It is. If dir is the target of a replace directive,
|
||||||
// our guessed import path is wrong. Use the real one.
|
// our guessed import path is wrong. Use the real one.
|
||||||
|
@ -450,14 +510,15 @@ func (r *ModuleResolver) canonicalize(info directoryPackageInfo) (*pkg, error) {
|
||||||
dirInMod := info.dir[len(mod.Dir)+len("/"):]
|
dirInMod := info.dir[len(mod.Dir)+len("/"):]
|
||||||
importPath = path.Join(mod.Path, filepath.ToSlash(dirInMod))
|
importPath = path.Join(mod.Path, filepath.ToSlash(dirInMod))
|
||||||
}
|
}
|
||||||
} else if info.needsReplace {
|
} else if !strings.HasPrefix(importPath, info.moduleName) {
|
||||||
|
// The module's name doesn't match the package's import path. It
|
||||||
|
// probably needs a replace directive we don't have.
|
||||||
return nil, fmt.Errorf("package in %q is not valid without a replace statement", info.dir)
|
return nil, fmt.Errorf("package in %q is not valid without a replace statement", info.dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
res := &pkg{
|
res := &pkg{
|
||||||
importPathShort: importPath,
|
importPathShort: importPath,
|
||||||
dir: info.dir,
|
dir: info.dir,
|
||||||
packageName: info.packageName, // may not be populated if the caller didn't ask for it
|
|
||||||
relevance: relevance,
|
relevance: relevance,
|
||||||
}
|
}
|
||||||
// We may have discovered a package that has a different version
|
// We may have discovered a package that has a different version
|
||||||
|
@ -468,14 +529,14 @@ func (r *ModuleResolver) canonicalize(info directoryPackageInfo) (*pkg, error) {
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) loadExports(ctx context.Context, pkg *pkg) (string, []string, error) {
|
func (r *ModuleResolver) loadExports(ctx context.Context, pkg *pkg, includeTest bool) (string, []string, error) {
|
||||||
if err := r.init(); err != nil {
|
if err := r.init(); err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
if info, ok := r.cacheLoad(pkg.dir); ok {
|
if info, ok := r.cacheLoad(pkg.dir); ok && !includeTest {
|
||||||
return r.cacheExports(ctx, r.env, info)
|
return r.cacheExports(ctx, r.env, info)
|
||||||
}
|
}
|
||||||
return loadExportsFromFiles(ctx, r.env, pkg.dir)
|
return loadExportsFromFiles(ctx, r.env, pkg.dir, includeTest)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) directoryPackageInfo {
|
func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) directoryPackageInfo {
|
||||||
|
@ -521,7 +582,6 @@ func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) dir
|
||||||
dir: dir,
|
dir: dir,
|
||||||
rootType: root.Type,
|
rootType: root.Type,
|
||||||
nonCanonicalImportPath: importPath,
|
nonCanonicalImportPath: importPath,
|
||||||
needsReplace: false,
|
|
||||||
moduleDir: modDir,
|
moduleDir: modDir,
|
||||||
moduleName: modName,
|
moduleName: modName,
|
||||||
}
|
}
|
||||||
|
@ -529,14 +589,6 @@ func (r *ModuleResolver) scanDirForPackage(root gopathwalk.Root, dir string) dir
|
||||||
// stdlib packages are always in scope, despite the confusing go.mod
|
// stdlib packages are always in scope, despite the confusing go.mod
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
// Check that this package is not obviously impossible to import.
|
|
||||||
if !strings.HasPrefix(importPath, modName) {
|
|
||||||
// The module's declared path does not match
|
|
||||||
// its expected path. It probably needs a
|
|
||||||
// replace directive we don't have.
|
|
||||||
result.needsReplace = true
|
|
||||||
}
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
94
vendor/golang.org/x/tools/internal/imports/mod_cache.go
generated
vendored
94
vendor/golang.org/x/tools/internal/imports/mod_cache.go
generated
vendored
|
@ -49,10 +49,6 @@ type directoryPackageInfo struct {
|
||||||
// nonCanonicalImportPath is the package's expected import path. It may
|
// nonCanonicalImportPath is the package's expected import path. It may
|
||||||
// not actually be importable at that path.
|
// not actually be importable at that path.
|
||||||
nonCanonicalImportPath string
|
nonCanonicalImportPath string
|
||||||
// needsReplace is true if the nonCanonicalImportPath does not match the
|
|
||||||
// module's declared path, making it impossible to import without a
|
|
||||||
// replace directive.
|
|
||||||
needsReplace bool
|
|
||||||
|
|
||||||
// Module-related information.
|
// Module-related information.
|
||||||
moduleDir string // The directory that is the module root of this dir.
|
moduleDir string // The directory that is the module root of this dir.
|
||||||
|
@ -97,15 +93,85 @@ func (info *directoryPackageInfo) reachedStatus(target directoryPackageStatus) (
|
||||||
type dirInfoCache struct {
|
type dirInfoCache struct {
|
||||||
mu sync.Mutex
|
mu sync.Mutex
|
||||||
// dirs stores information about packages in directories, keyed by absolute path.
|
// dirs stores information about packages in directories, keyed by absolute path.
|
||||||
dirs map[string]*directoryPackageInfo
|
dirs map[string]*directoryPackageInfo
|
||||||
|
listeners map[*int]cacheListener
|
||||||
|
}
|
||||||
|
|
||||||
|
type cacheListener func(directoryPackageInfo)
|
||||||
|
|
||||||
|
// ScanAndListen calls listener on all the items in the cache, and on anything
|
||||||
|
// newly added. The returned stop function waits for all in-flight callbacks to
|
||||||
|
// finish and blocks new ones.
|
||||||
|
func (d *dirInfoCache) ScanAndListen(ctx context.Context, listener cacheListener) func() {
|
||||||
|
ctx, cancel := context.WithCancel(ctx)
|
||||||
|
|
||||||
|
// Flushing out all the callbacks is tricky without knowing how many there
|
||||||
|
// are going to be. Setting an arbitrary limit makes it much easier.
|
||||||
|
const maxInFlight = 10
|
||||||
|
sema := make(chan struct{}, maxInFlight)
|
||||||
|
for i := 0; i < maxInFlight; i++ {
|
||||||
|
sema <- struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
cookie := new(int) // A unique ID we can use for the listener.
|
||||||
|
|
||||||
|
// We can't hold mu while calling the listener.
|
||||||
|
d.mu.Lock()
|
||||||
|
var keys []string
|
||||||
|
for key := range d.dirs {
|
||||||
|
keys = append(keys, key)
|
||||||
|
}
|
||||||
|
d.listeners[cookie] = func(info directoryPackageInfo) {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return
|
||||||
|
case <-sema:
|
||||||
|
}
|
||||||
|
listener(info)
|
||||||
|
sema <- struct{}{}
|
||||||
|
}
|
||||||
|
d.mu.Unlock()
|
||||||
|
|
||||||
|
// Process the pre-existing keys.
|
||||||
|
for _, k := range keys {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
cancel()
|
||||||
|
return func() {}
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
if v, ok := d.Load(k); ok {
|
||||||
|
listener(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return func() {
|
||||||
|
cancel()
|
||||||
|
d.mu.Lock()
|
||||||
|
delete(d.listeners, cookie)
|
||||||
|
d.mu.Unlock()
|
||||||
|
for i := 0; i < maxInFlight; i++ {
|
||||||
|
<-sema
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store stores the package info for dir.
|
// Store stores the package info for dir.
|
||||||
func (d *dirInfoCache) Store(dir string, info directoryPackageInfo) {
|
func (d *dirInfoCache) Store(dir string, info directoryPackageInfo) {
|
||||||
d.mu.Lock()
|
d.mu.Lock()
|
||||||
defer d.mu.Unlock()
|
_, old := d.dirs[dir]
|
||||||
stored := info // defensive copy
|
d.dirs[dir] = &info
|
||||||
d.dirs[dir] = &stored
|
var listeners []cacheListener
|
||||||
|
for _, l := range d.listeners {
|
||||||
|
listeners = append(listeners, l)
|
||||||
|
}
|
||||||
|
d.mu.Unlock()
|
||||||
|
|
||||||
|
if !old {
|
||||||
|
for _, l := range listeners {
|
||||||
|
l(info)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Load returns a copy of the directoryPackageInfo for absolute directory dir.
|
// Load returns a copy of the directoryPackageInfo for absolute directory dir.
|
||||||
|
@ -129,17 +195,17 @@ func (d *dirInfoCache) Keys() (keys []string) {
|
||||||
return keys
|
return keys
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dirInfoCache) CachePackageName(info directoryPackageInfo) (directoryPackageInfo, error) {
|
func (d *dirInfoCache) CachePackageName(info directoryPackageInfo) (string, error) {
|
||||||
if loaded, err := info.reachedStatus(nameLoaded); loaded {
|
if loaded, err := info.reachedStatus(nameLoaded); loaded {
|
||||||
return info, err
|
return info.packageName, err
|
||||||
}
|
}
|
||||||
if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {
|
if scanned, err := info.reachedStatus(directoryScanned); !scanned || err != nil {
|
||||||
return info, fmt.Errorf("cannot read package name, scan error: %v", err)
|
return "", fmt.Errorf("cannot read package name, scan error: %v", err)
|
||||||
}
|
}
|
||||||
info.packageName, info.err = packageDirToName(info.dir)
|
info.packageName, info.err = packageDirToName(info.dir)
|
||||||
info.status = nameLoaded
|
info.status = nameLoaded
|
||||||
d.Store(info.dir, info)
|
d.Store(info.dir, info)
|
||||||
return info, info.err
|
return info.packageName, info.err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dirInfoCache) CacheExports(ctx context.Context, env *ProcessEnv, info directoryPackageInfo) (string, []string, error) {
|
func (d *dirInfoCache) CacheExports(ctx context.Context, env *ProcessEnv, info directoryPackageInfo) (string, []string, error) {
|
||||||
|
@ -149,8 +215,8 @@ func (d *dirInfoCache) CacheExports(ctx context.Context, env *ProcessEnv, info d
|
||||||
if reached, err := info.reachedStatus(nameLoaded); reached && err != nil {
|
if reached, err := info.reachedStatus(nameLoaded); reached && err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
info.packageName, info.exports, info.err = loadExportsFromFiles(ctx, env, info.dir)
|
info.packageName, info.exports, info.err = loadExportsFromFiles(ctx, env, info.dir, false)
|
||||||
if info.err == context.Canceled {
|
if info.err == context.Canceled || info.err == context.DeadlineExceeded {
|
||||||
return info.packageName, info.exports, info.err
|
return info.packageName, info.exports, info.err
|
||||||
}
|
}
|
||||||
// The cache structure wants things to proceed linearly. We can skip a
|
// The cache structure wants things to proceed linearly. We can skip a
|
||||||
|
|
23
vendor/modules.txt
vendored
23
vendor/modules.txt
vendored
|
@ -1,4 +1,4 @@
|
||||||
# cloud.google.com/go v0.50.0
|
# cloud.google.com/go v0.51.0
|
||||||
cloud.google.com/go
|
cloud.google.com/go
|
||||||
cloud.google.com/go/compute/metadata
|
cloud.google.com/go/compute/metadata
|
||||||
cloud.google.com/go/iam
|
cloud.google.com/go/iam
|
||||||
|
@ -6,7 +6,7 @@ cloud.google.com/go/internal
|
||||||
cloud.google.com/go/internal/optional
|
cloud.google.com/go/internal/optional
|
||||||
cloud.google.com/go/internal/trace
|
cloud.google.com/go/internal/trace
|
||||||
cloud.google.com/go/internal/version
|
cloud.google.com/go/internal/version
|
||||||
# cloud.google.com/go/storage v1.4.0
|
# cloud.google.com/go/storage v1.5.0
|
||||||
cloud.google.com/go/storage
|
cloud.google.com/go/storage
|
||||||
# github.com/BurntSushi/toml v0.3.1
|
# github.com/BurntSushi/toml v0.3.1
|
||||||
github.com/BurntSushi/toml
|
github.com/BurntSushi/toml
|
||||||
|
@ -14,7 +14,7 @@ github.com/BurntSushi/toml
|
||||||
github.com/VictoriaMetrics/fastcache
|
github.com/VictoriaMetrics/fastcache
|
||||||
# github.com/VictoriaMetrics/metrics v1.9.3
|
# github.com/VictoriaMetrics/metrics v1.9.3
|
||||||
github.com/VictoriaMetrics/metrics
|
github.com/VictoriaMetrics/metrics
|
||||||
# github.com/aws/aws-sdk-go v1.26.8
|
# github.com/aws/aws-sdk-go v1.28.3
|
||||||
github.com/aws/aws-sdk-go/aws
|
github.com/aws/aws-sdk-go/aws
|
||||||
github.com/aws/aws-sdk-go/aws/arn
|
github.com/aws/aws-sdk-go/aws/arn
|
||||||
github.com/aws/aws-sdk-go/aws/awserr
|
github.com/aws/aws-sdk-go/aws/awserr
|
||||||
|
@ -41,6 +41,7 @@ github.com/aws/aws-sdk-go/internal/sdkmath
|
||||||
github.com/aws/aws-sdk-go/internal/sdkrand
|
github.com/aws/aws-sdk-go/internal/sdkrand
|
||||||
github.com/aws/aws-sdk-go/internal/sdkuri
|
github.com/aws/aws-sdk-go/internal/sdkuri
|
||||||
github.com/aws/aws-sdk-go/internal/shareddefaults
|
github.com/aws/aws-sdk-go/internal/shareddefaults
|
||||||
|
github.com/aws/aws-sdk-go/internal/strings
|
||||||
github.com/aws/aws-sdk-go/private/protocol
|
github.com/aws/aws-sdk-go/private/protocol
|
||||||
github.com/aws/aws-sdk-go/private/protocol/eventstream
|
github.com/aws/aws-sdk-go/private/protocol/eventstream
|
||||||
github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi
|
github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi
|
||||||
|
@ -58,7 +59,7 @@ github.com/aws/aws-sdk-go/service/sts
|
||||||
github.com/aws/aws-sdk-go/service/sts/stsiface
|
github.com/aws/aws-sdk-go/service/sts/stsiface
|
||||||
# github.com/cespare/xxhash/v2 v2.1.1
|
# github.com/cespare/xxhash/v2 v2.1.1
|
||||||
github.com/cespare/xxhash/v2
|
github.com/cespare/xxhash/v2
|
||||||
# github.com/golang/groupcache v0.0.0-20191027212112-611e8accdfc9
|
# github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7
|
||||||
github.com/golang/groupcache/lru
|
github.com/golang/groupcache/lru
|
||||||
# github.com/golang/protobuf v1.3.2
|
# github.com/golang/protobuf v1.3.2
|
||||||
github.com/golang/protobuf/proto
|
github.com/golang/protobuf/proto
|
||||||
|
@ -82,7 +83,7 @@ github.com/jmespath/go-jmespath
|
||||||
github.com/jstemmer/go-junit-report
|
github.com/jstemmer/go-junit-report
|
||||||
github.com/jstemmer/go-junit-report/formatter
|
github.com/jstemmer/go-junit-report/formatter
|
||||||
github.com/jstemmer/go-junit-report/parser
|
github.com/jstemmer/go-junit-report/parser
|
||||||
# github.com/klauspost/compress v1.9.4
|
# github.com/klauspost/compress v1.9.7
|
||||||
github.com/klauspost/compress/fse
|
github.com/klauspost/compress/fse
|
||||||
github.com/klauspost/compress/huff0
|
github.com/klauspost/compress/huff0
|
||||||
github.com/klauspost/compress/snappy
|
github.com/klauspost/compress/snappy
|
||||||
|
@ -118,13 +119,13 @@ go.opencensus.io/trace
|
||||||
go.opencensus.io/trace/internal
|
go.opencensus.io/trace/internal
|
||||||
go.opencensus.io/trace/propagation
|
go.opencensus.io/trace/propagation
|
||||||
go.opencensus.io/trace/tracestate
|
go.opencensus.io/trace/tracestate
|
||||||
# golang.org/x/exp v0.0.0-20191224044220-1fea468a75e9
|
# golang.org/x/exp v0.0.0-20191227195350-da58074b4299
|
||||||
golang.org/x/exp/apidiff
|
golang.org/x/exp/apidiff
|
||||||
golang.org/x/exp/cmd/apidiff
|
golang.org/x/exp/cmd/apidiff
|
||||||
# golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
|
# golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f
|
||||||
golang.org/x/lint
|
golang.org/x/lint
|
||||||
golang.org/x/lint/golint
|
golang.org/x/lint/golint
|
||||||
# golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553
|
# golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa
|
||||||
golang.org/x/net/context
|
golang.org/x/net/context
|
||||||
golang.org/x/net/context/ctxhttp
|
golang.org/x/net/context/ctxhttp
|
||||||
golang.org/x/net/http/httpguts
|
golang.org/x/net/http/httpguts
|
||||||
|
@ -133,20 +134,20 @@ golang.org/x/net/http2/hpack
|
||||||
golang.org/x/net/idna
|
golang.org/x/net/idna
|
||||||
golang.org/x/net/internal/timeseries
|
golang.org/x/net/internal/timeseries
|
||||||
golang.org/x/net/trace
|
golang.org/x/net/trace
|
||||||
# golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6
|
# golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||||
golang.org/x/oauth2
|
golang.org/x/oauth2
|
||||||
golang.org/x/oauth2/google
|
golang.org/x/oauth2/google
|
||||||
golang.org/x/oauth2/internal
|
golang.org/x/oauth2/internal
|
||||||
golang.org/x/oauth2/jws
|
golang.org/x/oauth2/jws
|
||||||
golang.org/x/oauth2/jwt
|
golang.org/x/oauth2/jwt
|
||||||
# golang.org/x/sys v0.0.0-20191224085550-c709ea063b76
|
# golang.org/x/sys v0.0.0-20200116001909-b77594299b42
|
||||||
golang.org/x/sys/unix
|
golang.org/x/sys/unix
|
||||||
# golang.org/x/text v0.3.2
|
# golang.org/x/text v0.3.2
|
||||||
golang.org/x/text/secure/bidirule
|
golang.org/x/text/secure/bidirule
|
||||||
golang.org/x/text/transform
|
golang.org/x/text/transform
|
||||||
golang.org/x/text/unicode/bidi
|
golang.org/x/text/unicode/bidi
|
||||||
golang.org/x/text/unicode/norm
|
golang.org/x/text/unicode/norm
|
||||||
# golang.org/x/tools v0.0.0-20191224055732-dd894d0a8a40
|
# golang.org/x/tools v0.0.0-20200116062425-473961ec044c
|
||||||
golang.org/x/tools/cmd/goimports
|
golang.org/x/tools/cmd/goimports
|
||||||
golang.org/x/tools/go/analysis
|
golang.org/x/tools/go/analysis
|
||||||
golang.org/x/tools/go/analysis/passes/inspect
|
golang.org/x/tools/go/analysis/passes/inspect
|
||||||
|
@ -186,7 +187,7 @@ google.golang.org/appengine/internal/modules
|
||||||
google.golang.org/appengine/internal/remote_api
|
google.golang.org/appengine/internal/remote_api
|
||||||
google.golang.org/appengine/internal/urlfetch
|
google.golang.org/appengine/internal/urlfetch
|
||||||
google.golang.org/appengine/urlfetch
|
google.golang.org/appengine/urlfetch
|
||||||
# google.golang.org/genproto v0.0.0-20191223191004-3caeed10a8bf
|
# google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba
|
||||||
google.golang.org/genproto/googleapis/api/annotations
|
google.golang.org/genproto/googleapis/api/annotations
|
||||||
google.golang.org/genproto/googleapis/iam/v1
|
google.golang.org/genproto/googleapis/iam/v1
|
||||||
google.golang.org/genproto/googleapis/rpc/code
|
google.golang.org/genproto/googleapis/rpc/code
|
||||||
|
|
Loading…
Reference in a new issue