summaryrefslogtreecommitdiff
path: root/vendor/github.com/google
diff options
context:
space:
mode:
authorDave Henderson <dhenderson@gmail.com>2019-08-17 11:53:32 -0400
committerDave Henderson <dhenderson@gmail.com>2019-10-13 12:03:59 -0400
commitb2a1fb672bdd6d5e804e22766618cafa334af752 (patch)
tree0177dbfe1b80aad8e3b166291efb931cfd6d5728 /vendor/github.com/google
parentd0d67b1dd388ee9ae0c4afd750cf1e1f11d3032a (diff)
Supporting s3 datasources
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'vendor/github.com/google')
-rw-r--r--vendor/github.com/google/wire/.codecov.yml13
-rw-r--r--vendor/github.com/google/wire/.contributebot4
-rw-r--r--vendor/github.com/google/wire/.travis.yml55
-rw-r--r--vendor/github.com/google/wire/AUTHORS18
-rw-r--r--vendor/github.com/google/wire/CODE_OF_CONDUCT.md10
-rw-r--r--vendor/github.com/google/wire/CONTRIBUTING.md152
-rw-r--r--vendor/github.com/google/wire/CONTRIBUTORS43
-rw-r--r--vendor/github.com/google/wire/LICENSE202
-rw-r--r--vendor/github.com/google/wire/README.md57
-rw-r--r--vendor/github.com/google/wire/go.mod10
-rw-r--r--vendor/github.com/google/wire/go.sum20
-rw-r--r--vendor/github.com/google/wire/wire.go191
12 files changed, 775 insertions, 0 deletions
diff --git a/vendor/github.com/google/wire/.codecov.yml b/vendor/github.com/google/wire/.codecov.yml
new file mode 100644
index 00000000..5ae6b835
--- /dev/null
+++ b/vendor/github.com/google/wire/.codecov.yml
@@ -0,0 +1,13 @@
+comment: off
+coverage:
+ status:
+ project:
+ default:
+ target: 0
+ threshold: null
+ base: auto
+ patch:
+ default:
+ target: 0
+ threshold: null
+ base: auto
diff --git a/vendor/github.com/google/wire/.contributebot b/vendor/github.com/google/wire/.contributebot
new file mode 100644
index 00000000..9a66b3ba
--- /dev/null
+++ b/vendor/github.com/google/wire/.contributebot
@@ -0,0 +1,4 @@
+{
+ "issue_title_pattern": "^.*$",
+ "pull_request_title_response": "Please edit the title of this pull request with the name of the affected component, or \"all\", followed by a colon, followed by a short summary of the change."
+}
diff --git a/vendor/github.com/google/wire/.travis.yml b/vendor/github.com/google/wire/.travis.yml
new file mode 100644
index 00000000..34beb03d
--- /dev/null
+++ b/vendor/github.com/google/wire/.travis.yml
@@ -0,0 +1,55 @@
+# Copyright 2018 The Wire Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+language: go
+go_import_path: github.com/google/wire
+
+before_install:
+ # The Bash that comes with OS X is ancient.
+ # grep is similar: it's not GNU grep, which means commands aren't portable.
+ # Homebrew installs grep as ggrep if you don't build from source, so it needs
+ # moving so it takes precedence in the PATH.
+ - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
+ HOMEBREW_NO_AUTO_UPDATE=1 brew install bash grep;
+ mv $(brew --prefix)/bin/ggrep $(brew --prefix)/bin/grep;
+ fi
+
+install:
+ # Re-checkout files preserving line feeds. This prevents Windows builds from
+ # converting \n to \r\n.
+ - "git config --global core.autocrlf input"
+ - "git checkout -- ."
+
+script:
+ - 'internal/runtests.sh'
+
+env:
+ global:
+ - GO111MODULE=on
+ - GOPROXY=https://proxy.golang.org
+
+# When updating Go versions:
+# In addition to changing the "go:" versions below, edit the version
+# test in internal/runtests.sh.
+
+jobs:
+ include:
+ - go: "1.11.x"
+ os: linux
+ - go: "1.12.x"
+ os: linux
+ - go: "1.12.x"
+ os: osx
+ - go: "1.12.x"
+ os: windows
diff --git a/vendor/github.com/google/wire/AUTHORS b/vendor/github.com/google/wire/AUTHORS
new file mode 100644
index 00000000..4d8d4b31
--- /dev/null
+++ b/vendor/github.com/google/wire/AUTHORS
@@ -0,0 +1,18 @@
+# This is the official list of Wire authors for copyright purposes.
+# This file is distinct from the CONTRIBUTORS files.
+# See the latter for an explanation.
+
+# Names should be added to this file as one of
+# Organization's name
+# Individual's name <submission email address>
+# Individual's name <submission email address> <email2> <emailN>
+# See CONTRIBUTORS for the meaning of multiple email addresses.
+
+# Please keep the list sorted.
+
+Google LLC
+ktr <ktr@syfm.me>
+Kumbirai Tanekha <kumbirai.tanekha@gmail.com>
+Oleg Kovalov <iamolegkovalov@gmail.com>
+Yoichiro Shimizu <budougumi0617@gmail.com>
+Zachary Romero <zacromero3@gmail.com>
diff --git a/vendor/github.com/google/wire/CODE_OF_CONDUCT.md b/vendor/github.com/google/wire/CODE_OF_CONDUCT.md
new file mode 100644
index 00000000..3a8545ec
--- /dev/null
+++ b/vendor/github.com/google/wire/CODE_OF_CONDUCT.md
@@ -0,0 +1,10 @@
+# Code of Conduct
+
+This project is covered under the [Go Code of Conduct][]. In summary:
+
+- Treat everyone with respect and kindness.
+- Be thoughtful in how you communicate.
+- Don’t be destructive or inflammatory.
+- If you encounter an issue, please mail conduct@golang.org.
+
+[Go Code of Conduct]: https://golang.org/conduct
diff --git a/vendor/github.com/google/wire/CONTRIBUTING.md b/vendor/github.com/google/wire/CONTRIBUTING.md
new file mode 100644
index 00000000..68445fc4
--- /dev/null
+++ b/vendor/github.com/google/wire/CONTRIBUTING.md
@@ -0,0 +1,152 @@
+# How to Contribute
+
+We would love to accept your patches and contributions to this project. Here is
+how you can help.
+
+## Filing issues
+
+Filing issues is an important way you can contribute to the Wire Project. We
+want your feedback on things like bugs, desired API changes, or just anything
+that isn't working for you.
+
+### Bugs
+
+If your issue is a bug, open one
+[here](https://github.com/google/wire/issues/new). The easiest way to file an
+issue with all the right information is to run `go bug`. `go bug` will print out
+a handy template of questions and system information that will help us get to
+the root of the issue quicker.
+
+### Changes
+
+Unlike the core Go project, we do not have a formal proposal process for
+changes. If you have a change you would like to see in Wire, please file an
+issue with the necessary details.
+
+### Triaging
+
+The Go Cloud team triages issues at least every two weeks, but usually within
+two business days. Bugs or feature requests are either placed into a **Sprint**
+milestone which means the issue is intended to be worked on. Issues that we
+would like to address but do not have time for are placed into the [Unplanned][]
+milestone.
+
+[Unplanned]: https://github.com/google/wire/milestone/1
+
+## Contributing Code
+
+We love accepting contributions! If your change is minor, please feel free
+submit a [pull request](https://help.github.com/articles/about-pull-requests/).
+If your change is larger, or adds a feature, please file an issue beforehand so
+that we can discuss the change. You're welcome to file an implementation pull
+request immediately as well, although we generally lean towards discussing the
+change and then reviewing the implementation separately.
+
+### Finding something to work on
+
+If you want to write some code, but don't know where to start or what you might
+want to do, take a look at our [Unplanned][] milestone. This is where you can
+find issues we would like to address but can't currently find time for. See if
+any of the latest ones look interesting! If you need help before you can start
+work, you can comment on the issue and we will try to help as best we can.
+
+### Contributor License Agreement
+
+Contributions to this project can only be made by those who have signed Google's
+Contributor License Agreement. You (or your employer) retain the copyright to
+your contribution, this simply gives us permission to use and redistribute your
+contributions as part of the project. Head over to
+<https://cla.developers.google.com/> to see your current agreements on file or
+to sign a new one.
+
+As a personal contributor, you only need to sign the Google CLA once across all
+Google projects. If you've already signed the CLA, there is no need to do it
+again. If you are submitting code on behalf of your employer, there's
+[a separate corporate CLA that your employer manages for you](https://opensource.google.com/docs/cla/#external-contributors).
+
+## Making a pull request
+
+* Follow the normal
+ [pull request flow](https://help.github.com/articles/creating-a-pull-request/)
+* Build your changes using Go 1.11 with Go modules enabled. Wire's continuous
+ integration uses Go modules in order to ensure
+ [reproducible builds](https://research.swtch.com/vgo-repro).
+* Test your changes using `go test ./...`. Please add tests that show the
+ change does what it says it does, even if there wasn't a test in the first
+ place.
+* Feel free to make as many commits as you want; we will squash them all into
+ a single commit before merging your change.
+* Check the diffs, write a useful description (including something like
+ `Fixes #123` if it's fixing a bug) and send the PR out.
+* [Travis CI](http://travis-ci.com) will run tests against the PR. This should
+ happen within 10 minutes or so. If a test fails, go back to the coding stage
+ and try to fix the test and push the same branch again. You won't need to
+ make a new pull request, the changes will be rolled directly into the PR you
+ already opened. Wait for Travis again. There is no need to assign a reviewer
+ to the PR, the project team will assign someone for review during the
+ standard [triage](#triaging) process.
+
+## Code review
+
+All submissions, including submissions by project members, require review. It is
+almost never the case that a pull request is accepted without some changes
+requested, so please do not be offended!
+
+When you have finished making requested changes to your pull request, please
+make a comment containing "PTAL" (Please Take Another Look) on your pull
+request. GitHub notifications can be noisy, and it is unfortunately easy for
+things to be lost in the shuffle.
+
+Once your PR is approved (hooray!) the reviewer will squash your commits into a
+single commit, and then merge the commit onto the Wire master branch. Thank you!
+
+## Github code review workflow conventions
+
+(For project members and frequent contributors.)
+
+As a contributor:
+
+- Try hard to make each Pull Request as small and focused as possible. In
+ particular, this means that if a reviewer asks you to do something that is
+ beyond the scope of the Pull Request, the best practice is to file another
+ issue and reference it from the Pull Request rather than just adding more
+ commits to the existing PR.
+- Adding someone as a Reviewer means "please feel free to look and comment";
+ the review is optional. Choose as many Reviewers as you'd like.
+- Adding someone as an Assignee means that the Pull Request should not be
+ submitted until they approve. If you choose multiple Assignees, wait until
+ all of them approve. It is fine to ask someone if they are OK with being
+ removed as an Assignee.
+ - Note that if you don't select any assignees, ContributeBot will turn all
+ of your Reviewers into Assignees.
+- Make as many commits as you want locally, but try not to push them to Github
+ until you've addressed comments; this allows the email notification about
+ the push to be a signal to reviewers that the PR is ready to be looked at
+ again.
+- When there may be confusion about what should happen next for a PR, be
+ explicit; add a "PTAL" comment if it is ready for review again, or a "Please
+ hold off on reviewing for now" if you are still working on addressing
+ comments.
+- "Resolve" comments that you are sure you've addressed; let your reviewers
+ resolve ones that you're not sure about.
+- Do not use `git push --force`; this can cause comments from your reviewers
+ that are associated with a specific commit to be lost. This implies that
+ once you've sent a Pull Request, you should use `git merge` instead of `git
+ rebase` to incorporate commits from the master branch.
+
+As a reviewer:
+
+- Be timely in your review process, especially if you are an Assignee.
+- Try to use `Start a Review` instead of single comments, to reduce email
+ spam.
+- "Resolve" your own comments if they have been addressed.
+- If you want your review to be blocking, and are not currently an Assignee,
+ add yourself as an Assignee.
+
+When squashing-and-merging:
+
+- Ensure that **all** of the Assignees have approved.
+- Do a final review of the one-line PR summary, ensuring that it accurately
+ describes the change.
+- Delete the automatically added commit lines; these are generally not
+ interesting and make commit history harder to read.
diff --git a/vendor/github.com/google/wire/CONTRIBUTORS b/vendor/github.com/google/wire/CONTRIBUTORS
new file mode 100644
index 00000000..00a94f89
--- /dev/null
+++ b/vendor/github.com/google/wire/CONTRIBUTORS
@@ -0,0 +1,43 @@
+# This is the official list of people who can contribute
+# (and typically have contributed) code to the Wire repository.
+# The AUTHORS file lists the copyright holders; this file
+# lists people. For example, Google employees are listed here
+# but not in AUTHORS, because Google holds the copyright.
+#
+# Names should be added to this file only after verifying that
+# the individual or the individual's organization has agreed to
+# the appropriate Contributor License Agreement, found here:
+#
+# http://code.google.com/legal/individual-cla-v1.0.html
+# http://code.google.com/legal/corporate-cla-v1.0.html
+#
+# The agreement for individuals can be filled out on the web.
+#
+# When adding J Random Contributor's name to this file,
+# either J's name or J's organization's name should be
+# added to the AUTHORS file, depending on whether the
+# individual or corporate CLA was used.
+
+# Names should be added to this file like so:
+# Individual's name <submission email address>
+# Individual's name <submission email address> <email2> <emailN>
+#
+# An entry with multiple email addresses specifies that the
+# first address should be used in the submit logs and
+# that the other addresses should be recognized as the
+# same person when interacting with Git.
+
+# Please keep the list sorted.
+
+Chris Lewis <cflewis@google.com> <cflewis@golang.org> <c@chris.to>
+Christina Austin <4240737+clausti@users.noreply.github.com>
+Eno Compton <enocom@google.com>
+Issac Trotts <issactrotts@google.com> <issac.trotts@gmail.com>
+ktr <ktr@syfm.me>
+Kumbirai Tanekha <kumbirai.tanekha@gmail.com>
+Oleg Kovalov <iamolegkovalov@gmail.com>
+Robert van Gent <rvangent@google.com> <vangent@gmail.com>
+Ross Light <light@google.com> <ross@zombiezen.com>
+Tuo Shan <shantuo@google.com> <sturbo89@gmail.com>
+Yoichiro Shimizu <budougumi0617@gmail.com>
+Zachary Romero <zacromero3@gmail.com>
diff --git a/vendor/github.com/google/wire/LICENSE b/vendor/github.com/google/wire/LICENSE
new file mode 100644
index 00000000..d6456956
--- /dev/null
+++ b/vendor/github.com/google/wire/LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/vendor/github.com/google/wire/README.md b/vendor/github.com/google/wire/README.md
new file mode 100644
index 00000000..eef45d8b
--- /dev/null
+++ b/vendor/github.com/google/wire/README.md
@@ -0,0 +1,57 @@
+# Wire: Automated Initialization in Go
+
+[![Build Status](https://travis-ci.com/google/wire.svg?branch=master)][travis]
+[![godoc](https://godoc.org/github.com/google/wire?status.svg)][godoc]
+[![Coverage](https://codecov.io/gh/google/wire/branch/master/graph/badge.svg)](https://codecov.io/gh/google/wire)
+
+
+Wire is a code generation tool that automates connecting components using
+[dependency injection][]. Dependencies between components are represented in
+Wire as function parameters, encouraging explicit initialization instead of
+global variables. Because Wire operates without runtime state or reflection,
+code written to be used with Wire is useful even for hand-written
+initialization.
+
+For an overview, see the [introductory blog post][].
+
+[dependency injection]: https://en.wikipedia.org/wiki/Dependency_injection
+[introductory blog post]: https://blog.golang.org/wire
+[godoc]: https://godoc.org/github.com/google/wire
+[travis]: https://travis-ci.com/google/wire
+
+## Installing
+
+Install Wire by running:
+
+```shell
+go get github.com/google/wire/cmd/wire
+```
+
+and ensuring that `$GOPATH/bin` is added to your `$PATH`.
+
+## Documentation
+
+- [Tutorial][]
+- [User Guide][]
+- [Best Practices][]
+- [FAQ][]
+
+[Tutorial]: ./_tutorial/README.md
+[Best Practices]: ./docs/best-practices.md
+[FAQ]: ./docs/faq.md
+[User Guide]: ./docs/guide.md
+
+## Project status
+
+**This project is in alpha and is not yet suitable for production.**
+
+While in alpha, the API is subject to breaking changes.
+
+## Community
+
+You can contact us on the [go-cloud mailing list][].
+
+This project is covered by the Go [Code of Conduct][].
+
+[Code of Conduct]: ./CODE_OF_CONDUCT.md
+[go-cloud mailing list]: https://groups.google.com/forum/#!forum/go-cloud
diff --git a/vendor/github.com/google/wire/go.mod b/vendor/github.com/google/wire/go.mod
new file mode 100644
index 00000000..cb540ac5
--- /dev/null
+++ b/vendor/github.com/google/wire/go.mod
@@ -0,0 +1,10 @@
+module github.com/google/wire
+
+require (
+ github.com/fatih/color v1.7.0
+ github.com/google/go-cmp v0.2.0
+ github.com/google/subcommands v1.0.1
+ github.com/mattn/go-colorable v0.1.2 // indirect
+ github.com/pmezard/go-difflib v1.0.0
+ golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b
+)
diff --git a/vendor/github.com/google/wire/go.sum b/vendor/github.com/google/wire/go.sum
new file mode 100644
index 00000000..83dc6644
--- /dev/null
+++ b/vendor/github.com/google/wire/go.sum
@@ -0,0 +1,20 @@
+github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys=
+github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+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/subcommands v1.0.1 h1:/eqq+otEXm5vhfBrbREPCSVQbvofip6kIz+mX5TUH7k=
+github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
+github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
+github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
+github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
+github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223 h1:DH4skfRX4EBpamg7iV4ZlCpblAHI6s6TDM39bFZumv8=
+golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b h1:NVD8gBK33xpdqCaZVVtd6OFJp+3dxkXuz7+U7KaVN6s=
+golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
diff --git a/vendor/github.com/google/wire/wire.go b/vendor/github.com/google/wire/wire.go
new file mode 100644
index 00000000..941d6c65
--- /dev/null
+++ b/vendor/github.com/google/wire/wire.go
@@ -0,0 +1,191 @@
+// Copyright 2018 The Wire Authors
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// https://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// Package wire contains directives for Wire code generation.
+// For an overview of working with Wire, see the user guide at
+// https://github.com/google/wire/blob/master/docs/guide.md
+//
+// The directives in this package are used as input to the Wire code generation
+// tool. The entry point of Wire's analysis are injector functions: function
+// templates denoted by only containing a call to Build. The arguments to Build
+// describes a set of providers and the Wire code generation tool builds a
+// directed acylic graph of the providers' output types. The generated code will
+// fill in the function template by using the providers from the provider set to
+// instantiate any needed types.
+package wire
+
+// ProviderSet is a marker type that collects a group of providers.
+type ProviderSet struct{}
+
+// NewSet creates a new provider set that includes the providers in its
+// arguments. Each argument is a function value, a provider set, a call to
+// Struct, a call to Bind, a call to Value, a call to InterfaceValue or a call
+// to FieldsOf.
+//
+// Passing a function value to NewSet declares that the function's first
+// return value type will be provided by calling the function. The arguments
+// to the function will come from the providers for their types. As such, all
+// the function's parameters must be of non-identical types. The function may
+// optionally return an error as its last return value and a cleanup function
+// as the second return value. A cleanup function must be of type func() and is
+// guaranteed to be called before the cleanup function of any of the
+// provider's inputs. If any provider returns an error, the injector function
+// will call all the appropriate cleanup functions and return the error from
+// the injector function.
+//
+// Passing a ProviderSet to NewSet is the same as if the set's contents
+// were passed as arguments to NewSet directly.
+//
+// The behavior of passing the result of a call to other functions in this
+// package are described in their respective doc comments.
+//
+// For compatibility with older versions of Wire, passing a struct value of type
+// S to NewSet declares that both S and *S will be provided by creating a new
+// value of the appropriate type by filling in each field of S using the
+// provider of the field's type. This form is deprecated and will be removed in
+// a future version of Wire: new providers sets should use wire.Struct.
+func NewSet(...interface{}) ProviderSet {
+ return ProviderSet{}
+}
+
+// Build is placed in the body of an injector function template to declare the
+// providers to use. The Wire code generation tool will fill in an
+// implementation of the function. The arguments to Build are interpreted the
+// same as NewSet: they determine the provider set presented to Wire's
+// dependency graph. Build returns an error message that can be sent to a call
+// to panic().
+//
+// The parameters of the injector function are used as inputs in the dependency
+// graph.
+//
+// Similar to provider functions passed into NewSet, the first return value is
+// the output of the injector function, the optional second return value is a
+// cleanup function, and the optional last return value is an error. If any of
+// the provider functions in the injector function's provider set return errors
+// or cleanup functions, the corresponding return value must be present in the
+// injector function template.
+//
+// Examples:
+//
+// func injector(ctx context.Context) (*sql.DB, error) {
+// wire.Build(otherpkg.FooSet, myProviderFunc)
+// return nil, nil
+// }
+//
+// func injector(ctx context.Context) (*sql.DB, error) {
+// panic(wire.Build(otherpkg.FooSet, myProviderFunc))
+// }
+func Build(...interface{}) string {
+ return "implementation not generated, run wire"
+}
+
+// A Binding maps an interface to a concrete type.
+type Binding struct{}
+
+// Bind declares that a concrete type should be used to satisfy a dependency on
+// the type of iface. iface must be a pointer to an interface type, to must be a
+// pointer to a concrete type.
+//
+// Example:
+//
+// type Fooer interface {
+// Foo()
+// }
+//
+// type MyFoo struct{}
+//
+// func (MyFoo) Foo() {}
+//
+// var MySet = wire.NewSet(
+// wire.Struct(new(MyFoo))
+// wire.Bind(new(Fooer), new(MyFoo)))
+func Bind(iface, to interface{}) Binding {
+ return Binding{}
+}
+
+// bindToUsePointer is detected by the wire tool to indicate that Bind's second argument should take a pointer.
+// See https://github.com/google/wire/issues/120 for details.
+const bindToUsePointer = true
+
+// A ProvidedValue is an expression that is copied to the generated injector.
+type ProvidedValue struct{}
+
+// Value binds an expression to provide the type of the expression.
+// The expression may not be an interface value; use InterfaceValue for that.
+//
+// Example:
+//
+// var MySet = wire.NewSet(wire.Value([]string(nil)))
+func Value(interface{}) ProvidedValue {
+ return ProvidedValue{}
+}
+
+// InterfaceValue binds an expression to provide a specific interface type.
+// The first argument is a pointer to the interface which user wants to provide.
+// The second argument is the actual variable value whose type implements the
+// interface.
+//
+// Example:
+//
+// var MySet = wire.NewSet(wire.InterfaceValue(new(io.Reader), os.Stdin))
+func InterfaceValue(typ interface{}, x interface{}) ProvidedValue {
+ return ProvidedValue{}
+}
+
+// A StructProvider represents a named struct.
+type StructProvider struct{}
+
+// Struct specifies that the given struct type will be provided by filling in the fields in the struct that have the names given.
+//
+// The first argument must be a pointer to the struct type. For a struct type
+// Foo, Wire will use field-filling to provide both Foo and *Foo. The remaining
+// arguments are field names to fill in. As a special case, if a single name "*"
+// is given, then all of the fields in the struct will be filled in.
+//
+// For example:
+//
+// type S struct {
+// MyFoo *Foo
+// MyBar *Bar
+// }
+// var Set = wire.NewSet(wire.Struct(new(S), "MyFoo")) -> inject only S.MyFoo
+// var Set = wire.NewSet(wire.Struct(new(S), "*")) -> inject all fields
+func Struct(structType interface{}, fieldNames ...string) StructProvider {
+ return StructProvider{}
+}
+
+// StructFields is a collection of the fields from a struct.
+type StructFields struct{}
+
+// FieldsOf declares that the fields named of the given struct type will be used
+// to provide the types of those fields. The structType argument must be a
+// pointer to the struct or a pointer to a pointer to the struct it wishes to reference.
+//
+// The following example would provide *Foo and *Bar using S.MyFoo and S.MyBar respectively:
+//
+// type S struct {
+// MyFoo *Foo
+// MyBar *Bar
+// }
+//
+// func NewStruct() S { /* ... */ }
+// var Set = wire.NewSet(wire.FieldsOf(new(S), "MyFoo", "MyBar"))
+//
+// or
+//
+// func NewStruct() *S { /* ... */ }
+// var Set = wire.NewSet(wire.FieldsOf(new(*S), "MyFoo", "MyBar"))
+func FieldsOf(structType interface{}, fieldNames ...string) StructFields {
+ return StructFields{}
+}