Skip to content

Commit 8a22319

Browse files
authored
Add a proper logger to fetch (#90)
1 parent 8c6520a commit 8a22319

File tree

13 files changed

+175
-106
lines changed

13 files changed

+175
-106
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,3 @@
1010
fetch
1111
fetch.exe
1212
bin/*
13-
14-
# Don't upload dependencies
15-
vendor

checksum.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@ import (
99
"io"
1010
"os"
1111
"reflect"
12+
13+
"github.com/sirupsen/logrus"
1214
)
1315

14-
func verifyChecksumOfReleaseAsset(assetPath string, checksumMap map[string]bool, algorithm string) *FetchError {
16+
func verifyChecksumOfReleaseAsset(logger *logrus.Logger, assetPath string, checksumMap map[string]bool, algorithm string) *FetchError {
1517
computedChecksum, err := computeChecksum(assetPath, algorithm)
1618
if err != nil {
1719
return newError(errorWhileComputingChecksum, err.Error())
@@ -20,7 +22,7 @@ func verifyChecksumOfReleaseAsset(assetPath string, checksumMap map[string]bool,
2022
keys := reflect.ValueOf(checksumMap).MapKeys()
2123
return newError(checksumDoesNotMatch, fmt.Sprintf("Expected to checksum value to be one of %s, but instead got %s for Release Asset at %s. This means that either you are using the wrong checksum value in your call to fetch, (e.g. did you update the version of the module you're installing but not the checksum?) or that someone has replaced the asset with a potentially dangerous one and you should be very careful about proceeding.", keys, computedChecksum, assetPath))
2224
}
23-
fmt.Printf("Release asset checksum verified for %s\n", assetPath)
25+
logger.Infof("Release asset checksum verified for %s\n", assetPath)
2426

2527
return nil
2628
}

checksum_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ var SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256_NO_MATCH = map[string]bool{
2727

2828
func TestVerifyReleaseAsset(t *testing.T) {
2929
tmpDir := mkTempDir(t)
30+
logger := GetProjectLogger()
3031
testInst := GitHubInstance{
3132
BaseUrl: "github.com",
3233
ApiUrl: "api.github.com",
@@ -37,7 +38,7 @@ func TestVerifyReleaseAsset(t *testing.T) {
3738
t.Fatalf("Failed to parse sample release asset GitHub URL into Fetch GitHubRepo struct: %s", err)
3839
}
3940

40-
assetPaths, fetchErr := downloadReleaseAssets(SAMPLE_RELEASE_ASSET_NAME, tmpDir, githubRepo, SAMPLE_RELEASE_ASSET_VERSION, false)
41+
assetPaths, fetchErr := downloadReleaseAssets(logger, SAMPLE_RELEASE_ASSET_NAME, tmpDir, githubRepo, SAMPLE_RELEASE_ASSET_VERSION, false)
4142
if fetchErr != nil {
4243
t.Fatalf("Failed to download release asset: %s", fetchErr)
4344
}
@@ -62,6 +63,7 @@ func TestVerifyReleaseAsset(t *testing.T) {
6263

6364
func TestVerifyChecksumOfReleaseAsset(t *testing.T) {
6465
tmpDir := mkTempDir(t)
66+
logger := GetProjectLogger()
6567
testInst := GitHubInstance{
6668
BaseUrl: "github.com",
6769
ApiUrl: "api.github.com",
@@ -72,7 +74,7 @@ func TestVerifyChecksumOfReleaseAsset(t *testing.T) {
7274
t.Fatalf("Failed to parse sample release asset GitHub URL into Fetch GitHubRepo struct: %s", err)
7375
}
7476

75-
assetPaths, fetchErr := downloadReleaseAssets(SAMPLE_RELEASE_ASSET_REGEX, tmpDir, githubRepo, SAMPLE_RELEASE_ASSET_VERSION, false)
77+
assetPaths, fetchErr := downloadReleaseAssets(logger, SAMPLE_RELEASE_ASSET_REGEX, tmpDir, githubRepo, SAMPLE_RELEASE_ASSET_VERSION, false)
7678
if fetchErr != nil {
7779
t.Fatalf("Failed to download release asset: %s", fetchErr)
7880
}
@@ -82,14 +84,14 @@ func TestVerifyChecksumOfReleaseAsset(t *testing.T) {
8284
}
8385

8486
for _, assetPath := range assetPaths {
85-
checksumErr := verifyChecksumOfReleaseAsset(assetPath, SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256, "sha256")
87+
checksumErr := verifyChecksumOfReleaseAsset(logger, assetPath, SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256, "sha256")
8688
if checksumErr != nil {
8789
t.Fatalf("Expected downloaded asset to match one of %d checksums: %s", len(SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256), checksumErr)
8890
}
8991
}
9092

9193
for _, assetPath := range assetPaths {
92-
checksumErr := verifyChecksumOfReleaseAsset(assetPath, SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256_NO_MATCH, "sha256")
94+
checksumErr := verifyChecksumOfReleaseAsset(logger, assetPath, SAMPLE_RELEASE_ASSET_CHECKSUMS_SHA256_NO_MATCH, "sha256")
9395
if checksumErr == nil {
9496
t.Fatalf("Expected downloaded asset to not match any checksums")
9597
}

file.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,14 @@ import (
99
"os"
1010
"path/filepath"
1111
"strings"
12+
13+
"github.com/sirupsen/logrus"
1214
)
1315

1416
// Download the zip file at the given URL to a temporary local directory.
1517
// Returns the absolute path to the downloaded zip file.
1618
// IMPORTANT: You must call "defer os.RemoveAll(dir)" in the calling function when done with the downloaded zip file!
17-
func downloadGithubZipFile(gitHubCommit GitHubCommit, gitHubToken string, instance GitHubInstance) (string, *FetchError) {
19+
func downloadGithubZipFile(logger *logrus.Logger, gitHubCommit GitHubCommit, gitHubToken string, instance GitHubInstance) (string, *FetchError) {
1820

1921
var zipFilePath string
2022

@@ -33,6 +35,7 @@ func downloadGithubZipFile(gitHubCommit GitHubCommit, gitHubToken string, instan
3335
return zipFilePath, wrapError(err)
3436
}
3537

38+
logger.Debugf("Performing HTTP request to download GitHub ZIP Archive: %s", req.URL)
3639
resp, err := httpClient.Do(req)
3740
if err != nil {
3841
return zipFilePath, wrapError(err)
@@ -51,6 +54,7 @@ func downloadGithubZipFile(gitHubCommit GitHubCommit, gitHubToken string, instan
5154
return zipFilePath, wrapError(err)
5255
}
5356

57+
logger.Debugf("Writing ZIP Archive to temporary path: %s", tempDir)
5458
err = ioutil.WriteFile(filepath.Join(tempDir, "repo.zip"), respBodyBuffer.Bytes(), 0644)
5559
if err != nil {
5660
return zipFilePath, wrapError(err)

file_test.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func TestDownloadGitTagZipFile(t *testing.T) {
4444
}
4545

4646
for _, tc := range cases {
47+
logger := GetProjectLogger()
4748
gitHubCommits := []GitHubCommit{
4849
// Test as a GitTag
4950
GitHubCommit{
@@ -63,7 +64,7 @@ func TestDownloadGitTagZipFile(t *testing.T) {
6364
},
6465
}
6566
for _, gitHubCommit := range gitHubCommits {
66-
zipFilePath, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
67+
zipFilePath, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
6768

6869
defer os.RemoveAll(zipFilePath)
6970

@@ -118,6 +119,7 @@ func TestDownloadGitBranchZipFile(t *testing.T) {
118119
}
119120

120121
for _, tc := range cases {
122+
logger := GetProjectLogger()
121123
gitHubCommits := []GitHubCommit{
122124
GitHubCommit{
123125
Repo: GitHubRepo{
@@ -135,7 +137,7 @@ func TestDownloadGitBranchZipFile(t *testing.T) {
135137
},
136138
}
137139
for _, gitHubCommit := range gitHubCommits {
138-
zipFilePath, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
140+
zipFilePath, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
139141
defer os.RemoveAll(zipFilePath)
140142
if err != nil {
141143
t.Fatalf("Failed to download file: %s", err)
@@ -167,6 +169,7 @@ func TestDownloadBadGitBranchZipFile(t *testing.T) {
167169
}
168170

169171
for _, tc := range cases {
172+
logger := GetProjectLogger()
170173
gitHubCommits := []GitHubCommit{
171174
GitHubCommit{
172175
Repo: GitHubRepo{
@@ -184,7 +187,7 @@ func TestDownloadBadGitBranchZipFile(t *testing.T) {
184187
},
185188
}
186189
for _, gitHubCommit := range gitHubCommits {
187-
zipFilePath, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
190+
zipFilePath, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
188191
defer os.RemoveAll(zipFilePath)
189192
if err == nil {
190193
t.Fatalf("Expected that attempt to download repo %s/%s for branch \"%s\" would fail, but received no error.", tc.repoOwner, tc.repoName, tc.branchName)
@@ -215,6 +218,7 @@ func TestDownloadGitCommitFile(t *testing.T) {
215218
}
216219

217220
for _, tc := range cases {
221+
logger := GetProjectLogger()
218222
GitHubCommits := []GitHubCommit{
219223
GitHubCommit{
220224
Repo: GitHubRepo{
@@ -232,7 +236,7 @@ func TestDownloadGitCommitFile(t *testing.T) {
232236
},
233237
}
234238
for _, gitHubCommit := range GitHubCommits {
235-
zipFilePath, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
239+
zipFilePath, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
236240
defer os.RemoveAll(zipFilePath)
237241
if err != nil {
238242
t.Fatalf("Failed to download file: %s", err)
@@ -269,7 +273,7 @@ func TestDownloadBadGitCommitFile(t *testing.T) {
269273
}
270274

271275
for _, tc := range cases {
272-
276+
logger := GetProjectLogger()
273277
gitHubCommits := []GitHubCommit{
274278
GitHubCommit{
275279
Repo: GitHubRepo{
@@ -287,7 +291,7 @@ func TestDownloadBadGitCommitFile(t *testing.T) {
287291
},
288292
}
289293
for _, gitHubCommit := range gitHubCommits {
290-
zipFilePath, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
294+
zipFilePath, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
291295
defer os.RemoveAll(zipFilePath)
292296
if err == nil {
293297
t.Fatalf("Expected that attempt to download repo %s/%s at commmit sha \"%s\" would fail, but received no error.", tc.repoOwner, tc.repoName, tc.commitSha)
@@ -315,6 +319,7 @@ func TestDownloadZipFileWithBadRepoValues(t *testing.T) {
315319
}
316320

317321
for _, tc := range cases {
322+
logger := GetProjectLogger()
318323
gitHubCommits := []GitHubCommit{
319324
GitHubCommit{
320325
Repo: GitHubRepo{
@@ -333,7 +338,7 @@ func TestDownloadZipFileWithBadRepoValues(t *testing.T) {
333338
}
334339
for _, gitHubCommit := range gitHubCommits {
335340

336-
_, err := downloadGithubZipFile(gitHubCommit, tc.githubToken, tc.instance)
341+
_, err := downloadGithubZipFile(logger, gitHubCommit, tc.githubToken, tc.instance)
337342
if err == nil && err.errorCode != 500 {
338343
t.Fatalf("Expected error for bad repo values: %s/%s:%s", tc.repoOwner, tc.repoName, tc.gitTag)
339344
}

github.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
"github.com/dustin/go-humanize"
1515
"github.com/hashicorp/go-version"
16+
"github.com/sirupsen/logrus"
1617
)
1718

1819
type GitHubRepo struct {
@@ -75,7 +76,7 @@ type GitHubReleaseAsset struct {
7576
Name string
7677
}
7778

78-
func ParseUrlIntoGithubInstance(repoUrl string, apiv string) (GitHubInstance, *FetchError) {
79+
func ParseUrlIntoGithubInstance(logger *logrus.Logger, repoUrl string, apiv string) (GitHubInstance, *FetchError) {
7980
var instance GitHubInstance
8081

8182
u, err := url.Parse(repoUrl)
@@ -86,7 +87,7 @@ func ParseUrlIntoGithubInstance(repoUrl string, apiv string) (GitHubInstance, *F
8687
baseUrl := u.Host
8788
apiUrl := "api.github.com"
8889
if baseUrl != "github.com" && baseUrl != "www.github.com" {
89-
fmt.Printf("Assuming GitHub Enterprise since the provided url (%s) does not appear to be for GitHub.com\n", repoUrl)
90+
logger.Infof("Assuming GitHub Enterprise since the provided url (%s) does not appear to be for GitHub.com\n", repoUrl)
9091
apiUrl = baseUrl + "/api/" + apiv
9192
}
9293

github_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package main
22

33
import (
4-
"github.com/stretchr/testify/require"
54
"io/ioutil"
65
"os"
76
"reflect"
87
"testing"
8+
9+
"github.com/stretchr/testify/require"
910
)
1011

1112
func TestGetListOfReleasesFromGitHubRepo(t *testing.T) {
@@ -146,7 +147,8 @@ func TestParseUrlIntoGithubInstance(t *testing.T) {
146147
}
147148

148149
for _, tc := range cases {
149-
inst, err := ParseUrlIntoGithubInstance(tc.repoUrl, tc.apiv)
150+
logger := GetProjectLogger()
151+
inst, err := ParseUrlIntoGithubInstance(logger, tc.repoUrl, tc.apiv)
150152
if err != nil {
151153
t.Fatalf("error extracting url %s into a GitHubRepo struct: %s", tc.repoUrl, err)
152154
}

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ go 1.14
44

55
require (
66
github.com/dustin/go-humanize v1.0.0
7+
github.com/gruntwork-io/gruntwork-cli v0.7.2
78
github.com/hashicorp/go-version v1.2.1
9+
github.com/kr/pretty v0.2.0 // indirect
10+
github.com/sirupsen/logrus v1.6.0
811
github.com/stretchr/testify v1.6.1
12+
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 // indirect
13+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 // indirect
914
gopkg.in/urfave/cli.v1 v1.20.0
1015
)

go.sum

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,55 @@
1+
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
2+
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
3+
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
14
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
25
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
6+
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
7+
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
38
github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo=
49
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
10+
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
11+
github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q=
12+
github.com/gruntwork-io/gruntwork-cli v0.7.2 h1:aZTztE9vVxUnpNFBecOPuqk1QYl5fPPIriE15Sp3ATs=
13+
github.com/gruntwork-io/gruntwork-cli v0.7.2/go.mod h1:jp6Z7NcLF2avpY8v71fBx6hds9eOFPELSuD/VPv7w00=
514
github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI=
615
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
16+
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
17+
github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
18+
github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
19+
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
20+
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
21+
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
22+
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
23+
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
24+
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
25+
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
26+
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
27+
github.com/mattn/go-zglob v0.0.1/go.mod h1:9fxibJccNxU2cnpIKLRRFA7zX7qhkJIQWBb449FYHOo=
728
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
829
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
30+
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
31+
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
32+
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
33+
github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
34+
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
935
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
36+
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
37+
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
38+
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
1039
github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
1140
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
41+
github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
42+
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
43+
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
44+
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
45+
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4 h1:5/PjkGUjvEU5Gl6BxmvKRPpqo2uNMv4rcHBMwzk/st8=
46+
golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
1247
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
1348
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
49+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
50+
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1451
gopkg.in/urfave/cli.v1 v1.20.0 h1:NdAVW6RYxDif9DhDHaAortIu956m2c0v+09AZBPTbE0=
1552
gopkg.in/urfave/cli.v1 v1.20.0/go.mod h1:vuBzUtMdQeixQj8LVd+/98pzhxNGQoyuPBlsXHOQNO0=
53+
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
1654
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo=
1755
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

0 commit comments

Comments
 (0)