diff --git a/.circleci/config.yml b/.circleci/config.yml index 6e493ea8268..6d64652c445 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -72,7 +72,6 @@ workflows: requires: - build - docs-validation - - git-validation - integration - integration: name: integration-critest @@ -290,22 +289,6 @@ jobs: paths: - *gocache - git-validation: - executor: container - steps: - - checkout - - restore_cache: - keys: - - v1-git-validation-{{ checksum "go.sum" }} - - run: - name: git validation - command: make git-validation - - save_cache: - key: v1-git-validation-{{ checksum "go.sum" }} - paths: - - *gocache - - build/bin/git-validation - dependencies: executor: container steps: diff --git a/Makefile b/Makefile index 646a70ceda6..8041226e465 100644 --- a/Makefile +++ b/Makefile @@ -46,7 +46,6 @@ SOURCE_DATE_EPOCH ?= $(shell date +%s) GO_MD2MAN ?= ${BUILD_BIN_PATH}/go-md2man GINKGO := ${BUILD_BIN_PATH}/ginkgo MOCKGEN := ${BUILD_BIN_PATH}/mockgen -GIT_VALIDATION := ${BUILD_BIN_PATH}/git-validation GOLANGCI_LINT := ${BUILD_BIN_PATH}/golangci-lint GO_MOD_OUTDATED := ${BUILD_BIN_PATH}/go-mod-outdated RELEASE_NOTES := ${BUILD_BIN_PATH}/release-notes @@ -272,9 +271,6 @@ ${GINKGO}: ${MOCKGEN}: $(call go-build,./vendor/github.com/golang/mock/mockgen) -${GIT_VALIDATION}: - $(call go-build,./vendor/github.com/vbatts/git-validation) - ${RELEASE_NOTES}: $(call go-build,./vendor/k8s.io/release/cmd/release-notes) @@ -503,11 +499,6 @@ uninstall: rm -f $(OCIUMOUNTINSTALLDIR)/crio-umount.conf rm -f $(CRICTL_CONFIG_DIR)/crictl.yaml -git-validation: .gopathok ${GIT_VALIDATION} - GIT_CHECK_EXCLUDE="vendor" \ - ${GIT_VALIDATION} -v -run DCO,short-subject,dangling-whitespace \ - -range ${GIT_MERGE_BASE}..HEAD - docs-validation: $(GO_RUN) -tags "$(BUILDTAGS)" ./test/docs-validation diff --git a/go.mod b/go.mod index f6f29b9fac6..f33fd6de3bb 100644 --- a/go.mod +++ b/go.mod @@ -50,7 +50,6 @@ require ( github.com/soheilhy/cmux v0.1.4 github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2 github.com/urfave/cli/v2 v2.2.0 - github.com/vbatts/git-validation v1.1.0 github.com/vishvananda/netlink v1.1.0 golang.org/x/net v0.0.0-20200707034311-ab3426394381 golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 diff --git a/internal/tools/tools.go b/internal/tools/tools.go index e84a7d1e3cc..bcfafa5a519 100644 --- a/internal/tools/tools.go +++ b/internal/tools/tools.go @@ -7,7 +7,6 @@ import ( _ "github.com/golang/mock/mockgen" _ "github.com/onsi/ginkgo/ginkgo" _ "github.com/psampaz/go-mod-outdated" - _ "github.com/vbatts/git-validation" _ "k8s.io/release/cmd/release-notes" _ "mvdan.cc/sh/v3/cmd/shfmt" ) diff --git a/vendor/github.com/hashicorp/go-version/.travis.yml b/vendor/github.com/hashicorp/go-version/.travis.yml deleted file mode 100644 index 01c5dc219af..00000000000 --- a/vendor/github.com/hashicorp/go-version/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -language: go - -go: - - 1.2 - - 1.3 - - 1.4 - - 1.9 - - "1.10" - - 1.11 - - 1.12 - -script: - - go test diff --git a/vendor/github.com/hashicorp/go-version/LICENSE b/vendor/github.com/hashicorp/go-version/LICENSE deleted file mode 100644 index c33dcc7c928..00000000000 --- a/vendor/github.com/hashicorp/go-version/LICENSE +++ /dev/null @@ -1,354 +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/github.com/hashicorp/go-version/README.md b/vendor/github.com/hashicorp/go-version/README.md deleted file mode 100644 index 6f3a15ce772..00000000000 --- a/vendor/github.com/hashicorp/go-version/README.md +++ /dev/null @@ -1,65 +0,0 @@ -# Versioning Library for Go -[![Build Status](https://travis-ci.org/hashicorp/go-version.svg?branch=master)](https://travis-ci.org/hashicorp/go-version) - -go-version is a library for parsing versions and version constraints, -and verifying versions against a set of constraints. go-version -can sort a collection of versions properly, handles prerelease/beta -versions, can increment versions, etc. - -Versions used with go-version must follow [SemVer](http://semver.org/). - -## Installation and Usage - -Package documentation can be found on -[GoDoc](http://godoc.org/github.com/hashicorp/go-version). - -Installation can be done with a normal `go get`: - -``` -$ go get github.com/hashicorp/go-version -``` - -#### Version Parsing and Comparison - -```go -v1, err := version.NewVersion("1.2") -v2, err := version.NewVersion("1.5+metadata") - -// Comparison example. There is also GreaterThan, Equal, and just -// a simple Compare that returns an int allowing easy >=, <=, etc. -if v1.LessThan(v2) { - fmt.Printf("%s is less than %s", v1, v2) -} -``` - -#### Version Constraints - -```go -v1, err := version.NewVersion("1.2") - -// Constraints example. -constraints, err := version.NewConstraint(">= 1.0, < 1.4") -if constraints.Check(v1) { - fmt.Printf("%s satisfies constraints %s", v1, constraints) -} -``` - -#### Version Sorting - -```go -versionsRaw := []string{"1.1", "0.7.1", "1.4-beta", "1.4", "2"} -versions := make([]*version.Version, len(versionsRaw)) -for i, raw := range versionsRaw { - v, _ := version.NewVersion(raw) - versions[i] = v -} - -// After this, the versions are properly sorted -sort.Sort(version.Collection(versions)) -``` - -## Issues and Contributing - -If you find an issue with this library, please report an issue. If you'd -like, we welcome any contributions. Fork this library and submit a pull -request. diff --git a/vendor/github.com/hashicorp/go-version/constraint.go b/vendor/github.com/hashicorp/go-version/constraint.go deleted file mode 100644 index d055759611c..00000000000 --- a/vendor/github.com/hashicorp/go-version/constraint.go +++ /dev/null @@ -1,204 +0,0 @@ -package version - -import ( - "fmt" - "reflect" - "regexp" - "strings" -) - -// Constraint represents a single constraint for a version, such as -// ">= 1.0". -type Constraint struct { - f constraintFunc - check *Version - original string -} - -// Constraints is a slice of constraints. We make a custom type so that -// we can add methods to it. -type Constraints []*Constraint - -type constraintFunc func(v, c *Version) bool - -var constraintOperators map[string]constraintFunc - -var constraintRegexp *regexp.Regexp - -func init() { - constraintOperators = map[string]constraintFunc{ - "": constraintEqual, - "=": constraintEqual, - "!=": constraintNotEqual, - ">": constraintGreaterThan, - "<": constraintLessThan, - ">=": constraintGreaterThanEqual, - "<=": constraintLessThanEqual, - "~>": constraintPessimistic, - } - - ops := make([]string, 0, len(constraintOperators)) - for k := range constraintOperators { - ops = append(ops, regexp.QuoteMeta(k)) - } - - constraintRegexp = regexp.MustCompile(fmt.Sprintf( - `^\s*(%s)\s*(%s)\s*$`, - strings.Join(ops, "|"), - VersionRegexpRaw)) -} - -// NewConstraint will parse one or more constraints from the given -// constraint string. The string must be a comma-separated list of -// constraints. -func NewConstraint(v string) (Constraints, error) { - vs := strings.Split(v, ",") - result := make([]*Constraint, len(vs)) - for i, single := range vs { - c, err := parseSingle(single) - if err != nil { - return nil, err - } - - result[i] = c - } - - return Constraints(result), nil -} - -// Check tests if a version satisfies all the constraints. -func (cs Constraints) Check(v *Version) bool { - for _, c := range cs { - if !c.Check(v) { - return false - } - } - - return true -} - -// Returns the string format of the constraints -func (cs Constraints) String() string { - csStr := make([]string, len(cs)) - for i, c := range cs { - csStr[i] = c.String() - } - - return strings.Join(csStr, ",") -} - -// Check tests if a constraint is validated by the given version. -func (c *Constraint) Check(v *Version) bool { - return c.f(v, c.check) -} - -func (c *Constraint) String() string { - return c.original -} - -func parseSingle(v string) (*Constraint, error) { - matches := constraintRegexp.FindStringSubmatch(v) - if matches == nil { - return nil, fmt.Errorf("Malformed constraint: %s", v) - } - - check, err := NewVersion(matches[2]) - if err != nil { - return nil, err - } - - return &Constraint{ - f: constraintOperators[matches[1]], - check: check, - original: v, - }, nil -} - -func prereleaseCheck(v, c *Version) bool { - switch vPre, cPre := v.Prerelease() != "", c.Prerelease() != ""; { - case cPre && vPre: - // A constraint with a pre-release can only match a pre-release version - // with the same base segments. - return reflect.DeepEqual(c.Segments64(), v.Segments64()) - - case !cPre && vPre: - // A constraint without a pre-release can only match a version without a - // pre-release. - return false - - case cPre && !vPre: - // OK, except with the pessimistic operator - case !cPre && !vPre: - // OK - } - return true -} - -//------------------------------------------------------------------- -// Constraint functions -//------------------------------------------------------------------- - -func constraintEqual(v, c *Version) bool { - return v.Equal(c) -} - -func constraintNotEqual(v, c *Version) bool { - return !v.Equal(c) -} - -func constraintGreaterThan(v, c *Version) bool { - return prereleaseCheck(v, c) && v.Compare(c) == 1 -} - -func constraintLessThan(v, c *Version) bool { - return prereleaseCheck(v, c) && v.Compare(c) == -1 -} - -func constraintGreaterThanEqual(v, c *Version) bool { - return prereleaseCheck(v, c) && v.Compare(c) >= 0 -} - -func constraintLessThanEqual(v, c *Version) bool { - return prereleaseCheck(v, c) && v.Compare(c) <= 0 -} - -func constraintPessimistic(v, c *Version) bool { - // Using a pessimistic constraint with a pre-release, restricts versions to pre-releases - if !prereleaseCheck(v, c) || (c.Prerelease() != "" && v.Prerelease() == "") { - return false - } - - // If the version being checked is naturally less than the constraint, then there - // is no way for the version to be valid against the constraint - if v.LessThan(c) { - return false - } - // We'll use this more than once, so grab the length now so it's a little cleaner - // to write the later checks - cs := len(c.segments) - - // If the version being checked has less specificity than the constraint, then there - // is no way for the version to be valid against the constraint - if cs > len(v.segments) { - return false - } - - // Check the segments in the constraint against those in the version. If the version - // being checked, at any point, does not have the same values in each index of the - // constraints segments, then it cannot be valid against the constraint. - for i := 0; i < c.si-1; i++ { - if v.segments[i] != c.segments[i] { - return false - } - } - - // Check the last part of the segment in the constraint. If the version segment at - // this index is less than the constraints segment at this index, then it cannot - // be valid against the constraint - if c.segments[cs-1] > v.segments[cs-1] { - return false - } - - // If nothing has rejected the version by now, it's valid - return true -} diff --git a/vendor/github.com/hashicorp/go-version/go.mod b/vendor/github.com/hashicorp/go-version/go.mod deleted file mode 100644 index f5285555fa8..00000000000 --- a/vendor/github.com/hashicorp/go-version/go.mod +++ /dev/null @@ -1 +0,0 @@ -module github.com/hashicorp/go-version diff --git a/vendor/github.com/hashicorp/go-version/version.go b/vendor/github.com/hashicorp/go-version/version.go deleted file mode 100644 index 1032c5606c3..00000000000 --- a/vendor/github.com/hashicorp/go-version/version.go +++ /dev/null @@ -1,380 +0,0 @@ -package version - -import ( - "bytes" - "fmt" - "reflect" - "regexp" - "strconv" - "strings" -) - -// The compiled regular expression used to test the validity of a version. -var ( - versionRegexp *regexp.Regexp - semverRegexp *regexp.Regexp -) - -// The raw regular expression string used for testing the validity -// of a version. -const ( - VersionRegexpRaw string = `v?([0-9]+(\.[0-9]+)*?)` + - `(-([0-9]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)|(-?([A-Za-z\-~]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)))?` + - `(\+([0-9A-Za-z\-~]+(\.[0-9A-Za-z\-~]+)*))?` + - `?` - - // SemverRegexpRaw requires a separator between version and prerelease - SemverRegexpRaw string = `v?([0-9]+(\.[0-9]+)*?)` + - `(-([0-9]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)|(-([A-Za-z\-~]+[0-9A-Za-z\-~]*(\.[0-9A-Za-z\-~]+)*)))?` + - `(\+([0-9A-Za-z\-~]+(\.[0-9A-Za-z\-~]+)*))?` + - `?` -) - -// Version represents a single version. -type Version struct { - metadata string - pre string - segments []int64 - si int - original string -} - -func init() { - versionRegexp = regexp.MustCompile("^" + VersionRegexpRaw + "$") - semverRegexp = regexp.MustCompile("^" + SemverRegexpRaw + "$") -} - -// NewVersion parses the given version and returns a new -// Version. -func NewVersion(v string) (*Version, error) { - return newVersion(v, versionRegexp) -} - -// NewSemver parses the given version and returns a new -// Version that adheres strictly to SemVer specs -// https://semver.org/ -func NewSemver(v string) (*Version, error) { - return newVersion(v, semverRegexp) -} - -func newVersion(v string, pattern *regexp.Regexp) (*Version, error) { - matches := pattern.FindStringSubmatch(v) - if matches == nil { - return nil, fmt.Errorf("Malformed version: %s", v) - } - segmentsStr := strings.Split(matches[1], ".") - segments := make([]int64, len(segmentsStr)) - si := 0 - for i, str := range segmentsStr { - val, err := strconv.ParseInt(str, 10, 64) - if err != nil { - return nil, fmt.Errorf( - "Error parsing version: %s", err) - } - - segments[i] = int64(val) - si++ - } - - // Even though we could support more than three segments, if we - // got less than three, pad it with 0s. This is to cover the basic - // default usecase of semver, which is MAJOR.MINOR.PATCH at the minimum - for i := len(segments); i < 3; i++ { - segments = append(segments, 0) - } - - pre := matches[7] - if pre == "" { - pre = matches[4] - } - - return &Version{ - metadata: matches[10], - pre: pre, - segments: segments, - si: si, - original: v, - }, nil -} - -// Must is a helper that wraps a call to a function returning (*Version, error) -// and panics if error is non-nil. -func Must(v *Version, err error) *Version { - if err != nil { - panic(err) - } - - return v -} - -// Compare compares this version to another version. This -// returns -1, 0, or 1 if this version is smaller, equal, -// or larger than the other version, respectively. -// -// If you want boolean results, use the LessThan, Equal, -// GreaterThan, GreaterThanOrEqual or LessThanOrEqual methods. -func (v *Version) Compare(other *Version) int { - // A quick, efficient equality check - if v.String() == other.String() { - return 0 - } - - segmentsSelf := v.Segments64() - segmentsOther := other.Segments64() - - // If the segments are the same, we must compare on prerelease info - if reflect.DeepEqual(segmentsSelf, segmentsOther) { - preSelf := v.Prerelease() - preOther := other.Prerelease() - if preSelf == "" && preOther == "" { - return 0 - } - if preSelf == "" { - return 1 - } - if preOther == "" { - return -1 - } - - return comparePrereleases(preSelf, preOther) - } - - // Get the highest specificity (hS), or if they're equal, just use segmentSelf length - lenSelf := len(segmentsSelf) - lenOther := len(segmentsOther) - hS := lenSelf - if lenSelf < lenOther { - hS = lenOther - } - // Compare the segments - // Because a constraint could have more/less specificity than the version it's - // checking, we need to account for a lopsided or jagged comparison - for i := 0; i < hS; i++ { - if i > lenSelf-1 { - // This means Self had the lower specificity - // Check to see if the remaining segments in Other are all zeros - if !allZero(segmentsOther[i:]) { - // if not, it means that Other has to be greater than Self - return -1 - } - break - } else if i > lenOther-1 { - // this means Other had the lower specificity - // Check to see if the remaining segments in Self are all zeros - - if !allZero(segmentsSelf[i:]) { - //if not, it means that Self has to be greater than Other - return 1 - } - break - } - lhs := segmentsSelf[i] - rhs := segmentsOther[i] - if lhs == rhs { - continue - } else if lhs < rhs { - return -1 - } - // Otherwis, rhs was > lhs, they're not equal - return 1 - } - - // if we got this far, they're equal - return 0 -} - -func allZero(segs []int64) bool { - for _, s := range segs { - if s != 0 { - return false - } - } - return true -} - -func comparePart(preSelf string, preOther string) int { - if preSelf == preOther { - return 0 - } - - var selfInt int64 - selfNumeric := true - selfInt, err := strconv.ParseInt(preSelf, 10, 64) - if err != nil { - selfNumeric = false - } - - var otherInt int64 - otherNumeric := true - otherInt, err = strconv.ParseInt(preOther, 10, 64) - if err != nil { - otherNumeric = false - } - - // if a part is empty, we use the other to decide - if preSelf == "" { - if otherNumeric { - return -1 - } - return 1 - } - - if preOther == "" { - if selfNumeric { - return 1 - } - return -1 - } - - if selfNumeric && !otherNumeric { - return -1 - } else if !selfNumeric && otherNumeric { - return 1 - } else if !selfNumeric && !otherNumeric && preSelf > preOther { - return 1 - } else if selfInt > otherInt { - return 1 - } - - return -1 -} - -func comparePrereleases(v string, other string) int { - // the same pre release! - if v == other { - return 0 - } - - // split both pre releases for analyse their parts - selfPreReleaseMeta := strings.Split(v, ".") - otherPreReleaseMeta := strings.Split(other, ".") - - selfPreReleaseLen := len(selfPreReleaseMeta) - otherPreReleaseLen := len(otherPreReleaseMeta) - - biggestLen := otherPreReleaseLen - if selfPreReleaseLen > otherPreReleaseLen { - biggestLen = selfPreReleaseLen - } - - // loop for parts to find the first difference - for i := 0; i < biggestLen; i = i + 1 { - partSelfPre := "" - if i < selfPreReleaseLen { - partSelfPre = selfPreReleaseMeta[i] - } - - partOtherPre := "" - if i < otherPreReleaseLen { - partOtherPre = otherPreReleaseMeta[i] - } - - compare := comparePart(partSelfPre, partOtherPre) - // if parts are equals, continue the loop - if compare != 0 { - return compare - } - } - - return 0 -} - -// Equal tests if two versions are equal. -func (v *Version) Equal(o *Version) bool { - return v.Compare(o) == 0 -} - -// GreaterThan tests if this version is greater than another version. -func (v *Version) GreaterThan(o *Version) bool { - return v.Compare(o) > 0 -} - -// GreaterThanOrEqualTo tests if this version is greater than or equal to another version. -func (v *Version) GreaterThanOrEqual(o *Version) bool { - return v.Compare(o) >= 0 -} - -// LessThan tests if this version is less than another version. -func (v *Version) LessThan(o *Version) bool { - return v.Compare(o) < 0 -} - -// LessThanOrEqualTo tests if this version is less than or equal to another version. -func (v *Version) LessThanOrEqual(o *Version) bool { - return v.Compare(o) <= 0 -} - -// Metadata returns any metadata that was part of the version -// string. -// -// Metadata is anything that comes after the "+" in the version. -// For example, with "1.2.3+beta", the metadata is "beta". -func (v *Version) Metadata() string { - return v.metadata -} - -// Prerelease returns any prerelease data that is part of the version, -// or blank if there is no prerelease data. -// -// Prerelease information is anything that comes after the "-" in the -// version (but before any metadata). For example, with "1.2.3-beta", -// the prerelease information is "beta". -func (v *Version) Prerelease() string { - return v.pre -} - -// Segments returns the numeric segments of the version as a slice of ints. -// -// This excludes any metadata or pre-release information. For example, -// for a version "1.2.3-beta", segments will return a slice of -// 1, 2, 3. -func (v *Version) Segments() []int { - segmentSlice := make([]int, len(v.segments)) - for i, v := range v.segments { - segmentSlice[i] = int(v) - } - return segmentSlice -} - -// Segments64 returns the numeric segments of the version as a slice of int64s. -// -// This excludes any metadata or pre-release information. For example, -// for a version "1.2.3-beta", segments will return a slice of -// 1, 2, 3. -func (v *Version) Segments64() []int64 { - result := make([]int64, len(v.segments)) - copy(result, v.segments) - return result -} - -// String returns the full version string included pre-release -// and metadata information. -// -// This value is rebuilt according to the parsed segments and other -// information. Therefore, ambiguities in the version string such as -// prefixed zeroes (1.04.0 => 1.4.0), `v` prefix (v1.0.0 => 1.0.0), and -// missing parts (1.0 => 1.0.0) will be made into a canonicalized form -// as shown in the parenthesized examples. -func (v *Version) String() string { - var buf bytes.Buffer - fmtParts := make([]string, len(v.segments)) - for i, s := range v.segments { - // We can ignore err here since we've pre-parsed the values in segments - str := strconv.FormatInt(s, 10) - fmtParts[i] = str - } - fmt.Fprintf(&buf, strings.Join(fmtParts, ".")) - if v.pre != "" { - fmt.Fprintf(&buf, "-%s", v.pre) - } - if v.metadata != "" { - fmt.Fprintf(&buf, "+%s", v.metadata) - } - - return buf.String() -} - -// Original returns the original parsed version as-is, including any -// potential whitespace, `v` prefix, etc. -func (v *Version) Original() string { - return v.original -} diff --git a/vendor/github.com/hashicorp/go-version/version_collection.go b/vendor/github.com/hashicorp/go-version/version_collection.go deleted file mode 100644 index cc888d43e6b..00000000000 --- a/vendor/github.com/hashicorp/go-version/version_collection.go +++ /dev/null @@ -1,17 +0,0 @@ -package version - -// Collection is a type that implements the sort.Interface interface -// so that versions can be sorted. -type Collection []*Version - -func (v Collection) Len() int { - return len(v) -} - -func (v Collection) Less(i, j int) bool { - return v[i].LessThan(v[j]) -} - -func (v Collection) Swap(i, j int) { - v[i], v[j] = v[j], v[i] -} diff --git a/vendor/github.com/vbatts/git-validation/.gitignore b/vendor/github.com/vbatts/git-validation/.gitignore deleted file mode 100644 index 265db6acbcb..00000000000 --- a/vendor/github.com/vbatts/git-validation/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -*~ -git-validation diff --git a/vendor/github.com/vbatts/git-validation/.travis.yml b/vendor/github.com/vbatts/git-validation/.travis.yml deleted file mode 100644 index 27cd83c4756..00000000000 --- a/vendor/github.com/vbatts/git-validation/.travis.yml +++ /dev/null @@ -1,37 +0,0 @@ -language: go - -go_import_path: github.com/vbatts/git-validation - -go: - - "tip" - - "1.x" - - "1.11.x" - - "1.10.x" - - "1.9.x" - -env: - -matrix: - -sudo: false - -install: true - -notifications: - email: - on_success: change - on_failure: always - -before_script: - - env - -before_install: - - go get ./... - - if [[ "$(go version |awk '{ print $3 }')" =~ ^go1\.11\. ]] ; then go get -u golang.org/x/lint/golint ; fi - -script: - - if [[ "$(go version |awk '{ print $3 }')" =~ ^go1\.11\. ]] ; then golint -set_exit_status ./... ; fi - - go vet -x ./... - - go build . - - go test -v ./... - - ./git-validation -run DCO,short-subject,dangling-whitespace -v diff --git a/vendor/github.com/vbatts/git-validation/LICENSE b/vendor/github.com/vbatts/git-validation/LICENSE deleted file mode 100644 index 8efd59c7174..00000000000 --- a/vendor/github.com/vbatts/git-validation/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2015 Vincent Batts - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/vendor/github.com/vbatts/git-validation/README.md b/vendor/github.com/vbatts/git-validation/README.md deleted file mode 100644 index 354276e02ff..00000000000 --- a/vendor/github.com/vbatts/git-validation/README.md +++ /dev/null @@ -1,106 +0,0 @@ -# git-validation - -A way to do validation on git commits. -[![Build Status](https://travis-ci.org/vbatts/git-validation.svg?branch=master)](https://travis-ci.org/vbatts/git-validation) - -## install - -```console -vbatts@valse ~ (master) $ go get -u github.com/vbatts/git-validation -``` - -## usage - -The flags -```console -vbatts@valse ~/src/vb/git-validation (master *) $ git-validation -h -Usage of git-validation: - -D debug output - -d string - git directory to validate from (default ".") - -list-rules - list the rules registered - -range string - use this commit range instead - -run string - comma delimited list of rules to run. Defaults to all. - -v verbose -``` - -The entire default rule set is run by default: -```console -vbatts@valse ~/src/vb/git-validation (master) $ git-validation -list-rules -"dangling-whitespace" -- checking the presence of dangling whitespaces on line endings -"DCO" -- makes sure the commits are signed -"message_regexp" -- checks the commit message for a user provided regular expression -"short-subject" -- commit subjects are strictly less than 90 (github ellipsis length) -``` - -Or, specify comma-delimited rules to run: -```console -vbatts@valse ~/src/vb/git-validation (master) $ git-validation -run DCO,short-subject - * b243ca4 "README: adding install and usage" ... PASS - * d614ccf "*: run tests in a runner" ... PASS - * b9413c6 "shortsubject: add a subject length check" ... PASS - * 5e74abd "*: comments and golint" ... PASS - * 07a982f "git: add verbose output of the commands run" ... PASS - * 03bda4b "main: add filtering of rules to run" ... PASS - * c10ba9c "Initial commit" ... PASS -``` - -Verbosity shows each rule's output: -```console -vbatts@valse ~/src/vb/git-validation (master) $ git-validation -v - * d614ccf "*: run tests in a runner" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* - * b9413c6 "shortsubject: add a subject length check" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* - * 5e74abd "*: comments and golint" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* - * 07a982f "git: add verbose output of the commands run" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* - * 03bda4b "main: add filtering of rules to run" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* - * c10ba9c "Initial commit" ... PASS - - PASS - has a valid DCO - - PASS - commit subject is 72 characters or less! *yay* -``` - -Here's a failure: -```console -vbatts@valse ~/src/vb/git-validation (master) $ git-validation - * 49f51a8 "README: adding install and usage" ... FAIL - - FAIL - does not have a valid DCO - * d614ccf "*: run tests in a runner" ... PASS - * b9413c6 "shortsubject: add a subject length check" ... PASS - * 5e74abd "*: comments and golint" ... PASS - * 07a982f "git: add verbose output of the commands run" ... PASS - * 03bda4b "main: add filtering of rules to run" ... PASS - * c10ba9c "Initial commit" ... PASS -1 issues to fix -vbatts@valse ~/src/vb/git-validation (master) $ echo $? -1 -``` - -Excluding paths that are out of the scope of your project: -```console -vbatts@valse ~/src/vb/git-validation (master) $ GIT_CHECK_EXCLUDE="./vendor:./git/testdata" git-validation -q -run dangling-whitespace -... -``` -using the `GIT_CHECK_EXCLUDE` environment variable. Multiple paths should be separated by colon(`:`) - - -## Rules - -Default rules are added by registering them to the `validate` package. -Usually by putting them in their own package. -See [`./rules/`](./rules/). -Feel free to contribute more. - -Otherwise, by using `validate` package API directly, rules can be handed directly to the `validate.Runner`. - diff --git a/vendor/github.com/vbatts/git-validation/git/commits.go b/vendor/github.com/vbatts/git-validation/git/commits.go deleted file mode 100644 index 52af99789ef..00000000000 --- a/vendor/github.com/vbatts/git-validation/git/commits.go +++ /dev/null @@ -1,192 +0,0 @@ -package git - -import ( - "fmt" - "os" - "os/exec" - "strings" - - version "github.com/hashicorp/go-version" - "github.com/sirupsen/logrus" -) - -// Commits returns a set of commits. -// If commitrange is a git still range 12345...54321, then it will be isolated set of commits. -// If commitrange is a single commit, all ancestor commits up through the hash provided. -// If commitrange is an empty commit range, then nil is returned. -func Commits(commitrange string) ([]CommitEntry, error) { - cmdArgs := []string{"git", "--no-pager", "log", `--pretty=format:%H`, commitrange} - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmdArgs, " ")) - } - output, err := exec.Command(cmdArgs[0], cmdArgs[1:]...).Output() - if err != nil { - logrus.Errorf("mm[git] cmd: %q", strings.Join(cmdArgs, " ")) - return nil, err - } - if len(output) == 0 { - return nil, nil - } - commitHashes := strings.Split(strings.TrimSpace(string(output)), "\n") - commits := make([]CommitEntry, len(commitHashes)) - for i, commitHash := range commitHashes { - c, err := LogCommit(commitHash) - if err != nil { - return commits, err - } - commits[i] = *c - } - return commits, nil -} - -// FieldNames are for the formating and rendering of the CommitEntry structs. -// Keys here are from git log pretty format "format:..." -var FieldNames = map[string]string{ - "%h": "abbreviated_commit", - "%p": "abbreviated_parent", - "%t": "abbreviated_tree", - "%aD": "author_date", - "%aE": "author_email", - "%aN": "author_name", - "%b": "body", - "%H": "commit", - "%N": "commit_notes", - "%cD": "committer_date", - "%cE": "committer_email", - "%cN": "committer_name", - "%e": "encoding", - "%P": "parent", - "%D": "refs", - "%f": "sanitized_subject_line", - "%GS": "signer", - "%GK": "signer_key", - "%s": "subject", - "%G?": "verification_flag", -} - -func gitVersion() (string, error) { - cmd := exec.Command("git", "version") - cmd.Stderr = os.Stderr - buf, err := cmd.Output() - if err != nil { - return "", err - } - return strings.Fields(string(buf))[2], nil -} - -// https://github.com/vbatts/git-validation/issues/37 -var versionWithExcludes = "1.9.5" - -func gitVersionNewerThan(otherV string) (bool, error) { - gv, err := gitVersion() - if err != nil { - return false, err - } - v1, err := version.NewVersion(gv) - if err != nil { - return false, err - } - v2, err := version.NewVersion(otherV) - if err != nil { - return false, err - } - return v2.Equal(v1) || v2.LessThan(v1), nil -} - -// Check warns if changes introduce whitespace errors. -// Returns non-zero if any issues are found. -func Check(commit string) ([]byte, error) { - args := []string{ - "--no-pager", "log", "--check", - fmt.Sprintf("%s^..%s", commit, commit), - } - if excludeEnvList := os.Getenv("GIT_CHECK_EXCLUDE"); excludeEnvList != "" { - gitNewEnough, err := gitVersionNewerThan(versionWithExcludes) - if err != nil { - return nil, err - } - if gitNewEnough { - excludeList := strings.Split(excludeEnvList, ":") - for _, exclude := range excludeList { - if exclude == "" { - continue - } - args = append(args, "--", ".", fmt.Sprintf(":(exclude)%s", exclude)) - } - } - } - cmd := exec.Command("git", args...) - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmd.Args, " ")) - } - cmd.Stderr = os.Stderr - return cmd.Output() -} - -// Show returns the diff of a commit. -// -// NOTE: This could be expensive for very large commits. -func Show(commit string) ([]byte, error) { - cmd := exec.Command("git", "--no-pager", "show", commit) - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmd.Args, " ")) - } - cmd.Stderr = os.Stderr - return cmd.Output() -} - -// CommitEntry represents a single commit's information from `git`. -// See also FieldNames -type CommitEntry map[string]string - -// LogCommit assembles the full information on a commit from its commit hash -func LogCommit(commit string) (*CommitEntry, error) { - c := CommitEntry{} - for k, v := range FieldNames { - cmd := exec.Command("git", "--no-pager", "log", "-1", `--pretty=format:`+k+``, commit) - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmd.Args, " ")) - } - cmd.Stderr = os.Stderr - out, err := cmd.Output() - if err != nil { - logrus.Errorf("[git] cmd: %q", strings.Join(cmd.Args, " ")) - return nil, err - } - c[v] = strings.TrimSpace(string(out)) - } - - return &c, nil -} - -func debug() bool { - return len(os.Getenv("DEBUG")) > 0 -} - -// FetchHeadCommit returns the hash of FETCH_HEAD -func FetchHeadCommit() (string, error) { - cmdArgs := []string{"git", "--no-pager", "rev-parse", "--verify", "FETCH_HEAD"} - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmdArgs, " ")) - } - output, err := exec.Command(cmdArgs[0], cmdArgs[1:]...).Output() - if err != nil { - logrus.Errorf("[git] cmd: %q", strings.Join(cmdArgs, " ")) - return "", err - } - return strings.TrimSpace(string(output)), nil -} - -// HeadCommit returns the hash of HEAD -func HeadCommit() (string, error) { - cmdArgs := []string{"git", "--no-pager", "rev-parse", "--verify", "HEAD"} - if debug() { - logrus.Infof("[git] cmd: %q", strings.Join(cmdArgs, " ")) - } - output, err := exec.Command(cmdArgs[0], cmdArgs[1:]...).Output() - if err != nil { - logrus.Errorf("[git] cmd: %q", strings.Join(cmdArgs, " ")) - return "", err - } - return strings.TrimSpace(string(output)), nil -} diff --git a/vendor/github.com/vbatts/git-validation/go.mod b/vendor/github.com/vbatts/git-validation/go.mod deleted file mode 100644 index 14b7069e795..00000000000 --- a/vendor/github.com/vbatts/git-validation/go.mod +++ /dev/null @@ -1,8 +0,0 @@ -module github.com/vbatts/git-validation - -go 1.12 - -require ( - github.com/hashicorp/go-version v1.2.0 - github.com/sirupsen/logrus v1.4.1 -) diff --git a/vendor/github.com/vbatts/git-validation/go.sum b/vendor/github.com/vbatts/git-validation/go.sum deleted file mode 100644 index 265941fe3f0..00000000000 --- a/vendor/github.com/vbatts/git-validation/go.sum +++ /dev/null @@ -1,15 +0,0 @@ -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k= -github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33 h1:I6FyU15t786LL7oL/hn43zqTuEGr4PN7F4XJ1p4E3Y8= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= diff --git a/vendor/github.com/vbatts/git-validation/main.go b/vendor/github.com/vbatts/git-validation/main.go deleted file mode 100644 index cd5f271a432..00000000000 --- a/vendor/github.com/vbatts/git-validation/main.go +++ /dev/null @@ -1,92 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "log" - "os" - "strings" - - _ "github.com/vbatts/git-validation/rules/danglingwhitespace" - _ "github.com/vbatts/git-validation/rules/dco" - _ "github.com/vbatts/git-validation/rules/messageregexp" - _ "github.com/vbatts/git-validation/rules/shortsubject" - "github.com/vbatts/git-validation/validate" -) - -var ( - flCommitRange = flag.String("range", "", "use this commit range instead (implies -no-travis)") - flListRules = flag.Bool("list-rules", false, "list the rules registered") - flRun = flag.String("run", "", "comma delimited list of rules to run. Defaults to all.") - flVerbose = flag.Bool("v", false, "verbose") - flDebug = flag.Bool("D", false, "debug output") - flQuiet = flag.Bool("q", false, "less output") - flDir = flag.String("d", ".", "git directory to validate from") - flNoTravis = flag.Bool("no-travis", false, "disables travis environment checks (when env TRAVIS=true is set)") - flTravisPROnly = flag.Bool("travis-pr-only", true, "when on travis, only run validations if the CI-Build is checking pull-request build") -) - -func main() { - flag.Parse() - - if *flDebug { - os.Setenv("DEBUG", "1") - } - if *flQuiet { - os.Setenv("QUIET", "1") - } - - if *flListRules { - for _, r := range validate.RegisteredRules { - fmt.Printf("%q -- %s\n", r.Name, r.Description) - } - return - } - - if *flTravisPROnly && strings.ToLower(os.Getenv("TRAVIS_PULL_REQUEST")) == "false" { - fmt.Printf("only to check travis PR builds and this not a PR build. yielding.\n") - return - } - - // rules to be used - var rules []validate.Rule - for _, r := range validate.RegisteredRules { - // only those that are Default - if r.Default { - rules = append(rules, r) - } - } - // or reduce the set being run to what the user provided - if *flRun != "" { - rules = validate.FilterRules(validate.RegisteredRules, validate.SanitizeFilters(*flRun)) - } - if os.Getenv("DEBUG") != "" { - log.Printf("%#v", rules) // XXX maybe reduce this list - } - - var commitRange = *flCommitRange - if commitRange == "" { - if strings.ToLower(os.Getenv("TRAVIS")) == "true" && !*flNoTravis { - if os.Getenv("TRAVIS_COMMIT_RANGE") != "" { - commitRange = strings.Replace(os.Getenv("TRAVIS_COMMIT_RANGE"), "...", "..", 1) - } else if os.Getenv("TRAVIS_COMMIT") != "" { - commitRange = os.Getenv("TRAVIS_COMMIT") - } - } - } - - runner, err := validate.NewRunner(*flDir, rules, commitRange, *flVerbose) - if err != nil { - log.Fatal(err) - } - - if err := runner.Run(); err != nil { - log.Fatal(err) - } - _, fail := runner.Results.PassFail() - if fail > 0 { - fmt.Printf("%d commits to fix\n", fail) - os.Exit(1) - } - -} diff --git a/vendor/github.com/vbatts/git-validation/rules/danglingwhitespace/rule.go b/vendor/github.com/vbatts/git-validation/rules/danglingwhitespace/rule.go deleted file mode 100644 index dab3a984b2f..00000000000 --- a/vendor/github.com/vbatts/git-validation/rules/danglingwhitespace/rule.go +++ /dev/null @@ -1,39 +0,0 @@ -package danglingwhitespace - -import ( - "github.com/vbatts/git-validation/git" - "github.com/vbatts/git-validation/validate" -) - -var ( - // DanglingWhitespace is the rule for checking the presence of dangling - // whitespaces on line endings. - DanglingWhitespace = validate.Rule{ - Name: "dangling-whitespace", - Description: "checking the presence of dangling whitespaces on line endings", - Run: ValidateDanglingWhitespace, - Default: true, - } -) - -func init() { - validate.RegisterRule(DanglingWhitespace) -} - -// ValidateDanglingWhitespace runs Git's check to look for whitespace errors. -func ValidateDanglingWhitespace(r validate.Rule, c git.CommitEntry) (vr validate.Result) { - vr.CommitEntry = c - vr.Msg = "commit does not have any whitespace errors" - vr.Pass = true - - _, err := git.Check(c["commit"]) - if err != nil { - vr.Pass = false - if err.Error() == "exit status 2" { - vr.Msg = "has whitespace errors. See `git show --check " + c["commit"] + "`." - } else { - vr.Msg = "errored with: " + err.Error() - } - } - return -} diff --git a/vendor/github.com/vbatts/git-validation/rules/dco/dco.go b/vendor/github.com/vbatts/git-validation/rules/dco/dco.go deleted file mode 100644 index a42ea06acdd..00000000000 --- a/vendor/github.com/vbatts/git-validation/rules/dco/dco.go +++ /dev/null @@ -1,51 +0,0 @@ -package dco - -import ( - "regexp" - "strings" - - "github.com/vbatts/git-validation/git" - "github.com/vbatts/git-validation/validate" -) - -func init() { - validate.RegisterRule(DcoRule) -} - -var ( - // ValidDCO is the regexp for signed off DCO - ValidDCO = regexp.MustCompile(`^Signed-off-by: ([^<]+) <([^<>@]+@[^<>]+)>$`) - // DcoRule is the rule being registered - DcoRule = validate.Rule{ - Name: "DCO", - Description: "makes sure the commits are signed", - Run: ValidateDCO, - Default: true, - } -) - -// ValidateDCO checks that the commit has been signed off, per the DCO process -func ValidateDCO(r validate.Rule, c git.CommitEntry) (vr validate.Result) { - vr.CommitEntry = c - if len(strings.Split(c["parent"], " ")) > 1 { - vr.Pass = true - vr.Msg = "merge commits do not require DCO" - return vr - } - - hasValid := false - for _, line := range strings.Split(c["body"], "\n") { - if ValidDCO.MatchString(line) { - hasValid = true - } - } - if !hasValid { - vr.Pass = false - vr.Msg = "does not have a valid DCO" - } else { - vr.Pass = true - vr.Msg = "has a valid DCO" - } - - return vr -} diff --git a/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go b/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go deleted file mode 100644 index 98587f262e8..00000000000 --- a/vendor/github.com/vbatts/git-validation/rules/messageregexp/rule.go +++ /dev/null @@ -1,61 +0,0 @@ -package messageregexp - -import ( - "fmt" - "regexp" - "strings" - - "github.com/vbatts/git-validation/git" - "github.com/vbatts/git-validation/validate" -) - -func init() { - validate.RegisterRule(RegexpRule) -} - -var ( - // RegexpRule for validating a user provided regex on the commit messages - RegexpRule = validate.Rule{ - Name: "message_regexp", - Description: "checks the commit message for a user provided regular expression", - Run: ValidateMessageRegexp, - Default: false, // only for users specifically calling it through -run ... - } -) - -// ValidateMessageRegexp is the message regex func to run -func ValidateMessageRegexp(r validate.Rule, c git.CommitEntry) (vr validate.Result) { - if r.Value == "" { - vr.Pass = true - vr.Msg = "noop: message_regexp value is blank" - return vr - } - - re := regexp.MustCompile(r.Value) - vr.CommitEntry = c - if len(strings.Split(c["parent"], " ")) > 1 { - vr.Pass = true - vr.Msg = "merge commits are not checked for message_regexp" - return vr - } - - hasValid := false - for _, line := range strings.Split(c["subject"], "\n") { - if re.MatchString(line) { - hasValid = true - } - } - for _, line := range strings.Split(c["body"], "\n") { - if re.MatchString(line) { - hasValid = true - } - } - if !hasValid { - vr.Pass = false - vr.Msg = fmt.Sprintf("commit message does not match %q", r.Value) - } else { - vr.Pass = true - vr.Msg = fmt.Sprintf("commit message matches %q", r.Value) - } - return vr -} diff --git a/vendor/github.com/vbatts/git-validation/rules/shortsubject/shortsubject.go b/vendor/github.com/vbatts/git-validation/rules/shortsubject/shortsubject.go deleted file mode 100644 index 8fd0336013a..00000000000 --- a/vendor/github.com/vbatts/git-validation/rules/shortsubject/shortsubject.go +++ /dev/null @@ -1,44 +0,0 @@ -package shortsubject - -import ( - "strings" - - "github.com/vbatts/git-validation/git" - "github.com/vbatts/git-validation/validate" -) - -var ( - // ShortSubjectRule is the rule being registered - ShortSubjectRule = validate.Rule{ - Name: "short-subject", - Description: "commit subjects are strictly less than 90 (github ellipsis length)", - Run: ValidateShortSubject, - Default: true, - } -) - -func init() { - validate.RegisterRule(ShortSubjectRule) -} - -// ValidateShortSubject checks that the commit's subject is strictly less than -// 90 characters (preferably not more than 72 chars). -func ValidateShortSubject(r validate.Rule, c git.CommitEntry) (vr validate.Result) { - if len(strings.Split(c["parent"], " ")) > 1 { - vr.Pass = true - vr.Msg = "merge commits do not require length check" - return vr - } - if len(c["subject"]) >= 90 { - vr.Pass = false - vr.Msg = "commit subject exceeds 90 characters" - return - } - vr.Pass = true - if len(c["subject"]) > 72 { - vr.Msg = "commit subject is under 90 characters, but is still more than 72 chars" - } else { - vr.Msg = "commit subject is 72 characters or less! *yay*" - } - return -} diff --git a/vendor/github.com/vbatts/git-validation/validate/rules.go b/vendor/github.com/vbatts/git-validation/validate/rules.go deleted file mode 100644 index 38126a4f076..00000000000 --- a/vendor/github.com/vbatts/git-validation/validate/rules.go +++ /dev/null @@ -1,134 +0,0 @@ -package validate - -import ( - "sort" - "strings" - "sync" - - "github.com/vbatts/git-validation/git" -) - -var ( - // RegisteredRules are the avaible validation to perform on git commits - RegisteredRules = []Rule{} - registerRuleLock = sync.Mutex{} -) - -// RegisterRule includes the Rule in the avaible set to use -func RegisterRule(vr Rule) { - registerRuleLock.Lock() - defer registerRuleLock.Unlock() - RegisteredRules = append(RegisteredRules, vr) -} - -// Rule will operate over a provided git.CommitEntry, and return a result. -type Rule struct { - Name string // short name for reference in in the `-run=...` flag - Value string // value to configure for the rule (i.e. a regexp to check for in the commit message) - Description string // longer Description for readability - Run func(Rule, git.CommitEntry) Result - Default bool // whether the registered rule is run by default -} - -// Commit processes the given rules on the provided commit, and returns the result set. -func Commit(c git.CommitEntry, rules []Rule) Results { - results := Results{} - for _, r := range rules { - results = append(results, r.Run(r, c)) - } - return results -} - -// Result is the result for a single validation of a commit. -type Result struct { - CommitEntry git.CommitEntry - Pass bool - Msg string -} - -// Results is a set of results. This is type makes it easy for the following function. -type Results []Result - -// PassFail gives a quick over/under of passes and failures of the results in this set -func (vr Results) PassFail() (pass int, fail int) { - for _, res := range vr { - if res.Pass { - pass++ - } else { - fail++ - } - } - return pass, fail -} - -// SanitizeFilters takes a comma delimited list and returns the trimmend and -// split (on ",") items in the list -func SanitizeFilters(filtStr string) (filters []string) { - for _, item := range strings.Split(filtStr, ",") { - filters = append(filters, strings.TrimSpace(item)) - } - return -} - -// FilterRules takes a set of rules and a list of short names to include, and -// returns the reduced set. The comparison is case insensitive. -// -// Some `includes` rules have values assigned to them. -// i.e. -run "dco,message_regexp='^JIRA-[0-9]+ [A-Z].*$'" -// -func FilterRules(rules []Rule, includes []string) []Rule { - ret := []Rule{} - - for _, r := range rules { - for i := range includes { - if strings.Contains(includes[i], "=") { - chunks := strings.SplitN(includes[i], "=", 2) - if strings.ToLower(r.Name) == strings.ToLower(chunks[0]) { - // for these rules, the Name won't be unique per se. There may be - // multiple "regexp=" with different values. We'll need to set the - // .Value = chunk[1] and ensure r is dup'ed so they don't clobber - // each other. - newR := Rule(r) - newR.Value = chunks[1] - ret = append(ret, newR) - } - } else { - if strings.ToLower(r.Name) == strings.ToLower(includes[i]) { - ret = append(ret, r) - } - } - } - } - - return ret -} - -// StringsSliceEqual compares two string arrays for equality -func StringsSliceEqual(a, b []string) bool { - if !sort.StringsAreSorted(a) { - sort.Strings(a) - } - if !sort.StringsAreSorted(b) { - sort.Strings(b) - } - for i := range b { - if !StringsSliceContains(a, b[i]) { - return false - } - } - for i := range a { - if !StringsSliceContains(b, a[i]) { - return false - } - } - return true -} - -// StringsSliceContains checks for the presence of a word in string array -func StringsSliceContains(a []string, b string) bool { - if !sort.StringsAreSorted(a) { - sort.Strings(a) - } - i := sort.SearchStrings(a, b) - return i < len(a) && a[i] == b -} diff --git a/vendor/github.com/vbatts/git-validation/validate/runner.go b/vendor/github.com/vbatts/git-validation/validate/runner.go deleted file mode 100644 index eea61fba1e6..00000000000 --- a/vendor/github.com/vbatts/git-validation/validate/runner.go +++ /dev/null @@ -1,109 +0,0 @@ -package validate - -import ( - "fmt" - "os" - "path/filepath" - - "github.com/vbatts/git-validation/git" -) - -// Runner is the for processing a set of rules against a range of commits -type Runner struct { - Root string - Rules []Rule - Results Results - Verbose bool - CommitRange string // if this is empty, then it will default to FETCH_HEAD, then HEAD -} - -// NewRunner returns an initiallized Runner. -func NewRunner(root string, rules []Rule, commitrange string, verbose bool) (*Runner, error) { - newroot, err := filepath.Abs(root) - if err != nil { - return nil, fmt.Errorf("failed to get absolute path of %q: %s", root, err) - } - if commitrange == "" { - var err error - cwd, err := os.Getwd() - if err != nil { - return nil, err - } - defer os.Chdir(cwd) - - if err := os.Chdir(newroot); err != nil { - return nil, err - } - commitrange, err = git.FetchHeadCommit() - if err != nil { - commitrange, err = git.HeadCommit() - if err != nil { - return nil, err - } - } - } - return &Runner{ - Root: newroot, - Rules: rules, - CommitRange: commitrange, - Verbose: verbose, - }, nil -} - -// Run processes the rules for each commit in the range provided -func (r *Runner) Run() error { - cwd, err := os.Getwd() - if err != nil { - return err - } - defer os.Chdir(cwd) - - if err := os.Chdir(r.Root); err != nil { - return err - } - - // collect the entries - c, err := git.Commits(r.CommitRange) - if err != nil { - return err - } - - // run them and show results - for _, commit := range c { - if os.Getenv("QUIET") == "" { - fmt.Printf(" * %s %q ... ", commit["abbreviated_commit"], commit["subject"]) - } - vr := Commit(commit, r.Rules) - r.Results = append(r.Results, vr...) - _, fail := vr.PassFail() - if os.Getenv("QUIET") != "" { - if fail != 0 { - for _, res := range vr { - if !res.Pass { - fmt.Printf(" %s - FAIL - %s\n", commit["abbreviated_commit"], res.Msg) - } - } - } - // everything else in the loop is printing output. - // If we're quiet, then just continue - continue - } - if fail == 0 { - fmt.Println("PASS") - } else { - fmt.Println("FAIL") - } - for _, res := range vr { - if r.Verbose { - if res.Pass { - fmt.Printf(" - PASS - %s\n", res.Msg) - } else { - fmt.Printf(" - FAIL - %s\n", res.Msg) - } - } else if !res.Pass { - fmt.Printf(" - FAIL - %s\n", res.Msg) - } - } - } - return nil -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 02cf8d2b48a..ac222a29b1b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -524,8 +524,6 @@ github.com/grpc-ecosystem/go-grpc-middleware github.com/hashicorp/errwrap # github.com/hashicorp/go-multierror v1.1.0 github.com/hashicorp/go-multierror -# github.com/hashicorp/go-version v1.2.0 -github.com/hashicorp/go-version # github.com/hashicorp/golang-lru v0.5.1 github.com/hashicorp/golang-lru github.com/hashicorp/golang-lru/simplelru @@ -773,15 +771,6 @@ github.com/ulikunitz/xz/lzma # github.com/urfave/cli/v2 v2.2.0 ## explicit github.com/urfave/cli/v2 -# github.com/vbatts/git-validation v1.1.0 -## explicit -github.com/vbatts/git-validation -github.com/vbatts/git-validation/git -github.com/vbatts/git-validation/rules/danglingwhitespace -github.com/vbatts/git-validation/rules/dco -github.com/vbatts/git-validation/rules/messageregexp -github.com/vbatts/git-validation/rules/shortsubject -github.com/vbatts/git-validation/validate # github.com/vbatts/tar-split v0.11.1 github.com/vbatts/tar-split/archive/tar github.com/vbatts/tar-split/tar/asm