planetscale 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.github/workflows/ci.yml +24 -0
- data/.github/workflows/gem-push.yml +38 -0
- data/.github/workflows/licensed.yml +43 -0
- data/.gitignore +10 -0
- data/.licensed.yml +9 -0
- data/.licenses/go/github.com/armon/circbuf.dep.yml +31 -0
- data/.licenses/go/github.com/gorilla/mux.dep.yml +41 -0
- data/.licenses/go/github.com/hashicorp/go-cleanhttp.dep.yml +375 -0
- data/.licenses/go/github.com/mitchellh/go-homedir.dep.yml +32 -0
- data/.licenses/go/github.com/pkg/errors.dep.yml +36 -0
- data/.licenses/go/github.com/planetscale/planetscale-go/planetscale.dep.yml +160 -0
- data/.licenses/go/github.com/planetscale/sql-proxy/proxy.dep.yml +180 -0
- data/.licenses/go/go.uber.org/atomic.dep.yml +31 -0
- data/.licenses/go/go.uber.org/multierr.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/buffer.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/bufferpool.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/color.dep.yml +30 -0
- data/.licenses/go/go.uber.org/zap/internal/exit.dep.yml +31 -0
- data/.licenses/go/go.uber.org/zap/zapcore.dep.yml +31 -0
- data/.licenses/go/golang.org/x/net/context/ctxhttp.dep.yml +63 -0
- data/.licenses/go/golang.org/x/oauth2.dep.yml +44 -0
- data/.licenses/go/golang.org/x/oauth2/internal.dep.yml +38 -0
- data/.ruby_version +1 -0
- data/Gemfile +8 -0
- data/LICENSE +201 -0
- data/README.md +88 -0
- data/Rakefile +10 -0
- data/bin/console +15 -0
- data/bin/setup +17 -0
- data/controller.go +255 -0
- data/go.mod +16 -0
- data/go.sum +428 -0
- data/lib/generators/planetscale/install_generator.rb +58 -0
- data/lib/planetscale.rb +137 -0
- data/lib/planetscale/version.rb +5 -0
- data/planetscale.gemspec +44 -0
- data/proxy.go +128 -0
- data/vendor/github.com/armon/circbuf/.gitignore +22 -0
- data/vendor/github.com/armon/circbuf/LICENSE +20 -0
- data/vendor/github.com/armon/circbuf/README.md +28 -0
- data/vendor/github.com/armon/circbuf/circbuf.go +92 -0
- data/vendor/github.com/armon/circbuf/go.mod +1 -0
- data/vendor/github.com/golang/protobuf/AUTHORS +3 -0
- data/vendor/github.com/golang/protobuf/CONTRIBUTORS +3 -0
- data/vendor/github.com/golang/protobuf/LICENSE +28 -0
- data/vendor/github.com/golang/protobuf/proto/buffer.go +324 -0
- data/vendor/github.com/golang/protobuf/proto/defaults.go +63 -0
- data/vendor/github.com/golang/protobuf/proto/deprecated.go +113 -0
- data/vendor/github.com/golang/protobuf/proto/discard.go +58 -0
- data/vendor/github.com/golang/protobuf/proto/extensions.go +356 -0
- data/vendor/github.com/golang/protobuf/proto/properties.go +306 -0
- data/vendor/github.com/golang/protobuf/proto/proto.go +167 -0
- data/vendor/github.com/golang/protobuf/proto/registry.go +317 -0
- data/vendor/github.com/golang/protobuf/proto/text_decode.go +801 -0
- data/vendor/github.com/golang/protobuf/proto/text_encode.go +560 -0
- data/vendor/github.com/golang/protobuf/proto/wire.go +78 -0
- data/vendor/github.com/golang/protobuf/proto/wrappers.go +34 -0
- data/vendor/github.com/gorilla/mux/AUTHORS +8 -0
- data/vendor/github.com/gorilla/mux/LICENSE +27 -0
- data/vendor/github.com/gorilla/mux/README.md +805 -0
- data/vendor/github.com/gorilla/mux/doc.go +306 -0
- data/vendor/github.com/gorilla/mux/go.mod +3 -0
- data/vendor/github.com/gorilla/mux/middleware.go +74 -0
- data/vendor/github.com/gorilla/mux/mux.go +606 -0
- data/vendor/github.com/gorilla/mux/regexp.go +388 -0
- data/vendor/github.com/gorilla/mux/route.go +736 -0
- data/vendor/github.com/gorilla/mux/test_helpers.go +19 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/LICENSE +363 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/README.md +30 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/cleanhttp.go +58 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/doc.go +20 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/go.mod +3 -0
- data/vendor/github.com/hashicorp/go-cleanhttp/handlers.go +48 -0
- data/vendor/github.com/mitchellh/go-homedir/LICENSE +21 -0
- data/vendor/github.com/mitchellh/go-homedir/README.md +14 -0
- data/vendor/github.com/mitchellh/go-homedir/go.mod +1 -0
- data/vendor/github.com/mitchellh/go-homedir/homedir.go +167 -0
- data/vendor/github.com/pkg/errors/.gitignore +24 -0
- data/vendor/github.com/pkg/errors/.travis.yml +10 -0
- data/vendor/github.com/pkg/errors/LICENSE +23 -0
- data/vendor/github.com/pkg/errors/Makefile +44 -0
- data/vendor/github.com/pkg/errors/README.md +59 -0
- data/vendor/github.com/pkg/errors/appveyor.yml +32 -0
- data/vendor/github.com/pkg/errors/errors.go +288 -0
- data/vendor/github.com/pkg/errors/go113.go +38 -0
- data/vendor/github.com/pkg/errors/stack.go +177 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/backups.go +139 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/branches.go +258 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/certs.go +142 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/client.go +305 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/databases.go +131 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/deploy_requests.go +368 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/organizations.go +78 -0
- data/vendor/github.com/planetscale/planetscale-go/planetscale/service_tokens.go +163 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/client.go +467 -0
- data/vendor/github.com/planetscale/sql-proxy/proxy/tls_cache.go +73 -0
- data/vendor/go.uber.org/atomic/.codecov.yml +19 -0
- data/vendor/go.uber.org/atomic/.gitignore +12 -0
- data/vendor/go.uber.org/atomic/.travis.yml +27 -0
- data/vendor/go.uber.org/atomic/CHANGELOG.md +76 -0
- data/vendor/go.uber.org/atomic/LICENSE.txt +19 -0
- data/vendor/go.uber.org/atomic/Makefile +78 -0
- data/vendor/go.uber.org/atomic/README.md +63 -0
- data/vendor/go.uber.org/atomic/bool.go +81 -0
- data/vendor/go.uber.org/atomic/bool_ext.go +53 -0
- data/vendor/go.uber.org/atomic/doc.go +23 -0
- data/vendor/go.uber.org/atomic/duration.go +82 -0
- data/vendor/go.uber.org/atomic/duration_ext.go +40 -0
- data/vendor/go.uber.org/atomic/error.go +51 -0
- data/vendor/go.uber.org/atomic/error_ext.go +39 -0
- data/vendor/go.uber.org/atomic/float64.go +76 -0
- data/vendor/go.uber.org/atomic/float64_ext.go +47 -0
- data/vendor/go.uber.org/atomic/gen.go +26 -0
- data/vendor/go.uber.org/atomic/go.mod +8 -0
- data/vendor/go.uber.org/atomic/go.sum +9 -0
- data/vendor/go.uber.org/atomic/int32.go +102 -0
- data/vendor/go.uber.org/atomic/int64.go +102 -0
- data/vendor/go.uber.org/atomic/nocmp.go +35 -0
- data/vendor/go.uber.org/atomic/string.go +54 -0
- data/vendor/go.uber.org/atomic/string_ext.go +43 -0
- data/vendor/go.uber.org/atomic/uint32.go +102 -0
- data/vendor/go.uber.org/atomic/uint64.go +102 -0
- data/vendor/go.uber.org/atomic/value.go +31 -0
- data/vendor/go.uber.org/multierr/.codecov.yml +15 -0
- data/vendor/go.uber.org/multierr/.gitignore +4 -0
- data/vendor/go.uber.org/multierr/.travis.yml +23 -0
- data/vendor/go.uber.org/multierr/CHANGELOG.md +60 -0
- data/vendor/go.uber.org/multierr/LICENSE.txt +19 -0
- data/vendor/go.uber.org/multierr/Makefile +42 -0
- data/vendor/go.uber.org/multierr/README.md +23 -0
- data/vendor/go.uber.org/multierr/error.go +449 -0
- data/vendor/go.uber.org/multierr/glide.yaml +8 -0
- data/vendor/go.uber.org/multierr/go.mod +8 -0
- data/vendor/go.uber.org/multierr/go.sum +11 -0
- data/vendor/go.uber.org/multierr/go113.go +52 -0
- data/vendor/go.uber.org/zap/.codecov.yml +17 -0
- data/vendor/go.uber.org/zap/.gitignore +32 -0
- data/vendor/go.uber.org/zap/.readme.tmpl +109 -0
- data/vendor/go.uber.org/zap/.travis.yml +23 -0
- data/vendor/go.uber.org/zap/CHANGELOG.md +432 -0
- data/vendor/go.uber.org/zap/CODE_OF_CONDUCT.md +75 -0
- data/vendor/go.uber.org/zap/CONTRIBUTING.md +81 -0
- data/vendor/go.uber.org/zap/FAQ.md +156 -0
- data/vendor/go.uber.org/zap/LICENSE.txt +19 -0
- data/vendor/go.uber.org/zap/Makefile +63 -0
- data/vendor/go.uber.org/zap/README.md +134 -0
- data/vendor/go.uber.org/zap/array.go +320 -0
- data/vendor/go.uber.org/zap/buffer/buffer.go +123 -0
- data/vendor/go.uber.org/zap/buffer/pool.go +49 -0
- data/vendor/go.uber.org/zap/checklicense.sh +17 -0
- data/vendor/go.uber.org/zap/config.go +264 -0
- data/vendor/go.uber.org/zap/doc.go +113 -0
- data/vendor/go.uber.org/zap/encoder.go +79 -0
- data/vendor/go.uber.org/zap/error.go +80 -0
- data/vendor/go.uber.org/zap/field.go +539 -0
- data/vendor/go.uber.org/zap/flag.go +39 -0
- data/vendor/go.uber.org/zap/glide.yaml +34 -0
- data/vendor/go.uber.org/zap/global.go +168 -0
- data/vendor/go.uber.org/zap/global_go112.go +26 -0
- data/vendor/go.uber.org/zap/global_prego112.go +26 -0
- data/vendor/go.uber.org/zap/go.mod +13 -0
- data/vendor/go.uber.org/zap/go.sum +56 -0
- data/vendor/go.uber.org/zap/http_handler.go +81 -0
- data/vendor/go.uber.org/zap/internal/bufferpool/bufferpool.go +31 -0
- data/vendor/go.uber.org/zap/internal/color/color.go +44 -0
- data/vendor/go.uber.org/zap/internal/exit/exit.go +64 -0
- data/vendor/go.uber.org/zap/level.go +132 -0
- data/vendor/go.uber.org/zap/logger.go +344 -0
- data/vendor/go.uber.org/zap/options.go +140 -0
- data/vendor/go.uber.org/zap/sink.go +161 -0
- data/vendor/go.uber.org/zap/stacktrace.go +85 -0
- data/vendor/go.uber.org/zap/sugar.go +304 -0
- data/vendor/go.uber.org/zap/time.go +27 -0
- data/vendor/go.uber.org/zap/writer.go +99 -0
- data/vendor/go.uber.org/zap/zapcore/console_encoder.go +161 -0
- data/vendor/go.uber.org/zap/zapcore/core.go +113 -0
- data/vendor/go.uber.org/zap/zapcore/doc.go +24 -0
- data/vendor/go.uber.org/zap/zapcore/encoder.go +443 -0
- data/vendor/go.uber.org/zap/zapcore/entry.go +264 -0
- data/vendor/go.uber.org/zap/zapcore/error.go +115 -0
- data/vendor/go.uber.org/zap/zapcore/field.go +227 -0
- data/vendor/go.uber.org/zap/zapcore/hook.go +68 -0
- data/vendor/go.uber.org/zap/zapcore/increase_level.go +66 -0
- data/vendor/go.uber.org/zap/zapcore/json_encoder.go +534 -0
- data/vendor/go.uber.org/zap/zapcore/level.go +175 -0
- data/vendor/go.uber.org/zap/zapcore/level_strings.go +46 -0
- data/vendor/go.uber.org/zap/zapcore/marshaler.go +61 -0
- data/vendor/go.uber.org/zap/zapcore/memory_encoder.go +179 -0
- data/vendor/go.uber.org/zap/zapcore/sampler.go +208 -0
- data/vendor/go.uber.org/zap/zapcore/tee.go +81 -0
- data/vendor/go.uber.org/zap/zapcore/write_syncer.go +123 -0
- data/vendor/golang.org/x/net/AUTHORS +3 -0
- data/vendor/golang.org/x/net/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/net/LICENSE +27 -0
- data/vendor/golang.org/x/net/PATENTS +22 -0
- data/vendor/golang.org/x/net/context/context.go +56 -0
- data/vendor/golang.org/x/net/context/ctxhttp/ctxhttp.go +71 -0
- data/vendor/golang.org/x/net/context/go17.go +73 -0
- data/vendor/golang.org/x/net/context/go19.go +21 -0
- data/vendor/golang.org/x/net/context/pre_go17.go +301 -0
- data/vendor/golang.org/x/net/context/pre_go19.go +110 -0
- data/vendor/golang.org/x/oauth2/.travis.yml +13 -0
- data/vendor/golang.org/x/oauth2/AUTHORS +3 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTING.md +26 -0
- data/vendor/golang.org/x/oauth2/CONTRIBUTORS +3 -0
- data/vendor/golang.org/x/oauth2/LICENSE +27 -0
- data/vendor/golang.org/x/oauth2/README.md +36 -0
- data/vendor/golang.org/x/oauth2/go.mod +9 -0
- data/vendor/golang.org/x/oauth2/go.sum +361 -0
- data/vendor/golang.org/x/oauth2/internal/client_appengine.go +14 -0
- data/vendor/golang.org/x/oauth2/internal/doc.go +6 -0
- data/vendor/golang.org/x/oauth2/internal/oauth2.go +37 -0
- data/vendor/golang.org/x/oauth2/internal/token.go +294 -0
- data/vendor/golang.org/x/oauth2/internal/transport.go +33 -0
- data/vendor/golang.org/x/oauth2/oauth2.go +381 -0
- data/vendor/golang.org/x/oauth2/token.go +178 -0
- data/vendor/golang.org/x/oauth2/transport.go +89 -0
- data/vendor/google.golang.org/appengine/LICENSE +202 -0
- data/vendor/google.golang.org/appengine/internal/api.go +678 -0
- data/vendor/google.golang.org/appengine/internal/api_classic.go +169 -0
- data/vendor/google.golang.org/appengine/internal/api_common.go +123 -0
- data/vendor/google.golang.org/appengine/internal/app_id.go +28 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.pb.go +308 -0
- data/vendor/google.golang.org/appengine/internal/base/api_base.proto +33 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.pb.go +4367 -0
- data/vendor/google.golang.org/appengine/internal/datastore/datastore_v3.proto +551 -0
- data/vendor/google.golang.org/appengine/internal/identity.go +55 -0
- data/vendor/google.golang.org/appengine/internal/identity_classic.go +61 -0
- data/vendor/google.golang.org/appengine/internal/identity_flex.go +11 -0
- data/vendor/google.golang.org/appengine/internal/identity_vm.go +134 -0
- data/vendor/google.golang.org/appengine/internal/internal.go +110 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.pb.go +1313 -0
- data/vendor/google.golang.org/appengine/internal/log/log_service.proto +150 -0
- data/vendor/google.golang.org/appengine/internal/main.go +16 -0
- data/vendor/google.golang.org/appengine/internal/main_common.go +7 -0
- data/vendor/google.golang.org/appengine/internal/main_vm.go +69 -0
- data/vendor/google.golang.org/appengine/internal/metadata.go +60 -0
- data/vendor/google.golang.org/appengine/internal/net.go +56 -0
- data/vendor/google.golang.org/appengine/internal/regen.sh +40 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.pb.go +361 -0
- data/vendor/google.golang.org/appengine/internal/remote_api/remote_api.proto +44 -0
- data/vendor/google.golang.org/appengine/internal/transaction.go +115 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.pb.go +527 -0
- data/vendor/google.golang.org/appengine/internal/urlfetch/urlfetch_service.proto +64 -0
- data/vendor/google.golang.org/appengine/urlfetch/urlfetch.go +210 -0
- data/vendor/google.golang.org/protobuf/AUTHORS +3 -0
- data/vendor/google.golang.org/protobuf/CONTRIBUTORS +3 -0
- data/vendor/google.golang.org/protobuf/LICENSE +27 -0
- data/vendor/google.golang.org/protobuf/PATENTS +22 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +773 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
- data/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +371 -0
- data/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +538 -0
- data/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +318 -0
- data/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +241 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +207 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +665 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +190 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +265 -0
- data/vendor/google.golang.org/protobuf/internal/errors/errors.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go112.go +39 -0
- data/vendor/google.golang.org/protobuf/internal/errors/is_go113.go +12 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/build.go +158 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +631 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +471 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +704 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +450 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +356 -0
- data/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +107 -0
- data/vendor/google.golang.org/protobuf/internal/filetype/build.go +297 -0
- data/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +9 -0
- data/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
- data/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +829 -0
- data/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
- data/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/goname.go +25 -0
- data/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
- data/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
- data/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +116 -0
- data/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
- data/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +184 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
- data/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
- data/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
- data/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +223 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +830 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5637 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +388 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go111.go +37 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_map_go112.go +11 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +217 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +123 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_reflect.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
- data/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +17 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert.go +496 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
- data/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
- data/vendor/google.golang.org/protobuf/internal/impl/decode.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/encode.go +201 -0
- data/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
- data/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
- data/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +558 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge.go +176 -0
- data/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message.go +276 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +465 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +543 -0
- data/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +249 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_reflect.go +178 -0
- data/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +174 -0
- data/vendor/google.golang.org/protobuf/internal/impl/validate.go +576 -0
- data/vendor/google.golang.org/protobuf/internal/impl/weak.go +74 -0
- data/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
- data/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
- data/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
- data/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_pure.go +27 -0
- data/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +94 -0
- data/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
- data/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
- data/vendor/google.golang.org/protobuf/proto/decode.go +278 -0
- data/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
- data/vendor/google.golang.org/protobuf/proto/doc.go +94 -0
- data/vendor/google.golang.org/protobuf/proto/encode.go +319 -0
- data/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/equal.go +167 -0
- data/vendor/google.golang.org/protobuf/proto/extension.go +92 -0
- data/vendor/google.golang.org/protobuf/proto/merge.go +139 -0
- data/vendor/google.golang.org/protobuf/proto/messageset.go +93 -0
- data/vendor/google.golang.org/protobuf/proto/proto.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/proto_methods.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/proto_reflect.go +19 -0
- data/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
- data/vendor/google.golang.org/protobuf/proto/size.go +97 -0
- data/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
- data/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc.go +276 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_init.go +248 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_resolve.go +286 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/desc_validate.go +374 -0
- data/vendor/google.golang.org/protobuf/reflect/protodesc/proto.go +252 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +77 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +504 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +128 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +461 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +665 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_pure.go +59 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +411 -0
- data/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +98 -0
- data/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +869 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
- data/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +167 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +44 -0
- data/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +56 -0
- data/vendor/google.golang.org/protobuf/types/descriptorpb/descriptor.pb.go +4039 -0
- data/vendor/modules.txt +79 -0
- metadata +495 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
// Package cleanhttp offers convenience utilities for acquiring "clean"
|
2
|
+
// http.Transport and http.Client structs.
|
3
|
+
//
|
4
|
+
// Values set on http.DefaultClient and http.DefaultTransport affect all
|
5
|
+
// callers. This can have detrimental effects, esepcially in TLS contexts,
|
6
|
+
// where client or root certificates set to talk to multiple endpoints can end
|
7
|
+
// up displacing each other, leading to hard-to-debug issues. This package
|
8
|
+
// provides non-shared http.Client and http.Transport structs to ensure that
|
9
|
+
// the configuration will not be overwritten by other parts of the application
|
10
|
+
// or dependencies.
|
11
|
+
//
|
12
|
+
// The DefaultClient and DefaultTransport functions disable idle connections
|
13
|
+
// and keepalives. Without ensuring that idle connections are closed before
|
14
|
+
// garbage collection, short-term clients/transports can leak file descriptors,
|
15
|
+
// eventually leading to "too many open files" errors. If you will be
|
16
|
+
// connecting to the same hosts repeatedly from the same client, you can use
|
17
|
+
// DefaultPooledClient to receive a client that has connection pooling
|
18
|
+
// semantics similar to http.DefaultClient.
|
19
|
+
//
|
20
|
+
package cleanhttp
|
@@ -0,0 +1,48 @@
|
|
1
|
+
package cleanhttp
|
2
|
+
|
3
|
+
import (
|
4
|
+
"net/http"
|
5
|
+
"strings"
|
6
|
+
"unicode"
|
7
|
+
)
|
8
|
+
|
9
|
+
// HandlerInput provides input options to cleanhttp's handlers
|
10
|
+
type HandlerInput struct {
|
11
|
+
ErrStatus int
|
12
|
+
}
|
13
|
+
|
14
|
+
// PrintablePathCheckHandler is a middleware that ensures the request path
|
15
|
+
// contains only printable runes.
|
16
|
+
func PrintablePathCheckHandler(next http.Handler, input *HandlerInput) http.Handler {
|
17
|
+
// Nil-check on input to make it optional
|
18
|
+
if input == nil {
|
19
|
+
input = &HandlerInput{
|
20
|
+
ErrStatus: http.StatusBadRequest,
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
// Default to http.StatusBadRequest on error
|
25
|
+
if input.ErrStatus == 0 {
|
26
|
+
input.ErrStatus = http.StatusBadRequest
|
27
|
+
}
|
28
|
+
|
29
|
+
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
30
|
+
if r != nil {
|
31
|
+
// Check URL path for non-printable characters
|
32
|
+
idx := strings.IndexFunc(r.URL.Path, func(c rune) bool {
|
33
|
+
return !unicode.IsPrint(c)
|
34
|
+
})
|
35
|
+
|
36
|
+
if idx != -1 {
|
37
|
+
w.WriteHeader(input.ErrStatus)
|
38
|
+
return
|
39
|
+
}
|
40
|
+
|
41
|
+
if next != nil {
|
42
|
+
next.ServeHTTP(w, r)
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
return
|
47
|
+
})
|
48
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2013 Mitchell Hashimoto
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# go-homedir
|
2
|
+
|
3
|
+
This is a Go library for detecting the user's home directory without
|
4
|
+
the use of cgo, so the library can be used in cross-compilation environments.
|
5
|
+
|
6
|
+
Usage is incredibly simple, just call `homedir.Dir()` to get the home directory
|
7
|
+
for a user, and `homedir.Expand()` to expand the `~` in a path to the home
|
8
|
+
directory.
|
9
|
+
|
10
|
+
**Why not just use `os/user`?** The built-in `os/user` package requires
|
11
|
+
cgo on Darwin systems. This means that any Go code that uses that package
|
12
|
+
cannot cross compile. But 99% of the time the use for `os/user` is just to
|
13
|
+
retrieve the home directory, which we can do for the current user without
|
14
|
+
cgo. This library does that, enabling cross-compilation.
|
@@ -0,0 +1 @@
|
|
1
|
+
module github.com/mitchellh/go-homedir
|
@@ -0,0 +1,167 @@
|
|
1
|
+
package homedir
|
2
|
+
|
3
|
+
import (
|
4
|
+
"bytes"
|
5
|
+
"errors"
|
6
|
+
"os"
|
7
|
+
"os/exec"
|
8
|
+
"path/filepath"
|
9
|
+
"runtime"
|
10
|
+
"strconv"
|
11
|
+
"strings"
|
12
|
+
"sync"
|
13
|
+
)
|
14
|
+
|
15
|
+
// DisableCache will disable caching of the home directory. Caching is enabled
|
16
|
+
// by default.
|
17
|
+
var DisableCache bool
|
18
|
+
|
19
|
+
var homedirCache string
|
20
|
+
var cacheLock sync.RWMutex
|
21
|
+
|
22
|
+
// Dir returns the home directory for the executing user.
|
23
|
+
//
|
24
|
+
// This uses an OS-specific method for discovering the home directory.
|
25
|
+
// An error is returned if a home directory cannot be detected.
|
26
|
+
func Dir() (string, error) {
|
27
|
+
if !DisableCache {
|
28
|
+
cacheLock.RLock()
|
29
|
+
cached := homedirCache
|
30
|
+
cacheLock.RUnlock()
|
31
|
+
if cached != "" {
|
32
|
+
return cached, nil
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
cacheLock.Lock()
|
37
|
+
defer cacheLock.Unlock()
|
38
|
+
|
39
|
+
var result string
|
40
|
+
var err error
|
41
|
+
if runtime.GOOS == "windows" {
|
42
|
+
result, err = dirWindows()
|
43
|
+
} else {
|
44
|
+
// Unix-like system, so just assume Unix
|
45
|
+
result, err = dirUnix()
|
46
|
+
}
|
47
|
+
|
48
|
+
if err != nil {
|
49
|
+
return "", err
|
50
|
+
}
|
51
|
+
homedirCache = result
|
52
|
+
return result, nil
|
53
|
+
}
|
54
|
+
|
55
|
+
// Expand expands the path to include the home directory if the path
|
56
|
+
// is prefixed with `~`. If it isn't prefixed with `~`, the path is
|
57
|
+
// returned as-is.
|
58
|
+
func Expand(path string) (string, error) {
|
59
|
+
if len(path) == 0 {
|
60
|
+
return path, nil
|
61
|
+
}
|
62
|
+
|
63
|
+
if path[0] != '~' {
|
64
|
+
return path, nil
|
65
|
+
}
|
66
|
+
|
67
|
+
if len(path) > 1 && path[1] != '/' && path[1] != '\\' {
|
68
|
+
return "", errors.New("cannot expand user-specific home dir")
|
69
|
+
}
|
70
|
+
|
71
|
+
dir, err := Dir()
|
72
|
+
if err != nil {
|
73
|
+
return "", err
|
74
|
+
}
|
75
|
+
|
76
|
+
return filepath.Join(dir, path[1:]), nil
|
77
|
+
}
|
78
|
+
|
79
|
+
// Reset clears the cache, forcing the next call to Dir to re-detect
|
80
|
+
// the home directory. This generally never has to be called, but can be
|
81
|
+
// useful in tests if you're modifying the home directory via the HOME
|
82
|
+
// env var or something.
|
83
|
+
func Reset() {
|
84
|
+
cacheLock.Lock()
|
85
|
+
defer cacheLock.Unlock()
|
86
|
+
homedirCache = ""
|
87
|
+
}
|
88
|
+
|
89
|
+
func dirUnix() (string, error) {
|
90
|
+
homeEnv := "HOME"
|
91
|
+
if runtime.GOOS == "plan9" {
|
92
|
+
// On plan9, env vars are lowercase.
|
93
|
+
homeEnv = "home"
|
94
|
+
}
|
95
|
+
|
96
|
+
// First prefer the HOME environmental variable
|
97
|
+
if home := os.Getenv(homeEnv); home != "" {
|
98
|
+
return home, nil
|
99
|
+
}
|
100
|
+
|
101
|
+
var stdout bytes.Buffer
|
102
|
+
|
103
|
+
// If that fails, try OS specific commands
|
104
|
+
if runtime.GOOS == "darwin" {
|
105
|
+
cmd := exec.Command("sh", "-c", `dscl -q . -read /Users/"$(whoami)" NFSHomeDirectory | sed 's/^[^ ]*: //'`)
|
106
|
+
cmd.Stdout = &stdout
|
107
|
+
if err := cmd.Run(); err == nil {
|
108
|
+
result := strings.TrimSpace(stdout.String())
|
109
|
+
if result != "" {
|
110
|
+
return result, nil
|
111
|
+
}
|
112
|
+
}
|
113
|
+
} else {
|
114
|
+
cmd := exec.Command("getent", "passwd", strconv.Itoa(os.Getuid()))
|
115
|
+
cmd.Stdout = &stdout
|
116
|
+
if err := cmd.Run(); err != nil {
|
117
|
+
// If the error is ErrNotFound, we ignore it. Otherwise, return it.
|
118
|
+
if err != exec.ErrNotFound {
|
119
|
+
return "", err
|
120
|
+
}
|
121
|
+
} else {
|
122
|
+
if passwd := strings.TrimSpace(stdout.String()); passwd != "" {
|
123
|
+
// username:password:uid:gid:gecos:home:shell
|
124
|
+
passwdParts := strings.SplitN(passwd, ":", 7)
|
125
|
+
if len(passwdParts) > 5 {
|
126
|
+
return passwdParts[5], nil
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
// If all else fails, try the shell
|
133
|
+
stdout.Reset()
|
134
|
+
cmd := exec.Command("sh", "-c", "cd && pwd")
|
135
|
+
cmd.Stdout = &stdout
|
136
|
+
if err := cmd.Run(); err != nil {
|
137
|
+
return "", err
|
138
|
+
}
|
139
|
+
|
140
|
+
result := strings.TrimSpace(stdout.String())
|
141
|
+
if result == "" {
|
142
|
+
return "", errors.New("blank output when reading home directory")
|
143
|
+
}
|
144
|
+
|
145
|
+
return result, nil
|
146
|
+
}
|
147
|
+
|
148
|
+
func dirWindows() (string, error) {
|
149
|
+
// First prefer the HOME environmental variable
|
150
|
+
if home := os.Getenv("HOME"); home != "" {
|
151
|
+
return home, nil
|
152
|
+
}
|
153
|
+
|
154
|
+
// Prefer standard environment variable USERPROFILE
|
155
|
+
if home := os.Getenv("USERPROFILE"); home != "" {
|
156
|
+
return home, nil
|
157
|
+
}
|
158
|
+
|
159
|
+
drive := os.Getenv("HOMEDRIVE")
|
160
|
+
path := os.Getenv("HOMEPATH")
|
161
|
+
home := drive + path
|
162
|
+
if drive == "" || path == "" {
|
163
|
+
return "", errors.New("HOMEDRIVE, HOMEPATH, or USERPROFILE are blank")
|
164
|
+
}
|
165
|
+
|
166
|
+
return home, nil
|
167
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Compiled Object files, Static and Dynamic libs (Shared Objects)
|
2
|
+
*.o
|
3
|
+
*.a
|
4
|
+
*.so
|
5
|
+
|
6
|
+
# Folders
|
7
|
+
_obj
|
8
|
+
_test
|
9
|
+
|
10
|
+
# Architecture specific extensions/prefixes
|
11
|
+
*.[568vq]
|
12
|
+
[568vq].out
|
13
|
+
|
14
|
+
*.cgo1.go
|
15
|
+
*.cgo2.c
|
16
|
+
_cgo_defun.c
|
17
|
+
_cgo_gotypes.go
|
18
|
+
_cgo_export.*
|
19
|
+
|
20
|
+
_testmain.go
|
21
|
+
|
22
|
+
*.exe
|
23
|
+
*.test
|
24
|
+
*.prof
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Copyright (c) 2015, Dave Cheney <dave@cheney.net>
|
2
|
+
All rights reserved.
|
3
|
+
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
5
|
+
modification, are permitted provided that the following conditions are met:
|
6
|
+
|
7
|
+
* Redistributions of source code must retain the above copyright notice, this
|
8
|
+
list of conditions and the following disclaimer.
|
9
|
+
|
10
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
11
|
+
this list of conditions and the following disclaimer in the documentation
|
12
|
+
and/or other materials provided with the distribution.
|
13
|
+
|
14
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
15
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
16
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
17
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
18
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
19
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
20
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
21
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
22
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
23
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
PKGS := github.com/pkg/errors
|
2
|
+
SRCDIRS := $(shell go list -f '{{.Dir}}' $(PKGS))
|
3
|
+
GO := go
|
4
|
+
|
5
|
+
check: test vet gofmt misspell unconvert staticcheck ineffassign unparam
|
6
|
+
|
7
|
+
test:
|
8
|
+
$(GO) test $(PKGS)
|
9
|
+
|
10
|
+
vet: | test
|
11
|
+
$(GO) vet $(PKGS)
|
12
|
+
|
13
|
+
staticcheck:
|
14
|
+
$(GO) get honnef.co/go/tools/cmd/staticcheck
|
15
|
+
staticcheck -checks all $(PKGS)
|
16
|
+
|
17
|
+
misspell:
|
18
|
+
$(GO) get github.com/client9/misspell/cmd/misspell
|
19
|
+
misspell \
|
20
|
+
-locale GB \
|
21
|
+
-error \
|
22
|
+
*.md *.go
|
23
|
+
|
24
|
+
unconvert:
|
25
|
+
$(GO) get github.com/mdempsky/unconvert
|
26
|
+
unconvert -v $(PKGS)
|
27
|
+
|
28
|
+
ineffassign:
|
29
|
+
$(GO) get github.com/gordonklaus/ineffassign
|
30
|
+
find $(SRCDIRS) -name '*.go' | xargs ineffassign
|
31
|
+
|
32
|
+
pedantic: check errcheck
|
33
|
+
|
34
|
+
unparam:
|
35
|
+
$(GO) get mvdan.cc/unparam
|
36
|
+
unparam ./...
|
37
|
+
|
38
|
+
errcheck:
|
39
|
+
$(GO) get github.com/kisielk/errcheck
|
40
|
+
errcheck $(PKGS)
|
41
|
+
|
42
|
+
gofmt:
|
43
|
+
@echo Checking code is gofmted
|
44
|
+
@test -z "$(shell gofmt -s -l -d -e $(SRCDIRS) | tee /dev/stderr)"
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) [![Sourcegraph](https://sourcegraph.com/github.com/pkg/errors/-/badge.svg)](https://sourcegraph.com/github.com/pkg/errors?badge)
|
2
|
+
|
3
|
+
Package errors provides simple error handling primitives.
|
4
|
+
|
5
|
+
`go get github.com/pkg/errors`
|
6
|
+
|
7
|
+
The traditional error handling idiom in Go is roughly akin to
|
8
|
+
```go
|
9
|
+
if err != nil {
|
10
|
+
return err
|
11
|
+
}
|
12
|
+
```
|
13
|
+
which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error.
|
14
|
+
|
15
|
+
## Adding context to an error
|
16
|
+
|
17
|
+
The errors.Wrap function returns a new error that adds context to the original error. For example
|
18
|
+
```go
|
19
|
+
_, err := ioutil.ReadAll(r)
|
20
|
+
if err != nil {
|
21
|
+
return errors.Wrap(err, "read failed")
|
22
|
+
}
|
23
|
+
```
|
24
|
+
## Retrieving the cause of an error
|
25
|
+
|
26
|
+
Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`.
|
27
|
+
```go
|
28
|
+
type causer interface {
|
29
|
+
Cause() error
|
30
|
+
}
|
31
|
+
```
|
32
|
+
`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example:
|
33
|
+
```go
|
34
|
+
switch err := errors.Cause(err).(type) {
|
35
|
+
case *MyError:
|
36
|
+
// handle specifically
|
37
|
+
default:
|
38
|
+
// unknown error
|
39
|
+
}
|
40
|
+
```
|
41
|
+
|
42
|
+
[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors).
|
43
|
+
|
44
|
+
## Roadmap
|
45
|
+
|
46
|
+
With the upcoming [Go2 error proposals](https://go.googlesource.com/proposal/+/master/design/go2draft.md) this package is moving into maintenance mode. The roadmap for a 1.0 release is as follows:
|
47
|
+
|
48
|
+
- 0.9. Remove pre Go 1.9 and Go 1.10 support, address outstanding pull requests (if possible)
|
49
|
+
- 1.0. Final release.
|
50
|
+
|
51
|
+
## Contributing
|
52
|
+
|
53
|
+
Because of the Go2 errors changes, this package is not accepting proposals for new functionality. With that said, we welcome pull requests, bug fixes and issue reports.
|
54
|
+
|
55
|
+
Before sending a PR, please discuss your change by raising an issue.
|
56
|
+
|
57
|
+
## License
|
58
|
+
|
59
|
+
BSD-2-Clause
|