aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/go.tmz.dev
diff options
context:
space:
mode:
authordependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>2024-03-04 17:40:11 +0000
committerTaras Madan <tarasmadan@google.com>2024-03-04 18:34:55 +0000
commit5fc5366972c874b919f93165bb4ed4e2bcb7c350 (patch)
tree287c3361a0dee0c72af80d9a1a66714a06e98a62 /vendor/go.tmz.dev
parent1be5ce38a9059c356eb193a8c34d60d61c9fc31f (diff)
mod: bump github.com/golangci/golangci-lint from 1.55.2 to 1.56.2
Bumps [github.com/golangci/golangci-lint](https://github.com/golangci/golangci-lint) from 1.55.2 to 1.56.2. - [Release notes](https://github.com/golangci/golangci-lint/releases) - [Changelog](https://github.com/golangci/golangci-lint/blob/master/CHANGELOG.md) - [Commits](https://github.com/golangci/golangci-lint/compare/v1.55.2...v1.56.2) --- updated-dependencies: - dependency-name: github.com/golangci/golangci-lint dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
Diffstat (limited to 'vendor/go.tmz.dev')
-rw-r--r--vendor/go.tmz.dev/musttag/.golangci.yml23
-rw-r--r--vendor/go.tmz.dev/musttag/.goreleaser.yml27
-rw-r--r--vendor/go.tmz.dev/musttag/LICENSE373
-rw-r--r--vendor/go.tmz.dev/musttag/README.md106
-rw-r--r--vendor/go.tmz.dev/musttag/builtins.go67
-rw-r--r--vendor/go.tmz.dev/musttag/musttag.go259
-rw-r--r--vendor/go.tmz.dev/musttag/utils.go57
7 files changed, 0 insertions, 912 deletions
diff --git a/vendor/go.tmz.dev/musttag/.golangci.yml b/vendor/go.tmz.dev/musttag/.golangci.yml
deleted file mode 100644
index 641471cc4..000000000
--- a/vendor/go.tmz.dev/musttag/.golangci.yml
+++ /dev/null
@@ -1,23 +0,0 @@
-linters:
- disable-all: true
- enable:
- # enabled by default:
- - errcheck
- - gosimple
- - govet
- - ineffassign
- - staticcheck
- - typecheck
- - unused
- # disabled by default:
- - gocritic
- - gofumpt
-
-linters-settings:
- gocritic:
- enabled-tags:
- - diagnostic
- - style
- - performance
- - experimental
- - opinionated
diff --git a/vendor/go.tmz.dev/musttag/.goreleaser.yml b/vendor/go.tmz.dev/musttag/.goreleaser.yml
deleted file mode 100644
index 259080886..000000000
--- a/vendor/go.tmz.dev/musttag/.goreleaser.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-builds:
- - main: ./cmd/musttag
- env:
- - CGO_ENABLED=0
- flags:
- - -trimpath
- ldflags:
- - -s -w -X main.version={{ .Version }}
- targets:
- - darwin_amd64
- - darwin_arm64
- - linux_amd64
- - windows_amd64
-
-archives:
- - format_overrides:
- - goos: windows
- format: zip
-
-brews:
- - tap:
- owner: tmzane
- name: homebrew-tap
- token: '{{ .Env.HOMEBREW_TAP_TOKEN }}'
- homepage: https://github.com/tmzane/musttag
- description: A Go linter that enforces field tags in (un)marshaled structs
- license: MPL-2.0
diff --git a/vendor/go.tmz.dev/musttag/LICENSE b/vendor/go.tmz.dev/musttag/LICENSE
deleted file mode 100644
index a612ad981..000000000
--- a/vendor/go.tmz.dev/musttag/LICENSE
+++ /dev/null
@@ -1,373 +0,0 @@
-Mozilla Public License Version 2.0
-==================================
-
-1. Definitions
---------------
-
-1.1. "Contributor"
- means each individual or legal entity that creates, contributes to
- the creation of, or owns Covered Software.
-
-1.2. "Contributor Version"
- means the combination of the Contributions of others (if any) used
- by a Contributor and that particular Contributor's Contribution.
-
-1.3. "Contribution"
- means Covered Software of a particular Contributor.
-
-1.4. "Covered Software"
- means Source Code Form to which the initial Contributor has attached
- the notice in Exhibit A, the Executable Form of such Source Code
- Form, and Modifications of such Source Code Form, in each case
- including portions thereof.
-
-1.5. "Incompatible With Secondary Licenses"
- means
-
- (a) that the initial Contributor has attached the notice described
- in Exhibit B to the Covered Software; or
-
- (b) that the Covered Software was made available under the terms of
- version 1.1 or earlier of the License, but not also under the
- terms of a Secondary License.
-
-1.6. "Executable Form"
- means any form of the work other than Source Code Form.
-
-1.7. "Larger Work"
- means a work that combines Covered Software with other material, in
- a separate file or files, that is not Covered Software.
-
-1.8. "License"
- means this document.
-
-1.9. "Licensable"
- means having the right to grant, to the maximum extent possible,
- whether at the time of the initial grant or subsequently, any and
- all of the rights conveyed by this License.
-
-1.10. "Modifications"
- means any of the following:
-
- (a) any file in Source Code Form that results from an addition to,
- deletion from, or modification of the contents of Covered
- Software; or
-
- (b) any new file in Source Code Form that contains any Covered
- Software.
-
-1.11. "Patent Claims" of a Contributor
- means any patent claim(s), including without limitation, method,
- process, and apparatus claims, in any patent Licensable by such
- Contributor that would be infringed, but for the grant of the
- License, by the making, using, selling, offering for sale, having
- made, import, or transfer of either its Contributions or its
- Contributor Version.
-
-1.12. "Secondary License"
- means either the GNU General Public License, Version 2.0, the GNU
- Lesser General Public License, Version 2.1, the GNU Affero General
- Public License, Version 3.0, or any later versions of those
- licenses.
-
-1.13. "Source Code Form"
- means the form of the work preferred for making modifications.
-
-1.14. "You" (or "Your")
- means an individual or a legal entity exercising rights under this
- License. For legal entities, "You" includes any entity that
- controls, is controlled by, or is under common control with You. For
- purposes of this definition, "control" means (a) the power, direct
- or indirect, to cause the direction or management of such entity,
- whether by contract or otherwise, or (b) ownership of more than
- fifty percent (50%) of the outstanding shares or beneficial
- ownership of such entity.
-
-2. License Grants and Conditions
---------------------------------
-
-2.1. Grants
-
-Each Contributor hereby grants You a world-wide, royalty-free,
-non-exclusive license:
-
-(a) under intellectual property rights (other than patent or trademark)
- Licensable by such Contributor to use, reproduce, make available,
- modify, display, perform, distribute, and otherwise exploit its
- Contributions, either on an unmodified basis, with Modifications, or
- as part of a Larger Work; and
-
-(b) under Patent Claims of such Contributor to make, use, sell, offer
- for sale, have made, import, and otherwise transfer either its
- Contributions or its Contributor Version.
-
-2.2. Effective Date
-
-The licenses granted in Section 2.1 with respect to any Contribution
-become effective for each Contribution on the date the Contributor first
-distributes such Contribution.
-
-2.3. Limitations on Grant Scope
-
-The licenses granted in this Section 2 are the only rights granted under
-this License. No additional rights or licenses will be implied from the
-distribution or licensing of Covered Software under this License.
-Notwithstanding Section 2.1(b) above, no patent license is granted by a
-Contributor:
-
-(a) for any code that a Contributor has removed from Covered Software;
- or
-
-(b) for infringements caused by: (i) Your and any other third party's
- modifications of Covered Software, or (ii) the combination of its
- Contributions with other software (except as part of its Contributor
- Version); or
-
-(c) under Patent Claims infringed by Covered Software in the absence of
- its Contributions.
-
-This License does not grant any rights in the trademarks, service marks,
-or logos of any Contributor (except as may be necessary to comply with
-the notice requirements in Section 3.4).
-
-2.4. Subsequent Licenses
-
-No Contributor makes additional grants as a result of Your choice to
-distribute the Covered Software under a subsequent version of this
-License (see Section 10.2) or under the terms of a Secondary License (if
-permitted under the terms of Section 3.3).
-
-2.5. Representation
-
-Each Contributor represents that the Contributor believes its
-Contributions are its original creation(s) or it has sufficient rights
-to grant the rights to its Contributions conveyed by this License.
-
-2.6. Fair Use
-
-This License is not intended to limit any rights You have under
-applicable copyright doctrines of fair use, fair dealing, or other
-equivalents.
-
-2.7. Conditions
-
-Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
-in Section 2.1.
-
-3. Responsibilities
--------------------
-
-3.1. Distribution of Source Form
-
-All distribution of Covered Software in Source Code Form, including any
-Modifications that You create or to which You contribute, must be under
-the terms of this License. You must inform recipients that the Source
-Code Form of the Covered Software is governed by the terms of this
-License, and how they can obtain a copy of this License. You may not
-attempt to alter or restrict the recipients' rights in the Source Code
-Form.
-
-3.2. Distribution of Executable Form
-
-If You distribute Covered Software in Executable Form then:
-
-(a) such Covered Software must also be made available in Source Code
- Form, as described in Section 3.1, and You must inform recipients of
- the Executable Form how they can obtain a copy of such Source Code
- Form by reasonable means in a timely manner, at a charge no more
- than the cost of distribution to the recipient; and
-
-(b) You may distribute such Executable Form under the terms of this
- License, or sublicense it under different terms, provided that the
- license for the Executable Form does not attempt to limit or alter
- the recipients' rights in the Source Code Form under this License.
-
-3.3. Distribution of a Larger Work
-
-You may create and distribute a Larger Work under terms of Your choice,
-provided that You also comply with the requirements of this License for
-the Covered Software. If the Larger Work is a combination of Covered
-Software with a work governed by one or more Secondary Licenses, and the
-Covered Software is not Incompatible With Secondary Licenses, this
-License permits You to additionally distribute such Covered Software
-under the terms of such Secondary License(s), so that the recipient of
-the Larger Work may, at their option, further distribute the Covered
-Software under the terms of either this License or such Secondary
-License(s).
-
-3.4. Notices
-
-You may not remove or alter the substance of any license notices
-(including copyright notices, patent notices, disclaimers of warranty,
-or limitations of liability) contained within the Source Code Form of
-the Covered Software, except that You may alter any license notices to
-the extent required to remedy known factual inaccuracies.
-
-3.5. Application of Additional Terms
-
-You may choose to offer, and to charge a fee for, warranty, support,
-indemnity or liability obligations to one or more recipients of Covered
-Software. However, You may do so only on Your own behalf, and not on
-behalf of any Contributor. You must make it absolutely clear that any
-such warranty, support, indemnity, or liability obligation is offered by
-You alone, and You hereby agree to indemnify every Contributor for any
-liability incurred by such Contributor as a result of warranty, support,
-indemnity or liability terms You offer. You may include additional
-disclaimers of warranty and limitations of liability specific to any
-jurisdiction.
-
-4. Inability to Comply Due to Statute or Regulation
----------------------------------------------------
-
-If it is impossible for You to comply with any of the terms of this
-License with respect to some or all of the Covered Software due to
-statute, judicial order, or regulation then You must: (a) comply with
-the terms of this License to the maximum extent possible; and (b)
-describe the limitations and the code they affect. Such description must
-be placed in a text file included with all distributions of the Covered
-Software under this License. Except to the extent prohibited by statute
-or regulation, such description must be sufficiently detailed for a
-recipient of ordinary skill to be able to understand it.
-
-5. Termination
---------------
-
-5.1. The rights granted under this License will terminate automatically
-if You fail to comply with any of its terms. However, if You become
-compliant, then the rights granted under this License from a particular
-Contributor are reinstated (a) provisionally, unless and until such
-Contributor explicitly and finally terminates Your grants, and (b) on an
-ongoing basis, if such Contributor fails to notify You of the
-non-compliance by some reasonable means prior to 60 days after You have
-come back into compliance. Moreover, Your grants from a particular
-Contributor are reinstated on an ongoing basis if such Contributor
-notifies You of the non-compliance by some reasonable means, this is the
-first time You have received notice of non-compliance with this License
-from such Contributor, and You become compliant prior to 30 days after
-Your receipt of the notice.
-
-5.2. If You initiate litigation against any entity by asserting a patent
-infringement claim (excluding declaratory judgment actions,
-counter-claims, and cross-claims) alleging that a Contributor Version
-directly or indirectly infringes any patent, then the rights granted to
-You by any and all Contributors for the Covered Software under Section
-2.1 of this License shall terminate.
-
-5.3. In the event of termination under Sections 5.1 or 5.2 above, all
-end user license agreements (excluding distributors and resellers) which
-have been validly granted by You or Your distributors under this License
-prior to termination shall survive termination.
-
-************************************************************************
-* *
-* 6. Disclaimer of Warranty *
-* ------------------------- *
-* *
-* Covered Software is provided under this License on an "as is" *
-* basis, without warranty of any kind, either expressed, implied, or *
-* statutory, including, without limitation, warranties that the *
-* Covered Software is free of defects, merchantable, fit for a *
-* particular purpose or non-infringing. The entire risk as to the *
-* quality and performance of the Covered Software is with You. *
-* Should any Covered Software prove defective in any respect, You *
-* (not any Contributor) assume the cost of any necessary servicing, *
-* repair, or correction. This disclaimer of warranty constitutes an *
-* essential part of this License. No use of any Covered Software is *
-* authorized under this License except under this disclaimer. *
-* *
-************************************************************************
-
-************************************************************************
-* *
-* 7. Limitation of Liability *
-* -------------------------- *
-* *
-* Under no circumstances and under no legal theory, whether tort *
-* (including negligence), contract, or otherwise, shall any *
-* Contributor, or anyone who distributes Covered Software as *
-* permitted above, be liable to You for any direct, indirect, *
-* special, incidental, or consequential damages of any character *
-* including, without limitation, damages for lost profits, loss of *
-* goodwill, work stoppage, computer failure or malfunction, or any *
-* and all other commercial damages or losses, even if such party *
-* shall have been informed of the possibility of such damages. This *
-* limitation of liability shall not apply to liability for death or *
-* personal injury resulting from such party's negligence to the *
-* extent applicable law prohibits such limitation. Some *
-* jurisdictions do not allow the exclusion or limitation of *
-* incidental or consequential damages, so this exclusion and *
-* limitation may not apply to You. *
-* *
-************************************************************************
-
-8. Litigation
--------------
-
-Any litigation relating to this License may be brought only in the
-courts of a jurisdiction where the defendant maintains its principal
-place of business and such litigation shall be governed by laws of that
-jurisdiction, without reference to its conflict-of-law provisions.
-Nothing in this Section shall prevent a party's ability to bring
-cross-claims or counter-claims.
-
-9. Miscellaneous
-----------------
-
-This License represents the complete agreement concerning the subject
-matter hereof. If any provision of this License is held to be
-unenforceable, such provision shall be reformed only to the extent
-necessary to make it enforceable. Any law or regulation which provides
-that the language of a contract shall be construed against the drafter
-shall not be used to construe this License against a Contributor.
-
-10. Versions of the License
----------------------------
-
-10.1. New Versions
-
-Mozilla Foundation is the license steward. Except as provided in Section
-10.3, no one other than the license steward has the right to modify or
-publish new versions of this License. Each version will be given a
-distinguishing version number.
-
-10.2. Effect of New Versions
-
-You may distribute the Covered Software under the terms of the version
-of the License under which You originally received the Covered Software,
-or under the terms of any subsequent version published by the license
-steward.
-
-10.3. Modified Versions
-
-If you create software not governed by this License, and you want to
-create a new license for such software, you may create and use a
-modified version of this License if you rename the license and remove
-any references to the name of the license steward (except to note that
-such modified license differs from this License).
-
-10.4. Distributing Source Code Form that is Incompatible With Secondary
-Licenses
-
-If You choose to distribute Source Code Form that is Incompatible With
-Secondary Licenses under the terms of this version of the License, the
-notice described in Exhibit B of this License must be attached.
-
-Exhibit A - Source Code Form License Notice
--------------------------------------------
-
- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-If it is not possible or desirable to put the notice in a particular
-file, then You may include the notice in a location (such as a LICENSE
-file in a relevant directory) where a recipient would be likely to look
-for such a notice.
-
-You may add additional accurate notices of copyright ownership.
-
-Exhibit B - "Incompatible With Secondary Licenses" Notice
----------------------------------------------------------
-
- This Source Code Form is "Incompatible With Secondary Licenses", as
- defined by the Mozilla Public License, v. 2.0.
diff --git a/vendor/go.tmz.dev/musttag/README.md b/vendor/go.tmz.dev/musttag/README.md
deleted file mode 100644
index 621c7a9a3..000000000
--- a/vendor/go.tmz.dev/musttag/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# musttag
-
-[![checks](https://github.com/tmzane/musttag/actions/workflows/checks.yml/badge.svg)](https://github.com/tmzane/musttag/actions/workflows/checks.yml)
-[![pkg.go.dev](https://pkg.go.dev/badge/go.tmz.dev/musttag.svg)](https://pkg.go.dev/go.tmz.dev/musttag)
-[![goreportcard](https://goreportcard.com/badge/go.tmz.dev/musttag)](https://goreportcard.com/report/go.tmz.dev/musttag)
-[![codecov](https://codecov.io/gh/tmzane/musttag/branch/main/graph/badge.svg)](https://codecov.io/gh/tmzane/musttag)
-
-A Go linter that enforces field tags in (un)marshaled structs
-
-## 📌 About
-
-`musttag` checks that exported fields of a struct passed to a `Marshal`-like function are annotated with the relevant tag:
-
-```go
-// BAD:
-var user struct {
- Name string
-}
-data, err := json.Marshal(user)
-
-// GOOD:
-var user struct {
- Name string `json:"name"`
-}
-data, err := json.Marshal(user)
-```
-
-The rational from [Uber Style Guide][1]:
-
-> The serialized form of the structure is a contract between different systems.
-> Changes to the structure of the serialized form, including field names, break this contract.
-> Specifying field names inside tags makes the contract explicit,
-> and it guards against accidentally breaking the contract by refactoring or renaming fields.
-
-## 🚀 Features
-
-The following packages are supported out of the box:
-
-* [`encoding/json`][2]
-* [`encoding/xml`][3]
-* [`gopkg.in/yaml.v3`][4]
-* [`github.com/BurntSushi/toml`][5]
-* [`github.com/mitchellh/mapstructure`][6]
-* [`github.com/jmoiron/sqlx`][7]
-
-In addition, any [custom package](#custom-packages) can be added to the list.
-
-## 📋 Usage
-
-`musttag` is already integrated into `golangci-lint`, and this is the recommended way to use it.
-
-To enable the linter, add the following lines to `.golangci.yml`:
-
-```yaml
-linters:
- enable:
- - musttag
-```
-
-If you'd rather prefer to use `musttag` standalone, you can install it via `brew`...
-
-```shell
-brew install tmzane/tap/musttag
-```
-
-...or download a prebuilt binary from the [Releases][9] page.
-
-Then run it either directly or as a `go vet` tool:
-
-```shell
-go vet -vettool=$(which musttag) ./...
-```
-
-### Custom packages
-
-To enable reporting a custom function, you need to add its description to `.golangci.yml`.
-
-The following is an example of adding support for the `hclsimple.DecodeFile` function from [`github.com/hashicorp/hcl`][8]:
-
-```yaml
-linters-settings:
- musttag:
- functions:
- # The full name of the function, including the package.
- - name: github.com/hashicorp/hcl/v2/hclsimple.DecodeFile
- # The struct tag whose presence should be ensured.
- tag: hcl
- # The position of the argument to check.
- arg-pos: 2
-```
-
-The same can be done via the `-fn=name:tag:arg-pos` flag when using `musttag` standalone:
-
-```shell
-musttag -fn="github.com/hashicorp/hcl/v2/hclsimple.DecodeFile:hcl:2" ./...
-```
-
-[1]: https://github.com/uber-go/guide/blob/master/style.md#use-field-tags-in-marshaled-structs
-[2]: https://pkg.go.dev/encoding/json
-[3]: https://pkg.go.dev/encoding/xml
-[4]: https://github.com/go-yaml/yaml
-[5]: https://github.com/BurntSushi/toml
-[6]: https://github.com/mitchellh/mapstructure
-[7]: https://github.com/jmoiron/sqlx
-[8]: https://github.com/hashicorp/hcl
-[9]: https://github.com/tmzane/musttag/releases
diff --git a/vendor/go.tmz.dev/musttag/builtins.go b/vendor/go.tmz.dev/musttag/builtins.go
deleted file mode 100644
index 66914fa9e..000000000
--- a/vendor/go.tmz.dev/musttag/builtins.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package musttag
-
-// builtins is a set of functions supported out of the box.
-var builtins = []Func{
- // https://pkg.go.dev/encoding/json
- {Name: "encoding/json.Marshal", Tag: "json", ArgPos: 0},
- {Name: "encoding/json.MarshalIndent", Tag: "json", ArgPos: 0},
- {Name: "encoding/json.Unmarshal", Tag: "json", ArgPos: 1},
- {Name: "(*encoding/json.Encoder).Encode", Tag: "json", ArgPos: 0},
- {Name: "(*encoding/json.Decoder).Decode", Tag: "json", ArgPos: 0},
-
- // https://pkg.go.dev/encoding/xml
- {Name: "encoding/xml.Marshal", Tag: "xml", ArgPos: 0},
- {Name: "encoding/xml.MarshalIndent", Tag: "xml", ArgPos: 0},
- {Name: "encoding/xml.Unmarshal", Tag: "xml", ArgPos: 1},
- {Name: "(*encoding/xml.Encoder).Encode", Tag: "xml", ArgPos: 0},
- {Name: "(*encoding/xml.Decoder).Decode", Tag: "xml", ArgPos: 0},
- {Name: "(*encoding/xml.Encoder).EncodeElement", Tag: "xml", ArgPos: 0},
- {Name: "(*encoding/xml.Decoder).DecodeElement", Tag: "xml", ArgPos: 0},
-
- // https://github.com/go-yaml/yaml
- {Name: "gopkg.in/yaml.v3.Marshal", Tag: "yaml", ArgPos: 0},
- {Name: "gopkg.in/yaml.v3.Unmarshal", Tag: "yaml", ArgPos: 1},
- {Name: "(*gopkg.in/yaml.v3.Encoder).Encode", Tag: "yaml", ArgPos: 0},
- {Name: "(*gopkg.in/yaml.v3.Decoder).Decode", Tag: "yaml", ArgPos: 0},
-
- // https://github.com/BurntSushi/toml
- {Name: "github.com/BurntSushi/toml.Unmarshal", Tag: "toml", ArgPos: 1},
- {Name: "github.com/BurntSushi/toml.Decode", Tag: "toml", ArgPos: 1},
- {Name: "github.com/BurntSushi/toml.DecodeFS", Tag: "toml", ArgPos: 2},
- {Name: "github.com/BurntSushi/toml.DecodeFile", Tag: "toml", ArgPos: 1},
- {Name: "(*github.com/BurntSushi/toml.Encoder).Encode", Tag: "toml", ArgPos: 0},
- {Name: "(*github.com/BurntSushi/toml.Decoder).Decode", Tag: "toml", ArgPos: 0},
-
- // https://github.com/mitchellh/mapstructure
- {Name: "github.com/mitchellh/mapstructure.Decode", Tag: "mapstructure", ArgPos: 1},
- {Name: "github.com/mitchellh/mapstructure.DecodeMetadata", Tag: "mapstructure", ArgPos: 1},
- {Name: "github.com/mitchellh/mapstructure.WeakDecode", Tag: "mapstructure", ArgPos: 1},
- {Name: "github.com/mitchellh/mapstructure.WeakDecodeMetadata", Tag: "mapstructure", ArgPos: 1},
-
- // https://github.com/jmoiron/sqlx
- {Name: "github.com/jmoiron/sqlx.Get", Tag: "db", ArgPos: 1},
- {Name: "github.com/jmoiron/sqlx.GetContext", Tag: "db", ArgPos: 2},
- {Name: "github.com/jmoiron/sqlx.Select", Tag: "db", ArgPos: 1},
- {Name: "github.com/jmoiron/sqlx.SelectContext", Tag: "db", ArgPos: 2},
- {Name: "github.com/jmoiron/sqlx.StructScan", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Conn).GetContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Conn).SelectContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.DB).Get", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.DB).GetContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.DB).Select", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.DB).SelectContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.NamedStmt).Get", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.NamedStmt).GetContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.NamedStmt).Select", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.NamedStmt).SelectContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Row).StructScan", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Rows).StructScan", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Stmt).Get", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Stmt).GetContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Stmt).Select", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Stmt).SelectContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Tx).Get", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Tx).GetContext", Tag: "db", ArgPos: 1},
- {Name: "(*github.com/jmoiron/sqlx.Tx).Select", Tag: "db", ArgPos: 0},
- {Name: "(*github.com/jmoiron/sqlx.Tx).SelectContext", Tag: "db", ArgPos: 1},
-}
diff --git a/vendor/go.tmz.dev/musttag/musttag.go b/vendor/go.tmz.dev/musttag/musttag.go
deleted file mode 100644
index 7f4e05e75..000000000
--- a/vendor/go.tmz.dev/musttag/musttag.go
+++ /dev/null
@@ -1,259 +0,0 @@
-// Package musttag implements the musttag analyzer.
-package musttag
-
-import (
- "flag"
- "fmt"
- "go/ast"
- "go/token"
- "go/types"
- "path"
- "reflect"
- "regexp"
- "strconv"
- "strings"
-
- "golang.org/x/tools/go/analysis"
- "golang.org/x/tools/go/analysis/passes/inspect"
- "golang.org/x/tools/go/ast/inspector"
- "golang.org/x/tools/go/types/typeutil"
-)
-
-// Func describes a function call to look for, e.g. json.Marshal.
-type Func struct {
- Name string // Name is the full name of the function, including the package.
- Tag string // Tag is the struct tag whose presence should be ensured.
- ArgPos int // ArgPos is the position of the argument to check.
-}
-
-func (fn Func) shortName() string {
- name := strings.NewReplacer("*", "", "(", "", ")", "").Replace(fn.Name)
- return path.Base(name)
-}
-
-// New creates a new musttag analyzer.
-// To report a custom function provide its description via Func,
-// it will be added to the builtin ones.
-func New(funcs ...Func) *analysis.Analyzer {
- var flagFuncs []Func
- return &analysis.Analyzer{
- Name: "musttag",
- Doc: "enforce field tags in (un)marshaled structs",
- Flags: flags(&flagFuncs),
- Requires: []*analysis.Analyzer{inspect.Analyzer},
- Run: func(pass *analysis.Pass) (any, error) {
- l := len(builtins) + len(funcs) + len(flagFuncs)
- f := make(map[string]Func, l)
-
- toMap := func(slice []Func) {
- for _, fn := range slice {
- f[fn.Name] = fn
- }
- }
- toMap(builtins)
- toMap(funcs)
- toMap(flagFuncs)
-
- mainModule, err := getMainModule()
- if err != nil {
- return nil, err
- }
-
- return run(pass, mainModule, f)
- },
- }
-}
-
-// flags creates a flag set for the analyzer.
-// The funcs slice will be filled with custom functions passed via CLI flags.
-func flags(funcs *[]Func) flag.FlagSet {
- fs := flag.NewFlagSet("musttag", flag.ContinueOnError)
- fs.Func("fn", "report custom function (name:tag:argpos)", func(s string) error {
- parts := strings.Split(s, ":")
- if len(parts) != 3 || parts[0] == "" || parts[1] == "" {
- return strconv.ErrSyntax
- }
- pos, err := strconv.Atoi(parts[2])
- if err != nil {
- return err
- }
- *funcs = append(*funcs, Func{
- Name: parts[0],
- Tag: parts[1],
- ArgPos: pos,
- })
- return nil
- })
- return *fs
-}
-
-// for tests only.
-var report = func(pass *analysis.Pass, st *structType, fn Func, fnPos token.Position) {
- const format = "`%s` should be annotated with the `%s` tag as it is passed to `%s` at %s"
- pass.Reportf(st.Pos, format, st.Name, fn.Tag, fn.shortName(), fnPos)
-}
-
-var cleanFullName = regexp.MustCompile(`([^*/(]+/vendor/)`)
-
-// run starts the analysis.
-func run(pass *analysis.Pass, mainModule string, funcs map[string]Func) (any, error) {
- var err error
-
- walk := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
- filter := []ast.Node{(*ast.CallExpr)(nil)}
-
- walk.Preorder(filter, func(n ast.Node) {
- if err != nil {
- return // there is already an error.
- }
-
- call, ok := n.(*ast.CallExpr)
- if !ok {
- return // not a function call.
- }
-
- callee := typeutil.StaticCallee(pass.TypesInfo, call)
- if callee == nil {
- return // not a static call.
- }
-
- name := cleanFullName.ReplaceAllString(callee.FullName(), "")
- fn, ok := funcs[name]
- if !ok {
- return // the function is not supported.
- }
-
- if len(call.Args) <= fn.ArgPos {
- err = fmt.Errorf("Func.ArgPos cannot be %d: %s accepts only %d argument(s)", fn.ArgPos, fn.Name, len(call.Args))
- return
- }
-
- arg := call.Args[fn.ArgPos]
- if unary, ok := arg.(*ast.UnaryExpr); ok {
- arg = unary.X // e.g. json.Marshal(&foo)
- }
-
- initialPos := token.NoPos
- switch arg := arg.(type) {
- case *ast.Ident: // e.g. json.Marshal(foo)
- if arg.Obj == nil {
- return // e.g. json.Marshal(nil)
- }
- initialPos = arg.Obj.Pos()
- case *ast.CompositeLit: // e.g. json.Marshal(struct{}{})
- initialPos = arg.Pos()
- }
-
- checker := checker{
- mainModule: mainModule,
- seenTypes: make(map[string]struct{}),
- }
-
- t := pass.TypesInfo.TypeOf(arg)
- st, ok := checker.parseStructType(t, initialPos)
- if !ok {
- return // not a struct argument.
- }
-
- result, ok := checker.checkStructType(st, fn.Tag)
- if ok {
- return // nothing to report.
- }
-
- p := pass.Fset.Position(call.Pos())
- report(pass, result, fn, p)
- })
-
- return nil, err
-}
-
-// structType is an extension for types.Struct.
-// The content of the fields depends on whether the type is named or not.
-type structType struct {
- *types.Struct
- Name string // for types.Named: the type's name; for anonymous: a placeholder string.
- Pos token.Pos // for types.Named: the type's position; for anonymous: the corresponding identifier's position.
-}
-
-// checker parses and checks struct types.
-type checker struct {
- mainModule string
- seenTypes map[string]struct{} // prevent panic on recursive types; see issue #16.
-}
-
-// parseStructType parses the given types.Type, returning the underlying struct type.
-func (c *checker) parseStructType(t types.Type, pos token.Pos) (*structType, bool) {
- for {
- // unwrap pointers (if any) first.
- ptr, ok := t.(*types.Pointer)
- if !ok {
- break
- }
- t = ptr.Elem()
- }
-
- switch t := t.(type) {
- case *types.Named: // a struct of the named type.
- pkg := t.Obj().Pkg() // may be nil; see issue #38.
- if pkg == nil {
- return nil, false
- }
-
- if !strings.HasPrefix(pkg.Path(), c.mainModule) {
- return nil, false
- }
-
- s, ok := t.Underlying().(*types.Struct)
- if !ok {
- return nil, false
- }
-
- return &structType{
- Struct: s,
- Pos: t.Obj().Pos(),
- Name: t.Obj().Name(),
- }, true
-
- case *types.Struct: // an anonymous struct.
- return &structType{
- Struct: t,
- Pos: pos,
- Name: "anonymous struct",
- }, true
- }
-
- return nil, false
-}
-
-// checkStructType recursively checks whether the given struct type is annotated with the tag.
-// The result is the type of the first nested struct which fields are not properly annotated.
-func (c *checker) checkStructType(st *structType, tag string) (*structType, bool) {
- c.seenTypes[st.String()] = struct{}{}
-
- for i := 0; i < st.NumFields(); i++ {
- field := st.Field(i)
- if !field.Exported() {
- continue
- }
-
- if _, ok := reflect.StructTag(st.Tag(i)).Lookup(tag); !ok {
- // tag is not required for embedded types; see issue #12.
- if !field.Embedded() {
- return st, false
- }
- }
-
- nested, ok := c.parseStructType(field.Type(), st.Pos) // TODO: or field.Pos()?
- if !ok {
- continue
- }
- if _, ok := c.seenTypes[nested.String()]; ok {
- continue
- }
- if result, ok := c.checkStructType(nested, tag); !ok {
- return result, false
- }
- }
-
- return nil, true
-}
diff --git a/vendor/go.tmz.dev/musttag/utils.go b/vendor/go.tmz.dev/musttag/utils.go
deleted file mode 100644
index 673747f15..000000000
--- a/vendor/go.tmz.dev/musttag/utils.go
+++ /dev/null
@@ -1,57 +0,0 @@
-package musttag
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "io"
- "os"
- "os/exec"
- "strings"
-)
-
-var (
- getwd = os.Getwd
-
- commandOutput = func(name string, args ...string) (string, error) {
- output, err := exec.Command(name, args...).Output()
- return string(output), err
- }
-)
-
-func getMainModule() (string, error) {
- args := []string{"go", "list", "-m", "-json"}
-
- output, err := commandOutput(args[0], args[1:]...)
- if err != nil {
- return "", fmt.Errorf("running `%s`: %w", strings.Join(args, " "), err)
- }
-
- cwd, err := getwd()
- if err != nil {
- return "", fmt.Errorf("getting wd: %w", err)
- }
-
- decoder := json.NewDecoder(strings.NewReader(output))
-
- for {
- // multiple JSON objects will be returned when using Go workspaces; see #63 for details.
- var module struct {
- Path string `json:"Path"`
- Main bool `json:"Main"`
- Dir string `json:"Dir"`
- GoMod string `json:"GoMod"`
- GoVersion string `json:"GoVersion"`
- }
- if err := decoder.Decode(&module); err != nil {
- if errors.Is(err, io.EOF) {
- return "", fmt.Errorf("main module not found\n%s", output)
- }
- return "", fmt.Errorf("decoding json: %w\n%s", err, output)
- }
-
- if module.Main && strings.HasPrefix(cwd, module.Dir) {
- return module.Path, nil
- }
- }
-}