From 9dc70528f43008fcfc95985bcdde6696febe10b1 Mon Sep 17 00:00:00 2001 From: Robi Nino Date: Sun, 25 Feb 2024 15:40:36 +0200 Subject: [PATCH 1/4] Support release bundles deletion --- docs/lifecycle/deletelocal/help.go | 20 +++++++ docs/lifecycle/deleteremote/help.go | 15 +++++ go.mod | 6 +- go.sum | 12 ++-- lifecycle/cli.go | 92 ++++++++++++++++++++++++++++- utils/cliutils/commandsflags.go | 20 ++++++- 6 files changed, 151 insertions(+), 14 deletions(-) create mode 100644 docs/lifecycle/deletelocal/help.go create mode 100644 docs/lifecycle/deleteremote/help.go diff --git a/docs/lifecycle/deletelocal/help.go b/docs/lifecycle/deletelocal/help.go new file mode 100644 index 000000000..fe843fe4e --- /dev/null +++ b/docs/lifecycle/deletelocal/help.go @@ -0,0 +1,20 @@ +package deletelocal + +var Usage = []string{"rbdell [command options] ", + "rbdell [command options] "} + +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.` +} diff --git a/docs/lifecycle/deleteremote/help.go b/docs/lifecycle/deleteremote/help.go new file mode 100644 index 000000000..9d0264873 --- /dev/null +++ b/docs/lifecycle/deleteremote/help.go @@ -0,0 +1,15 @@ +package deleteremote + +var Usage = []string{"rbdelr [command options] "} + +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.` +} diff --git a/go.mod b/go.mod index 2f5f8962c..78e6cb51e 100644 --- a/go.mod +++ b/go.mod @@ -130,12 +130,12 @@ require ( 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.20240218115031-cc5c8b521695 +replace github.com/jfrog/jfrog-cli-core/v2 => github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240225133759-6d962fb2a10a -// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240218093454-1c352a93c23d +replace github.com/jfrog/jfrog-client-go => github.com/RobiNino/jfrog-client-go v0.0.0-20240225133441-cd1999c6fa5d // replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.2-0.20240215122147-517c589b5ada -// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20231220102935-c8776c613ad8 +replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20240222124058-bd9687a8666e // replace github.com/jfrog/gofrog => github.com/jfrog/gofrog v1.3.3-0.20231223133729-ef57bd08cedc diff --git a/go.sum b/go.sum index 77db2b40a..c5d2ece49 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,10 @@ github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7 github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240225133759-6d962fb2a10a h1:SqbBcGkufU2X4oYyNOshe6iefk0L/2TtsrkOzGTqRvA= +github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240225133759-6d962fb2a10a/go.mod h1:FeMVBhzeTy++U+K1njJMgQm/5SYsKi+J5Q5T5plo5q4= +github.com/RobiNino/jfrog-client-go v0.0.0-20240225133441-cd1999c6fa5d h1:HFpWj5aRjWNnWLOtCSh/mcjspuIAZqdQvPNxhVvnT6E= +github.com/RobiNino/jfrog-client-go v0.0.0-20240225133441-cd1999c6fa5d/go.mod h1:jcZYTyo9H4GtZ6eAYIfKm1ulxeTbshcBBA+YUbWlHNc= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= @@ -121,18 +125,14 @@ 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/build-info-go v1.8.9-0.20240222124058-bd9687a8666e h1:NzB2yvEojIhP5KIX9SeCqSljZmoiE98hBzXYvvi52D0= +github.com/jfrog/build-info-go v1.8.9-0.20240222124058-bd9687a8666e/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/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/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= diff --git a/lifecycle/cli.go b/lifecycle/cli.go index a27268cb8..a29a01882 100644 --- a/lifecycle/cli.go +++ b/lifecycle/cli.go @@ -9,6 +9,8 @@ import ( coreConfig "github.com/jfrog/jfrog-cli-core/v2/utils/config" "github.com/jfrog/jfrog-cli/docs/common" rbCreate "github.com/jfrog/jfrog-cli/docs/lifecycle/create" + rbDeleteLocal "github.com/jfrog/jfrog-cli/docs/lifecycle/deletelocal" + rbDeleteRemote "github.com/jfrog/jfrog-cli/docs/lifecycle/deleteremote" rbDistribute "github.com/jfrog/jfrog-cli/docs/lifecycle/distribute" rbPromote "github.com/jfrog/jfrog-cli/docs/lifecycle/promote" "github.com/jfrog/jfrog-cli/utils/cliutils" @@ -59,6 +61,30 @@ func GetCommands() []cli.Command { Category: lcCategory, Action: distribute, }, + { + Name: "release-bundle-delete-local", + Aliases: []string{"rbdell"}, + Flags: cliutils.GetCommandFlags(cliutils.ReleaseBundleDeleteLocal), + Usage: rbDeleteLocal.GetDescription(), + HelpName: coreCommon.CreateUsage("rbdell", rbDeleteLocal.GetDescription(), rbDeleteLocal.Usage), + UsageText: rbDeleteLocal.GetArguments(), + ArgsUsage: common.CreateEnvVars(), + BashComplete: coreCommon.CreateBashCompletionFunc(), + Category: lcCategory, + Action: deleteLocal, + }, + { + Name: "release-bundle-delete-remote", + Aliases: []string{"rbdelr"}, + Flags: cliutils.GetCommandFlags(cliutils.ReleaseBundleDeleteRemote), + Usage: rbDeleteRemote.GetDescription(), + HelpName: coreCommon.CreateUsage("rbdelr", rbDeleteRemote.GetDescription(), rbDeleteRemote.Usage), + UsageText: rbDeleteRemote.GetArguments(), + ArgsUsage: common.CreateEnvVars(), + BashComplete: coreCommon.CreateBashCompletionFunc(), + Category: lcCategory, + Action: deleteRemote, + }, }) } @@ -118,11 +144,11 @@ func promote(c *cli.Context) error { return err } - createCmd := lifecycle.NewReleaseBundlePromoteCommand().SetServerDetails(lcDetails).SetReleaseBundleName(c.Args().Get(0)). + promoteCmd := lifecycle.NewReleaseBundlePromoteCommand().SetServerDetails(lcDetails).SetReleaseBundleName(c.Args().Get(0)). SetReleaseBundleVersion(c.Args().Get(1)).SetEnvironment(c.Args().Get(2)).SetSigningKeyName(c.String(cliutils.SigningKey)). SetSync(c.Bool(cliutils.Sync)).SetReleaseBundleProject(cliutils.GetProject(c)). SetIncludeReposPatterns(splitRepos(c, cliutils.IncludeRepos)).SetExcludeReposPatterns(splitRepos(c, cliutils.ExcludeRepos)) - return commands.Exec(createCmd) + return commands.Exec(promoteCmd) } func distribute(c *cli.Context) error { @@ -150,6 +176,68 @@ func distribute(c *cli.Context) error { return commands.Exec(distributeCmd) } +func deleteLocal(c *cli.Context) error { + if show, err := cliutils.ShowCmdHelpIfNeeded(c, c.Args()); show || err != nil { + return err + } + + if c.NArg() != 2 && c.NArg() != 3 { + return cliutils.WrongNumberOfArgumentsHandler(c) + } + + lcDetails, err := createLifecycleDetailsByFlags(c) + if err != nil { + return err + } + + environment := "" + if c.NArg() == 3 { + environment = c.Args().Get(2) + } + + deleteCmd := lifecycle.NewReleaseBundleDeleteCommand(). + SetServerDetails(lcDetails). + SetReleaseBundleName(c.Args().Get(0)). + SetReleaseBundleVersion(c.Args().Get(1)). + SetEnvironment(environment). + SetQuiet(cliutils.GetQuietValue(c)). + SetReleaseBundleProject(cliutils.GetProject(c)). + SetSync(c.Bool(cliutils.Sync)) + return commands.Exec(deleteCmd) +} + +func deleteRemote(c *cli.Context) error { + if show, err := cliutils.ShowCmdHelpIfNeeded(c, c.Args()); show || err != nil { + return err + } + + if c.NArg() != 2 { + return cliutils.WrongNumberOfArgumentsHandler(c) + } + + lcDetails, err := createLifecycleDetailsByFlags(c) + if err != nil { + return err + } + + distributionRules, maxWaitMinutes, _, err := distribution.InitReleaseBundleDistributeCmd(c) + if err != nil { + return err + } + + deleteCmd := lifecycle.NewReleaseBundleRemoteDeleteCommand(). + SetServerDetails(lcDetails). + SetReleaseBundleName(c.Args().Get(0)). + SetReleaseBundleVersion(c.Args().Get(1)). + SetDistributionRules(distributionRules). + SetDryRun(c.Bool("dry-run")). + SetMaxWaitMinutes(maxWaitMinutes). + SetQuiet(cliutils.GetQuietValue(c)). + SetReleaseBundleProject(cliutils.GetProject(c)). + SetSync(c.Bool(cliutils.Sync)) + return commands.Exec(deleteCmd) +} + func validateDistributeCommand(c *cli.Context) error { if err := distribution.ValidateReleaseBundleDistributeCmd(c); err != nil { return err diff --git a/utils/cliutils/commandsflags.go b/utils/cliutils/commandsflags.go index a5fe38b87..efc82ca62 100644 --- a/utils/cliutils/commandsflags.go +++ b/utils/cliutils/commandsflags.go @@ -118,9 +118,11 @@ const ( TransferInstall = "transfer-plugin-install" // Lifecycle commands keys - ReleaseBundleCreate = "release-bundle-create" - ReleaseBundlePromote = "release-bundle-promote" - ReleaseBundleDistribute = "release-bundle-distribute" + ReleaseBundleCreate = "release-bundle-create" + ReleaseBundlePromote = "release-bundle-promote" + ReleaseBundleDistribute = "release-bundle-distribute" + ReleaseBundleDeleteLocal = "release-bundle-delete-local" + ReleaseBundleDeleteRemote = "release-bundle-delete-remote" // Access Token Create commands keys AccessTokenCreate = "access-token-create" @@ -563,6 +565,7 @@ const ( // Unique lifecycle flags lifecyclePrefix = "lc-" lcUrl = lifecyclePrefix + url + lcQuiet = lifecyclePrefix + quiet lcSync = lifecyclePrefix + Sync lcProject = lifecyclePrefix + Project Builds = "builds" @@ -1618,6 +1621,10 @@ var flagsMap = map[string]cli.Flag{ Name: url, Usage: "[Optional] JFrog platform URL.` `", }, + lcQuiet: cli.BoolFlag{ + Name: quiet, + Usage: "[Default: $CI] Set to true to skip the delete confirmation message.` `", + }, lcSync: cli.BoolFlag{ Name: Sync, Usage: "[Default: false] Set to true to run synchronously.` `", @@ -2000,6 +2007,13 @@ var commandFlags = map[string][]string{ lcUrl, user, password, accessToken, serverId, lcDryRun, DistRules, site, city, countryCodes, InsecureTls, CreateRepo, lcPathMappingPattern, lcPathMappingTarget, }, + ReleaseBundleDeleteLocal: { + lcUrl, user, password, accessToken, serverId, lcQuiet, lcSync, lcProject, + }, + ReleaseBundleDeleteRemote: { + lcUrl, user, password, accessToken, serverId, lcQuiet, lcDryRun, DistRules, site, city, countryCodes, + lcSync, maxWaitMinutes, lcProject, + }, // Mission Control's commands McConfig: { mcUrl, mcAccessToken, mcInteractive, From 5fd9d4d2ac118c5a79c974102f588c08fa025054 Mon Sep 17 00:00:00 2001 From: Robi Nino Date: Thu, 14 Mar 2024 17:52:43 +0200 Subject: [PATCH 2/4] CR comments --- utils/cliutils/commandsflags.go | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/utils/cliutils/commandsflags.go b/utils/cliutils/commandsflags.go index efc82ca62..ca398fcbb 100644 --- a/utils/cliutils/commandsflags.go +++ b/utils/cliutils/commandsflags.go @@ -564,8 +564,6 @@ const ( // Unique lifecycle flags lifecyclePrefix = "lc-" - lcUrl = lifecyclePrefix + url - lcQuiet = lifecyclePrefix + quiet lcSync = lifecyclePrefix + Sync lcProject = lifecyclePrefix + Project Builds = "builds" @@ -1617,14 +1615,6 @@ var flagsMap = map[string]cli.Flag{ Name: PreChecks, Usage: "[Default: false] Set to true to run pre-transfer checks.` `", }, - lcUrl: cli.StringFlag{ - Name: url, - Usage: "[Optional] JFrog platform URL.` `", - }, - lcQuiet: cli.BoolFlag{ - Name: quiet, - Usage: "[Default: $CI] Set to true to skip the delete confirmation message.` `", - }, lcSync: cli.BoolFlag{ Name: Sync, Usage: "[Default: false] Set to true to run synchronously.` `", @@ -1998,20 +1988,20 @@ var commandFlags = map[string][]string{ installPluginVersion, InstallPluginSrcDir, InstallPluginHomeDir, }, ReleaseBundleCreate: { - lcUrl, user, password, accessToken, serverId, lcSigningKey, lcSync, lcProject, lcBuilds, lcReleaseBundles, + platformUrl, user, password, accessToken, serverId, lcSigningKey, lcSync, lcProject, lcBuilds, lcReleaseBundles, }, ReleaseBundlePromote: { - lcUrl, user, password, accessToken, serverId, lcSigningKey, lcSync, lcProject, lcIncludeRepos, lcExcludeRepos, + platformUrl, user, password, accessToken, serverId, lcSigningKey, lcSync, lcProject, lcIncludeRepos, lcExcludeRepos, }, ReleaseBundleDistribute: { - lcUrl, user, password, accessToken, serverId, lcDryRun, DistRules, site, city, countryCodes, + platformUrl, user, password, accessToken, serverId, lcDryRun, DistRules, site, city, countryCodes, InsecureTls, CreateRepo, lcPathMappingPattern, lcPathMappingTarget, }, ReleaseBundleDeleteLocal: { - lcUrl, user, password, accessToken, serverId, lcQuiet, lcSync, lcProject, + platformUrl, user, password, accessToken, serverId, deleteQuiet, lcSync, lcProject, }, ReleaseBundleDeleteRemote: { - lcUrl, user, password, accessToken, serverId, lcQuiet, lcDryRun, DistRules, site, city, countryCodes, + platformUrl, user, password, accessToken, serverId, deleteQuiet, lcDryRun, DistRules, site, city, countryCodes, lcSync, maxWaitMinutes, lcProject, }, // Mission Control's commands From 42bbe48d3136f842722967e107dd07ae29266b2e Mon Sep 17 00:00:00 2001 From: Robi Nino Date: Thu, 14 Mar 2024 17:57:40 +0200 Subject: [PATCH 3/4] fix vet --- lifecycle_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lifecycle_test.go b/lifecycle_test.go index b25d75646..16d1f5634 100644 --- a/lifecycle_test.go +++ b/lifecycle_test.go @@ -204,7 +204,7 @@ func deleteReleaseBundle(t *testing.T, lcManager *lifecycle.LifecycleServicesMan ReleaseBundleVersion: rbVersion, } - assert.NoError(t, lcManager.DeleteReleaseBundle(rbDetails, services.CommonOptionalQueryParams{Async: false})) + assert.NoError(t, lcManager.DeleteReleaseBundleVersion(rbDetails, services.CommonOptionalQueryParams{Async: false})) // Wait after remote deleting. Can be removed once remote deleting supports sync. time.Sleep(5 * time.Second) } From 8f5fdf1ddd833f6fc4767a69a0e3dd10985183a1 Mon Sep 17 00:00:00 2001 From: Robi Nino Date: Sun, 17 Mar 2024 18:13:19 +0200 Subject: [PATCH 4/4] update go.mod --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 6b0abc323..722196ef6 100644 --- a/go.mod +++ b/go.mod @@ -130,9 +130,9 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/jfrog/jfrog-cli-core/v2 => github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240314154827-e486dcc80525 +replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240317161137-662abefabe8e -replace github.com/jfrog/jfrog-client-go => github.com/RobiNino/jfrog-client-go v0.0.0-20240314154605-3104413d65a9 +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240317160615-e419c2a9e723 replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.4-0.20240303113253-d82ecc02d9eb diff --git a/go.sum b/go.sum index d90417e30..191ccceb6 100644 --- a/go.sum +++ b/go.sum @@ -14,10 +14,6 @@ github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7 github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240314154827-e486dcc80525 h1:m8b99E7fNzp4CKdp5vgY6EAu86/zR+s8gY0OxnBX++E= -github.com/RobiNino/jfrog-cli-core/v2 v2.0.0-20240314154827-e486dcc80525/go.mod h1:7YIxeDjF+EGCVvBBZ6tb1EYA+JWFfT0u4Ibt9QVG3k8= -github.com/RobiNino/jfrog-client-go v0.0.0-20240314154605-3104413d65a9 h1:CCxtlTS2lHYnwZ09mj0hqGdCI7a80VgSOyx9m0SubiE= -github.com/RobiNino/jfrog-client-go v0.0.0-20240314154605-3104413d65a9/go.mod h1:NB8tYFgkWtn+wHsKC+aYC75aLnS6yW81d8JAFTBxsi0= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= @@ -131,8 +127,12 @@ 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.31.1-0.20240317161137-662abefabe8e h1:mmM8VzqO3Qc/bzvw4onPEoMV96QfOijnZpNMr8AOFEs= +github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240317161137-662abefabe8e/go.mod h1:EIVjqkE5U1AMpZMLhL814Xpxc5hOqbPxxGiXHeojg7A= github.com/jfrog/jfrog-cli-security v1.0.4-0.20240303113253-d82ecc02d9eb h1:JUqwNOqzwj+1oZQXY1p/xnnH97BEMfOKGG505vGVIe4= github.com/jfrog/jfrog-cli-security v1.0.4-0.20240303113253-d82ecc02d9eb/go.mod h1:pOqg/hGw6eHWNyLDHeOCyq/Ntuc+wLJTV2Z8XuwXspU= +github.com/jfrog/jfrog-client-go v1.28.1-0.20240317160615-e419c2a9e723 h1:0N/fdI2PXLjdWZieh7ib+6gb87yw3x22V7t1YZJvWOA= +github.com/jfrog/jfrog-client-go v1.28.1-0.20240317160615-e419c2a9e723/go.mod h1:NB8tYFgkWtn+wHsKC+aYC75aLnS6yW81d8JAFTBxsi0= 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=