mirror of
https://github.com/drone/drone-cli.git
synced 2024-11-26 06:07:05 +01:00
(feat) remove drone-yaml dependency. use docker compiler for lint
This commit is contained in:
parent
92e84c4e24
commit
b4de4dab02
@ -1,19 +1,15 @@
|
||||
package convert
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"github.com/drone/drone-yaml/yaml/converter"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
// Command exports the convert command.
|
||||
var Command = cli.Command{
|
||||
Name: "convert",
|
||||
Usage: "convert legacy format",
|
||||
Usage: "<deprecated. this operation is a no-op> convert legacy format",
|
||||
ArgsUsage: "<source>",
|
||||
Action: convert,
|
||||
Flags: []cli.Flag{
|
||||
@ -30,20 +26,9 @@ func convert(c *cli.Context) error {
|
||||
path = ".drone.yml"
|
||||
}
|
||||
|
||||
raw, err := ioutil.ReadFile(path)
|
||||
_, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
res, err := converter.Convert(raw, converter.Metadata{Filename: path})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if c.Bool("save") {
|
||||
return ioutil.WriteFile(path, res, 0644)
|
||||
}
|
||||
|
||||
_, err = io.Copy(os.Stderr, bytes.NewReader(res))
|
||||
return err
|
||||
}
|
||||
|
@ -20,7 +20,6 @@ import (
|
||||
"github.com/drone/drone-yaml/yaml"
|
||||
"github.com/drone/drone-yaml/yaml/compiler"
|
||||
"github.com/drone/drone-yaml/yaml/compiler/transform"
|
||||
"github.com/drone/drone-yaml/yaml/converter"
|
||||
"github.com/drone/drone-yaml/yaml/linter"
|
||||
"github.com/drone/signal"
|
||||
|
||||
@ -103,10 +102,7 @@ var Command = cli.Command{
|
||||
"plugins/heroku",
|
||||
},
|
||||
},
|
||||
|
||||
//
|
||||
// netrc parameters
|
||||
//
|
||||
cli.StringFlag{
|
||||
Name: "netrc-username",
|
||||
},
|
||||
@ -116,11 +112,7 @@ var Command = cli.Command{
|
||||
cli.StringFlag{
|
||||
Name: "netrc-machine",
|
||||
},
|
||||
|
||||
//
|
||||
// trigger parameters
|
||||
//
|
||||
|
||||
cli.StringFlag{
|
||||
Name: "branch",
|
||||
Usage: "branch name",
|
||||
@ -170,17 +162,6 @@ func exec(c *cli.Context) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// this code is temporarily in place to detect and convert
|
||||
// the legacy yaml configuration file to the new format.
|
||||
dataS, err = converter.ConvertString(dataS, converter.Metadata{
|
||||
Filename: file,
|
||||
Ref: c.String("ref"),
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
manifest, err := yaml.ParseString(dataS)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -1,15 +1,22 @@
|
||||
package lint
|
||||
|
||||
import (
|
||||
"github.com/drone/drone-yaml/yaml"
|
||||
"github.com/drone/drone-yaml/yaml/linter"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
|
||||
"github.com/drone-runners/drone-runner-docker/engine/linter"
|
||||
"github.com/drone-runners/drone-runner-docker/engine/resource"
|
||||
"github.com/drone/drone-go/drone"
|
||||
"github.com/drone/envsubst"
|
||||
"github.com/drone/runner-go/manifest"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
// Command exports the linter command.
|
||||
var Command = cli.Command{
|
||||
Name: "lint",
|
||||
Usage: "lint the yaml file",
|
||||
Usage: "lint the yaml file, checks for yaml errors",
|
||||
ArgsUsage: "<source>",
|
||||
Action: lint,
|
||||
Flags: []cli.Flag{
|
||||
@ -20,22 +27,78 @@ var Command = cli.Command{
|
||||
},
|
||||
}
|
||||
|
||||
type Flags struct {
|
||||
Build drone.Build
|
||||
Netrc drone.Netrc
|
||||
Repo drone.Repo
|
||||
Stage drone.Stage
|
||||
System drone.System
|
||||
}
|
||||
|
||||
func lint(c *cli.Context) error {
|
||||
f := new(Flags)
|
||||
f.Repo.Trusted = c.Bool("trusted")
|
||||
var envs map[string]string
|
||||
|
||||
path := c.Args().First()
|
||||
if path == "" {
|
||||
path = ".drone.yml"
|
||||
}
|
||||
|
||||
manifest, err := yaml.ParseFile(path)
|
||||
rawsource, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, resource := range manifest.Resources {
|
||||
if err := linter.Lint(resource, c.Bool("trusted")); err != nil {
|
||||
return err
|
||||
// string substitution function ensures that string replacement variables are escaped and quoted if they contain newlines.
|
||||
subf := func(k string) string {
|
||||
v := envs[k]
|
||||
if strings.Contains(v, "\n") {
|
||||
v = fmt.Sprintf("%q", v)
|
||||
}
|
||||
return v
|
||||
}
|
||||
// evaluates string replacement expressions and returns an update configuration.
|
||||
config, err := envsubst.Eval(string(rawsource), subf)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// parse into manifests
|
||||
inputManifests, err := manifest.ParseString(config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, iter := range inputManifests.Resources {
|
||||
if iter.GetType() == "docker" {
|
||||
resource, err := resource.Lookup(iter.GetName(), inputManifests)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
// lint the resource and return an error if any linting rules are broken
|
||||
lint := linter.New()
|
||||
err = lint.Lint(resource, &f.Repo)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Printf("%v\n", iter)
|
||||
}
|
||||
}
|
||||
// now we can check the pipeline dependencies
|
||||
// get a list of all the pipelines
|
||||
allStages := map[string]struct{}{}
|
||||
for _, iter := range inputManifests.Resources {
|
||||
allStages[iter.GetName()] = struct{}{}
|
||||
}
|
||||
// we need to parse the file again into raw resources to access the dependencies
|
||||
inputRawResources, err := manifest.ParseRawFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, iter := range inputRawResources {
|
||||
for _, dep := range iter.Deps {
|
||||
if _, ok := allStages[dep]; !ok {
|
||||
return fmt.Errorf("Pipeline stage '%s' declares invalid dependency '%s'", iter.Name, dep)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
@ -1,11 +1,15 @@
|
||||
package sign
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"strings"
|
||||
|
||||
"github.com/buildkite/yaml"
|
||||
"github.com/drone/drone-cli/drone/internal"
|
||||
"github.com/drone/drone-yaml/yaml/signer"
|
||||
"github.com/urfave/cli"
|
||||
)
|
||||
|
||||
@ -55,9 +59,131 @@ func format(c *cli.Context) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
data, err = signer.WriteTo(data, hmac)
|
||||
data, err = writeTo(data, hmac)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ioutil.WriteFile(path, data, 0644)
|
||||
}
|
||||
|
||||
// Resource enums.
|
||||
const (
|
||||
KindCron = "cron"
|
||||
KindPipeline = "pipeline"
|
||||
KindRegistry = "registry"
|
||||
KindSecret = "secret"
|
||||
KindSignature = "signature"
|
||||
)
|
||||
|
||||
type (
|
||||
// Manifest is a collection of Drone resources.
|
||||
Manifest struct {
|
||||
Resources []Resource
|
||||
}
|
||||
|
||||
// Resource represents a Drone resource.
|
||||
Resource interface {
|
||||
// GetVersion returns the resource version.
|
||||
GetVersion() string
|
||||
|
||||
// GetKind returns the resource kind.
|
||||
GetKind() string
|
||||
}
|
||||
|
||||
// RawResource is a raw encoded resource with the
|
||||
// resource kind and type extracted.
|
||||
RawResource struct {
|
||||
Version string
|
||||
Kind string
|
||||
Type string
|
||||
Data []byte `yaml:"-"`
|
||||
}
|
||||
|
||||
resource struct {
|
||||
Version string
|
||||
Kind string `json:"kind"`
|
||||
Type string `json:"type"`
|
||||
}
|
||||
)
|
||||
|
||||
func writeTo(data []byte, hmac string) ([]byte, error) {
|
||||
res, err := parseRawBytes(data)
|
||||
return upsert(res, hmac), err
|
||||
}
|
||||
|
||||
func parseRawBytes(b []byte) ([]*RawResource, error) {
|
||||
return parseRaw(
|
||||
bytes.NewReader(b),
|
||||
)
|
||||
}
|
||||
|
||||
func parseRaw(r io.Reader) ([]*RawResource, error) {
|
||||
const newline = '\n'
|
||||
var resources []*RawResource
|
||||
var resource *RawResource
|
||||
|
||||
scanner := bufio.NewScanner(r)
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
if isSeparator(line) {
|
||||
resource = nil
|
||||
}
|
||||
if resource == nil {
|
||||
resource = &RawResource{}
|
||||
resources = append(resources, resource)
|
||||
}
|
||||
if isSeparator(line) {
|
||||
continue
|
||||
}
|
||||
if isTerminator(line) {
|
||||
break
|
||||
}
|
||||
if scanner.Err() == io.EOF {
|
||||
break
|
||||
}
|
||||
resource.Data = append(
|
||||
resource.Data,
|
||||
line...,
|
||||
)
|
||||
resource.Data = append(
|
||||
resource.Data,
|
||||
newline,
|
||||
)
|
||||
}
|
||||
for _, resource := range resources {
|
||||
err := yaml.Unmarshal(resource.Data, resource)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
return resources, nil
|
||||
}
|
||||
|
||||
func upsert(res []*RawResource, hmac string) []byte {
|
||||
var buf bytes.Buffer
|
||||
for _, r := range res {
|
||||
if r.Kind != KindSignature {
|
||||
buf.WriteString("---")
|
||||
buf.WriteByte('\n')
|
||||
buf.Write(r.Data)
|
||||
}
|
||||
}
|
||||
buf.WriteString("---")
|
||||
buf.WriteByte('\n')
|
||||
buf.WriteString("kind: signature")
|
||||
buf.WriteByte('\n')
|
||||
buf.WriteString("hmac: " + hmac)
|
||||
buf.WriteByte('\n')
|
||||
buf.WriteByte('\n')
|
||||
buf.WriteString("...")
|
||||
buf.WriteByte('\n')
|
||||
return buf.Bytes()
|
||||
}
|
||||
|
||||
func isSeparator(s string) bool {
|
||||
return strings.HasPrefix(s, "---")
|
||||
}
|
||||
|
||||
func isTerminator(s string) bool {
|
||||
return strings.HasPrefix(s, "...")
|
||||
}
|
||||
|
39
go.mod
39
go.mod
@ -1,17 +1,19 @@
|
||||
module github.com/drone/drone-cli
|
||||
|
||||
go 1.16
|
||||
go 1.17
|
||||
|
||||
replace github.com/docker/docker => github.com/docker/engine v17.12.0-ce-rc1.0.20200309214505-aa6a9891b09c+incompatible
|
||||
|
||||
require (
|
||||
github.com/containerd/containerd v1.5.8 // indirect
|
||||
github.com/buildkite/yaml v2.1.0+incompatible
|
||||
github.com/docker/go-units v0.4.0
|
||||
github.com/drone/drone-go v1.7.0
|
||||
github.com/drone-runners/drone-runner-docker v1.8.0
|
||||
github.com/drone/drone-go v1.7.1
|
||||
github.com/drone/drone-runtime v1.1.1-0.20200623162453-61e33e2cab5d
|
||||
github.com/drone/drone-yaml v0.0.0-20190729072335-70fa398b3560
|
||||
github.com/drone/envsubst v1.0.3
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d
|
||||
github.com/drone/runner-go v1.12.0
|
||||
github.com/drone/signal v1.0.0
|
||||
github.com/fatih/color v1.9.0
|
||||
github.com/ghodss/yaml v1.0.0
|
||||
@ -20,7 +22,6 @@ require (
|
||||
github.com/joho/godotenv v1.3.0
|
||||
github.com/mattn/go-colorable v0.1.4
|
||||
github.com/mattn/go-isatty v0.0.11
|
||||
github.com/opencontainers/image-spec v1.0.2 // indirect
|
||||
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4
|
||||
github.com/stretchr/testify v1.6.1
|
||||
github.com/urfave/cli v1.22.2
|
||||
@ -28,3 +29,33 @@ require (
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/99designs/httpsignatures-go v0.0.0-20170731043157-88528bf4ca7e // indirect
|
||||
github.com/Microsoft/go-winio v0.4.17 // indirect
|
||||
github.com/bmatcuk/doublestar v1.1.1 // indirect
|
||||
github.com/containerd/containerd v1.5.8 // indirect
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/docker/distribution v2.7.1+incompatible // indirect
|
||||
github.com/docker/docker v1.13.1 // indirect
|
||||
github.com/docker/go-connections v0.3.0 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang/protobuf v1.5.0 // indirect
|
||||
github.com/natessilva/dag v0.0.0-20180124060714-7194b8dcc5c4 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.0.2 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/russross/blackfriday/v2 v2.0.1 // indirect
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
|
||||
github.com/sirupsen/logrus v1.8.1 // indirect
|
||||
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a // indirect
|
||||
golang.org/x/sys v0.0.0-20210426230700-d19ff857e887 // indirect
|
||||
google.golang.org/appengine v1.6.6 // indirect
|
||||
google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a // indirect
|
||||
google.golang.org/grpc v1.33.2 // indirect
|
||||
google.golang.org/protobuf v1.27.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
|
||||
)
|
||||
|
17
go.sum
17
go.sum
@ -23,6 +23,7 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
docker.io/go-docker v1.0.0/go.mod h1:7tiAn5a0LFmjbPDbyTPOaTTOuG1ZRNXdPA6RvKY+fpY=
|
||||
github.com/99designs/basicauth-go v0.0.0-20160802081356-2a93ba0f464d/go.mod h1:3cARGAK9CfW3HoxCy1a0G4TKrdiKke8ftOMEOHyySYs=
|
||||
github.com/99designs/httpsignatures-go v0.0.0-20170731043157-88528bf4ca7e h1:rl2Aq4ZODqTDkeSqQBy+fzpZPamacO1Srp8zq7jf2Sc=
|
||||
github.com/99designs/httpsignatures-go v0.0.0-20170731043157-88528bf4ca7e/go.mod h1:Xa6lInWHNQnuWoF0YPSsx+INFA9qk7/7pTjwb3PInkY=
|
||||
github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||
@ -220,6 +221,7 @@ github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjI
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dchest/uniuri v0.0.0-20160212164326-8902c56451e9/go.mod h1:GgB8SF9nRG+GqaDtLcwJZsQFhcogVCJ79j4EdT0c2V4=
|
||||
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
|
||||
github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
@ -244,17 +246,23 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD
|
||||
github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
|
||||
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
|
||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||
github.com/drone/drone-go v1.7.0 h1:oEFWVcagBmAkVuFBpBq9lImZX1caDM+zRsmC4O1vXgQ=
|
||||
github.com/drone/drone-go v1.7.0/go.mod h1:fxCf9jAnXDZV1yDr0ckTuWd1intvcQwfJmTRpTZ1mXg=
|
||||
github.com/drone-runners/drone-runner-docker v1.8.0 h1:cNjEAxAR/crqfcRyqoumPaHdulfUdj5x2aB2oArvBno=
|
||||
github.com/drone-runners/drone-runner-docker v1.8.0/go.mod h1:Jdm+apC9XcDGlgdXH+wHjegwqW2oMH9+RR6TfAOu9D8=
|
||||
github.com/drone/drone-go v1.7.1 h1:ZX+3Rs8YHUSUQ5mkuMLmm1zr1ttiiE2YGNxF3AnyDKw=
|
||||
github.com/drone/drone-go v1.7.1/go.mod h1:fxCf9jAnXDZV1yDr0ckTuWd1intvcQwfJmTRpTZ1mXg=
|
||||
github.com/drone/drone-runtime v1.0.7-0.20190729070836-38f28a11afe8/go.mod h1:+osgwGADc/nyl40J0fdsf8Z09bgcBZXvXXnLOY48zYs=
|
||||
github.com/drone/drone-runtime v1.1.1-0.20200623162453-61e33e2cab5d h1:P5HI/Y9hARTZ3F3EKs0kYijhjXZWQRQHYn1neTi0pWM=
|
||||
github.com/drone/drone-runtime v1.1.1-0.20200623162453-61e33e2cab5d/go.mod h1:4/2QToW5+HGD0y1sTw7X35W1f7YINS14UfDY4isggT8=
|
||||
github.com/drone/drone-yaml v0.0.0-20190729072335-70fa398b3560 h1:3QL4NnDpGtaXpgI9eNd6N2k5WK8W388CzD67ZTuuZQg=
|
||||
github.com/drone/drone-yaml v0.0.0-20190729072335-70fa398b3560/go.mod h1:rCLISp/rqZ50s6G4nKsm971tRSzolxzqqXfgjDqPYoE=
|
||||
github.com/drone/envsubst v1.0.2/go.mod h1:bkZbnc/2vh1M12Ecn7EYScpI4YGYU0etwLJICOWi8Z0=
|
||||
github.com/drone/envsubst v1.0.3 h1:PCIBwNDYjs50AsLZPYdfhSATKaRg/FJmDc2D6+C2x8g=
|
||||
github.com/drone/envsubst v1.0.3/go.mod h1:N2jZmlMufstn1KEqvbHjw40h1KyTmnVzHcSc9bFiJ2g=
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d h1:/IO7UVVu191Jc0DajV4cDVoO+91cuppvgxg2MZl+AXI=
|
||||
github.com/drone/funcmap v0.0.0-20190918184546-d4ef6e88376d/go.mod h1:Hph0/pT6ZxbujnE1Z6/08p5I0XXuOsppqF6NQlGOK0E=
|
||||
github.com/drone/runner-go v1.11.0/go.mod h1:vu4pPPYDoeN6vdYQAY01GGGsAIW4aLganJNaa8Fx8zE=
|
||||
github.com/drone/runner-go v1.12.0 h1:zUjDj9ylsJ4n4Mvy4znddq/Z4EBzcUXzTltpzokKtgs=
|
||||
github.com/drone/runner-go v1.12.0/go.mod h1:vu4pPPYDoeN6vdYQAY01GGGsAIW4aLganJNaa8Fx8zE=
|
||||
github.com/drone/signal v1.0.0 h1:NrnM2M/4yAuU/tXs6RP1a1ZfxnaHwYkd0kJurA1p6uI=
|
||||
github.com/drone/signal v1.0.0/go.mod h1:S8t92eFT0g4WUgEc/LxG+LCuiskpMNsG0ajAMGnyZpc=
|
||||
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
@ -418,6 +426,7 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1
|
||||
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
|
||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
|
||||
github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
@ -498,7 +507,6 @@ github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.
|
||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||
github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
|
||||
github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||
github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM=
|
||||
github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
|
||||
@ -622,7 +630,6 @@ github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijb
|
||||
github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/urfave/cli v1.22.2 h1:gsqYFH8bb9ekPA12kRo0hfjngWQjkJPlN9R0N78BoUo=
|
||||
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/vinzenz/yaml v0.0.0-20170920082545-91409cdd725d h1:3wDi6J5APMqaHBVPuVd7RmHD2gRTfqbdcVSpCNoUWtk=
|
||||
github.com/vinzenz/yaml v0.0.0-20170920082545-91409cdd725d/go.mod h1:mb5taDqMnJiZNRQ3+02W2IFG+oEz1+dTuCXkp4jpkfo=
|
||||
github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk=
|
||||
github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE=
|
||||
@ -665,6 +672,7 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190621222207-cc06ce4a13d4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
@ -929,6 +937,7 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
|
||||
google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o=
|
||||
google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
|
||||
|
Loading…
Reference in New Issue
Block a user