Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/dev' into v2
Browse files Browse the repository at this point in the history
  • Loading branch information
jfrog-ecosystem committed Mar 19, 2024
2 parents f062232 + 83c57bf commit f88d91f
Show file tree
Hide file tree
Showing 32 changed files with 704 additions and 146 deletions.
5 changes: 5 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: 🕵️ Audit & Scan
url: https://github.com/jfrog/jfrog-cli-security/issues/new/choose
about: Report 'jf audit', 'jf scan', 'jf curation-audit', 'jf build-scan', 'jf docker scan' and 'jf xr' issues under the jfrog-cli-security repository.
28 changes: 24 additions & 4 deletions .github/workflows/scriptTests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,11 @@ jobs:
osSuffix: ".exe"
runs-on: ${{ matrix.suite.os }}
steps:
- name: Install Go
uses: actions/setup-go@v3
with:
go-version: 1.20.x

- name: Checkout code
uses: actions/checkout@v4
with:
Expand Down Expand Up @@ -67,19 +72,34 @@ jobs:
sh build/getcli/jfrog.sh
./jfrog --version
- name: Check Windows Certificate Expiration Date
shell: pwsh
run: |
$signature = Get-AuthenticodeSignature -FilePath ./jfrog.exe
$expirationDate = $signature.SignerCertificate.NotAfter
Write-Host "Certificate Expiration Date: $expirationDate"
$daysUntilExpiration = ($expirationDate - (Get-Date)).Days
if ($daysUntilExpiration -lt 30) {
Write-Host "The JFrog CLI Windows binary's certificate will expire within $daysUntilExpiration days."
exit 1
}
if: contains( matrix.suite.os, 'windows')

- name: Test Build CLI - sh
run: |
rm ./jf
sh build/build.sh
./jf${{ matrix.suite.osSuffix }} --version
if: contains( matrix.suite.os, 'windows')
./jf --version
if: contains( matrix.suite.os, 'macos') || contains( matrix.suite.os, 'ubuntu')

- name: Test Build CLI - bat
run: |
rm ./jfrog.exe
build/build.bat
./jf${{ matrix.suite.osSuffix }} --version
./jfrog.exe --version
if: contains( matrix.suite.os, 'windows')

# Prior to the release, we set the new version in the package.json files, introducing the prereleased version.
# Prior to the release, we set the new version in the package.json files, introducing the pre-released version.
# This adjustment may result in an attempt to download a version that hasn't been published to releases.jfrog.io yet.
# To handle it, we fetch the most recent JFrog CLI release and store it in the LATEST_RELEASE step output.
- name: "Get latest release"
Expand Down
6 changes: 3 additions & 3 deletions Jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def downloadToolsCert() {
// Download the certificate files, used for signing the JFrog CLI binary.
// To update the certificate before it is expired, download the digicert_sign.zip file and follow the instructions in the README file, which is packaged inside that zip.
sh """#!/bin/bash
$builderPath rt dl ecosys-installation-files/certificates/jfrog/digicert_sign.zip "${cliWorkspace}/${jfrogCliRepoDir}build/sign/" --flat --explode
$builderPath rt dl ecosys-installation-files/certificates/jfrog/digicert_sign.zip "${jfrogCliRepoDir}build/sign/" --flat --explode
"""
}
}
Expand Down Expand Up @@ -411,8 +411,8 @@ def build(goos, goarch, pkg, fileName) {
if (goos == 'windows') {
dir("${jfrogCliRepoDir}build/sign") {
// Move the jfrog executable into the 'sign' directory, so that it is signed there.
sh "mv $jfrogCliRepoDir/$fileName ${fileName}.unsigned"
sh "docker build -t jfrog-cli-sign-tool"
sh "mv ${jfrogCliRepoDir}${fileName} ${fileName}.unsigned"
sh "docker build -t jfrog-cli-sign-tool ."
// Run the built image in order to signs the JFrog CLI binary.
sh "docker run --pull=never -v ${jfrogCliRepoDir}build/sign/:/home/frogger jfrog-cli-sign-tool -in ${fileName}.unsigned -out $fileName"
// Move the JFrog CLI binary from the 'sign' directory, back to its original location.
Expand Down
36 changes: 24 additions & 12 deletions artifactory/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ package artifactory
import (
"errors"
"fmt"
"github.com/jfrog/jfrog-cli/utils/accesstoken"
"os"
"strconv"
"strings"

"github.com/jfrog/jfrog-cli/utils/accesstoken"

"github.com/jfrog/gofrog/version"
"github.com/jfrog/jfrog-cli-core/v2/artifactory/commands/transferinstall"
"github.com/jfrog/jfrog-cli/docs/artifactory/transferplugininstall"
Expand Down Expand Up @@ -884,14 +885,17 @@ func GetCommands() []cli.Command {
},
{
Name: "access-token-create",
Hidden: true,
Aliases: []string{"atc"},
Flags: cliutils.GetCommandFlags(cliutils.ArtifactoryAccessTokenCreate),
Usage: accesstokencreate.GetDescription(),
HelpName: corecommon.CreateUsage("rt atc", accesstokencreate.GetDescription(), accesstokencreate.Usage),
UsageText: accesstokencreate.GetArguments(),
ArgsUsage: common.CreateEnvVars(),
BashComplete: corecommon.CreateBashCompletionFunc(),
Action: artifactoryAccessTokenCreateCmd,
Action: func(c *cli.Context) error {
return cliutils.RunCmdWithDeprecationWarning("atc", "rt", c, artifactoryAccessTokenCreateCmd)
},
},
{
Name: "transfer-settings",
Expand Down Expand Up @@ -944,16 +948,16 @@ func GetCommands() []cli.Command {
})
}

func getSplitCount(c *cli.Context) (splitCount int, err error) {
splitCount = cliutils.DownloadSplitCount
func getSplitCount(c *cli.Context, defaultSplitCount, maxSplitCount int) (splitCount int, err error) {
splitCount = defaultSplitCount
err = nil
if c.String("split-count") != "" {
splitCount, err = strconv.Atoi(c.String("split-count"))
if err != nil {
err = errors.New("The '--split-count' option should have a numeric value. " + cliutils.GetDocumentationMessage())
}
if splitCount > cliutils.DownloadMaxSplitCount {
err = errors.New("The '--split-count' option value is limited to a maximum of " + strconv.Itoa(cliutils.DownloadMaxSplitCount) + ".")
if splitCount > maxSplitCount {
err = errors.New("The '--split-count' option value is limited to a maximum of " + strconv.Itoa(maxSplitCount) + ".")
}
if splitCount < 0 {
err = errors.New("the '--split-count' option cannot have a negative value")
Expand All @@ -962,10 +966,10 @@ func getSplitCount(c *cli.Context) (splitCount int, err error) {
return
}

func getMinSplit(c *cli.Context) (minSplitSize int64, err error) {
minSplitSize = cliutils.DownloadMinSplitKb
if c.String("min-split") != "" {
minSplitSize, err = strconv.ParseInt(c.String("min-split"), 10, 64)
func getMinSplit(c *cli.Context, defaultMinSplit int64) (minSplitSize int64, err error) {
minSplitSize = defaultMinSplit
if c.String(cliutils.MinSplit) != "" {
minSplitSize, err = strconv.ParseInt(c.String(cliutils.MinSplit), 10, 64)
if err != nil {
err = errors.New("The '--min-split' option should have a numeric value. " + cliutils.GetDocumentationMessage())
return 0, err
Expand Down Expand Up @@ -2633,11 +2637,11 @@ func createDefaultDownloadSpec(c *cli.Context) (*spec.SpecFiles, error) {

func createDownloadConfiguration(c *cli.Context) (downloadConfiguration *utils.DownloadConfiguration, err error) {
downloadConfiguration = new(utils.DownloadConfiguration)
downloadConfiguration.MinSplitSize, err = getMinSplit(c)
downloadConfiguration.MinSplitSize, err = getMinSplit(c, cliutils.DownloadMinSplitKb)
if err != nil {
return nil, err
}
downloadConfiguration.SplitCount, err = getSplitCount(c)
downloadConfiguration.SplitCount, err = getSplitCount(c, cliutils.DownloadSplitCount, cliutils.DownloadMaxSplitCount)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -2711,6 +2715,14 @@ func fixWinPathsForDownloadCmd(uploadSpec *spec.SpecFiles, c *cli.Context) {

func createUploadConfiguration(c *cli.Context) (uploadConfiguration *utils.UploadConfiguration, err error) {
uploadConfiguration = new(utils.UploadConfiguration)
uploadConfiguration.MinSplitSizeMB, err = getMinSplit(c, cliutils.UploadMinSplitMb)
if err != nil {
return nil, err
}
uploadConfiguration.SplitCount, err = getSplitCount(c, cliutils.UploadSplitCount, cliutils.UploadMaxSplitCount)
if err != nil {
return nil, err
}
uploadConfiguration.Threads, err = cliutils.GetThreadsCount(c)
if err != nil {
return nil, err
Expand Down
36 changes: 34 additions & 2 deletions artifactory/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@ package artifactory

import (
"bytes"
"path/filepath"
"testing"

commonCliUtils "github.com/jfrog/jfrog-cli-core/v2/common/cliutils"
"github.com/jfrog/jfrog-cli-core/v2/common/spec"
"github.com/jfrog/jfrog-cli/utils/cliutils"
"github.com/jfrog/jfrog-cli/utils/tests"
"github.com/stretchr/testify/assert"
"github.com/urfave/cli"
"path/filepath"
"testing"
)

func TestPrepareSearchDownloadDeleteCommands(t *testing.T) {
Expand Down Expand Up @@ -119,3 +122,32 @@ func assertGenericCommand(t *testing.T, err error, buffer *bytes.Buffer, expectE
func getSpecPath(spec string) string {
return filepath.Join("..", "testdata", "filespecs", spec)
}

var createUploadConfigurationCases = []struct {
name string
flags []string
expectedMinSplit int64
expectedSplitCount int
expectedThreads int
expectedDeb string
}{
{"empty", []string{}, cliutils.UploadMinSplitMb, cliutils.UploadSplitCount, commonCliUtils.Threads, ""},
{"min-split", []string{"min-split=101"}, 101, cliutils.UploadSplitCount, commonCliUtils.Threads, ""},
{"split-count", []string{"split-count=6"}, cliutils.UploadMinSplitMb, 6, commonCliUtils.Threads, ""},
{"threads", []string{"threads=6"}, cliutils.UploadMinSplitMb, cliutils.UploadSplitCount, 6, ""},
{"deb", []string{"deb=jammy/main/i386"}, cliutils.UploadMinSplitMb, cliutils.UploadSplitCount, commonCliUtils.Threads, "jammy/main/i386"},
}

func TestCreateUploadConfiguration(t *testing.T) {
for _, testCase := range createUploadConfigurationCases {
t.Run(testCase.name, func(t *testing.T) {
context, _ := tests.CreateContext(t, testCase.flags, []string{})
uploadConfiguration, err := createUploadConfiguration(context)
assert.NoError(t, err)
assert.Equal(t, testCase.expectedMinSplit, uploadConfiguration.MinSplitSizeMB)
assert.Equal(t, testCase.expectedSplitCount, uploadConfiguration.SplitCount)
assert.Equal(t, testCase.expectedThreads, uploadConfiguration.Threads)
assert.Equal(t, testCase.expectedDeb, uploadConfiguration.Deb)
})
}
}
2 changes: 1 addition & 1 deletion artifactory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4521,7 +4521,7 @@ func TestArtifactoryDeleteExcludeProps(t *testing.T) {
initArtifactoryTest(t, "")

// Upload files
specFile, err := tests.CreateSpec(tests.UploadWithPropsSpecdeleteExcludeProps)
specFile, err := tests.CreateSpec(tests.UploadWithPropsSpecDeleteExcludeProps)
assert.NoError(t, err)
runRt(t, "upload", "--spec="+specFile, "--recursive")

Expand Down
2 changes: 1 addition & 1 deletion build/npm/v2-jf/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion build/npm/v2-jf/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jfrog-cli-v2-jf",
"version": "2.53.2",
"version": "2.54.0",
"description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸",
"homepage": "https://github.com/jfrog/jfrog-cli",
"preferGlobal": true,
Expand Down
2 changes: 1 addition & 1 deletion build/npm/v2/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion build/npm/v2/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "jfrog-cli-v2",
"version": "2.53.2",
"version": "2.54.0",
"description": "🐸 Command-line interface for JFrog Artifactory, Xray, Distribution, Pipelines and Mission Control 🐸",
"homepage": "https://github.com/jfrog/jfrog-cli",
"preferGlobal": true,
Expand Down
2 changes: 1 addition & 1 deletion distribution_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -598,7 +598,7 @@ func TestDistributeSyncTimeout(t *testing.T) {
if r.RequestURI == "/api/v1/release_bundle/"+tests.BundleName+"/"+bundleVersion+"/distribution/"+trackerId {
statusRequestsReceived++
w.WriteHeader(http.StatusOK)
content, err := json.Marshal(distributionServices.DistributionStatusResponse{Status: distributionServices.InProgress})
content, err := json.Marshal(distribution.DistributionStatusResponse{Status: distribution.InProgress})
assert.NoError(t, err)
_, err = w.Write(content)
assert.NoError(t, err)
Expand Down
20 changes: 20 additions & 0 deletions docs/lifecycle/deletelocal/help.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package deletelocal

var Usage = []string{"rbdell [command options] <release bundle name> <release bundle version>",
"rbdell [command options] <release bundle name> <release bundle version> <environment>"}

func GetDescription() string {
return "Delete all release bundle promotions to an environment or delete a release bundle locally altogether."
}

func GetArguments() string {
return ` release bundle name
Name of the Release Bundle to delete locally.
release bundle version
Version of the Release Bundle to delete locally.
environment
If provided, all promotions to this environment are deleted.
Otherwise, the release bundle is deleted locally with all its promotions.`
}
15 changes: 15 additions & 0 deletions docs/lifecycle/deleteremote/help.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package deleteremote

var Usage = []string{"rbdelr [command options] <release bundle name> <release bundle version>"}

func GetDescription() string {
return "Delete a release bundle remotely."
}

func GetArguments() string {
return ` release bundle name
Name of the Release Bundle to delete remotely.
release bundle version
Version of the Release Bundle to delete remotely.`
}
22 changes: 10 additions & 12 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ require (
github.com/go-git/go-git/v5 v5.11.0
github.com/gocarina/gocsv v0.0.0-20231116093920-b87c2d0e983a
github.com/jfrog/archiver/v3 v3.6.0
github.com/jfrog/build-info-go v1.9.23
github.com/jfrog/gofrog v1.6.0
github.com/jfrog/jfrog-cli-core/v2 v2.48.1
github.com/jfrog/jfrog-cli-security v1.0.3
github.com/jfrog/jfrog-client-go v1.37.1
github.com/jfrog/build-info-go v1.9.24
github.com/jfrog/gofrog v1.6.3
github.com/jfrog/jfrog-cli-core/v2 v2.49.0
github.com/jfrog/jfrog-cli-security v1.0.4
github.com/jfrog/jfrog-client-go v1.38.0
github.com/jszwec/csvutil v1.10.0
github.com/stretchr/testify v1.8.4
github.com/testcontainers/testcontainers-go v0.23.0
Expand Down Expand Up @@ -124,18 +124,16 @@ require (
golang.org/x/tools v0.18.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/grpc v1.59.0 // indirect
google.golang.org/protobuf v1.31.0 // indirect
google.golang.org/protobuf v1.33.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)

// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240225151519-de88b95a3824
// replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 dev

// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240225150756-e5fed3788eca
// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go dev

// replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.4-0.20240225141439-cc8b9f3d1962
// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go dev

// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20240225113943-096bf22ca54c

// replace github.com/jfrog/gofrog => github.com/jfrog/gofrog v1.3.3-0.20231223133729-ef57bd08cedc
// replace github.com/jfrog/gofrog => github.com/jfrog/gofrog dev
24 changes: 12 additions & 12 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -121,18 +121,18 @@ github.com/jedib0t/go-pretty/v6 v6.5.4 h1:gOGo0613MoqUcf0xCj+h/V3sHDaZasfv152G6/
github.com/jedib0t/go-pretty/v6 v6.5.4/go.mod h1:5LQIxa52oJ/DlDSLv0HEkWOFMDGoWkJb9ss5KqPpJBg=
github.com/jfrog/archiver/v3 v3.6.0 h1:OVZ50vudkIQmKMgA8mmFF9S0gA47lcag22N13iV3F1w=
github.com/jfrog/archiver/v3 v3.6.0/go.mod h1:fCAof46C3rAXgZurS8kNRNdSVMKBbZs+bNNhPYxLldI=
github.com/jfrog/build-info-go v1.9.23 h1:+TwUIBEJwRvz9skR8xBfY5ti8Vl4Z6iMCkFbkclnEN0=
github.com/jfrog/build-info-go v1.9.23/go.mod h1:QHcKuesY4MrBVBuEwwBz4uIsX6mwYuMEDV09ng4AvAU=
github.com/jfrog/gofrog v1.6.0 h1:jOwb37nHY2PnxePNFJ6e6279Pgkr3di05SbQQw47Mq8=
github.com/jfrog/gofrog v1.6.0/go.mod h1:SZ1EPJUruxrVGndOzHd+LTiwWYKMlHqhKD+eu+v5Hqg=
github.com/jfrog/build-info-go v1.9.24 h1:MjT+4bYecbNQ+dbLczg0lkE5DoLAhdyrF0cRXtnEJqI=
github.com/jfrog/build-info-go v1.9.24/go.mod h1:CaCKqcg3V2W9/ZysE4ZvXZMgsvunclhjrTTQQGp3CzM=
github.com/jfrog/gofrog v1.6.3 h1:F7He0+75HcgCe6SGTSHLFCBDxiE2Ja0tekvvcktW6wc=
github.com/jfrog/gofrog v1.6.3/go.mod h1:SZ1EPJUruxrVGndOzHd+LTiwWYKMlHqhKD+eu+v5Hqg=
github.com/jfrog/jfrog-apps-config v1.0.1 h1:mtv6k7g8A8BVhlHGlSveapqf4mJfonwvXYLipdsOFMY=
github.com/jfrog/jfrog-apps-config v1.0.1/go.mod h1:8AIIr1oY9JuH5dylz2S6f8Ym2MaadPLR6noCBO4C22w=
github.com/jfrog/jfrog-cli-core/v2 v2.48.1 h1:rRqI82btSFKFStGd7uEiheeBAuEjrw+ZZbE1abaKUBU=
github.com/jfrog/jfrog-cli-core/v2 v2.48.1/go.mod h1:9aZHtR9x7s9VUa5AalOjJkxMMPSgxXgQ5hdU3vzMwcs=
github.com/jfrog/jfrog-cli-security v1.0.3 h1:TUfPmMEavLZzxvHJSzuXg1m9OQolGL/atE8cRbuPvls=
github.com/jfrog/jfrog-cli-security v1.0.3/go.mod h1:NHmNHYlF6g4QSDyTQ3yUM57+WXZQfqskc2C1Mxj/FQY=
github.com/jfrog/jfrog-client-go v1.37.1 h1:BqIWGPajC5vhUo5dcQ9KEJr0EVANr/O4cfEqRYvzvRg=
github.com/jfrog/jfrog-client-go v1.37.1/go.mod h1:y+zeO0LeT2uHoHs4/fXHrm5dfF02bg6Dw3cNJxgJ5LY=
github.com/jfrog/jfrog-cli-core/v2 v2.49.0 h1:HhhwmenyAzRNXUY4KNHKmRH9fcaohCzvcWfzLx/Lt5M=
github.com/jfrog/jfrog-cli-core/v2 v2.49.0/go.mod h1:t7SigeX0Fbzsv0RIDGKkYnNQrwgf2cqIfoASoo5qZ2A=
github.com/jfrog/jfrog-cli-security v1.0.4 h1:wJwvpaozhzvMCwJA/puU5jQCnjFPqMUeZAntndgYuB0=
github.com/jfrog/jfrog-cli-security v1.0.4/go.mod h1:jtRSzr/E2s7LnwUzKX5w4vtJxHFHCKGmuo8qm8HSy2o=
github.com/jfrog/jfrog-client-go v1.38.0 h1:0QP4/dSmJe0oYUrAqzoPDpGdJHcrOeq9mycnb0pSxqQ=
github.com/jfrog/jfrog-client-go v1.38.0/go.mod h1:EHRLxpu0pIT7+ulYDNQ7IeieYBHMQeEPr8CoBHoJzQY=
github.com/jszwec/csvutil v1.10.0 h1:upMDUxhQKqZ5ZDCs/wy+8Kib8rZR8I8lOR34yJkdqhI=
github.com/jszwec/csvutil v1.10.0/go.mod h1:/E4ONrmGkwmWsk9ae9jpXnv9QT8pLHEPcCirMFhxG9I=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
Expand Down Expand Up @@ -392,8 +392,8 @@ google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk=
google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98=
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
Loading

0 comments on commit f88d91f

Please sign in to comment.