diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index f2a783902..5765ee044 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -38,6 +38,17 @@ jobs:
with:
dotnet-version: '6.x'
+ # Install Mono on Ubuntu to run nuget.exe (due to this issue on Ubuntu 24 that hasn't been fixed yet - https://github.com/NuGet/setup-nuget/issues/168)
+ - name: Install Mono on Ubuntu
+ if: matrix.os == 'ubuntu'
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y apt-transport-https dirmngr gnupg ca-certificates
+ sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
+ echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list
+ sudo apt-get update
+ sudo apt-get install -y mono-complete
+
- name: Setup Go with cache
uses: jfrog/.github/actions/install-go-with-cache@main
diff --git a/artifactory/commands/dotnet/dotnetcommand.go b/artifactory/commands/dotnet/dotnetcommand.go
index 3f83a14d4..57cd73d4f 100644
--- a/artifactory/commands/dotnet/dotnetcommand.go
+++ b/artifactory/commands/dotnet/dotnetcommand.go
@@ -19,7 +19,8 @@ import (
)
const (
- SourceName = "JFrogArtifactory"
+ // SourceName should match the one in the config file template.
+ SourceName = "JFrogCli"
configFilePattern = "jfrog.cli.nuget."
dotnetTestError = `the command failed with an error.
@@ -30,14 +31,16 @@ The initial error is:
)
type DotnetCommand struct {
- toolchainType dotnet.ToolchainType
- subCommand string
- argAndFlags []string
- repoName string
- solutionPath string
- useNugetV2 bool
- buildConfiguration *commonBuild.BuildConfiguration
- serverDetails *config.ServerDetails
+ toolchainType dotnet.ToolchainType
+ subCommand string
+ argAndFlags []string
+ repoName string
+ solutionPath string
+ useNugetV2 bool
+ // By default, package sources are required to use HTTPS. This option allows sources to use HTTP.
+ allowInsecureConnections bool
+ buildConfiguration *commonBuild.BuildConfiguration
+ serverDetails *config.ServerDetails
}
func (dc *DotnetCommand) SetServerDetails(serverDetails *config.ServerDetails) *DotnetCommand {
@@ -70,6 +73,11 @@ func (dc *DotnetCommand) SetUseNugetV2(useNugetV2 bool) *DotnetCommand {
return dc
}
+func (dc *DotnetCommand) SetAllowInsecureConnections(allowInsecureConnections bool) *DotnetCommand {
+ dc.allowInsecureConnections = allowInsecureConnections
+ return dc
+}
+
func (dc *DotnetCommand) SetArgAndFlags(argAndFlags []string) *DotnetCommand {
dc.argAndFlags = argAndFlags
return dc
@@ -242,7 +250,7 @@ func (dc *DotnetCommand) prepareConfigFileIfNeeded() (cleanup func() error, err
return fileutils.RemoveTempDir(tempDirPath)
}
- configFile, err := InitNewConfig(tempDirPath, dc.repoName, dc.serverDetails, dc.useNugetV2)
+ configFile, err := InitNewConfig(tempDirPath, dc.repoName, dc.serverDetails, dc.useNugetV2, dc.allowInsecureConnections)
if err == nil {
dc.argAndFlags = append(dc.argAndFlags, dc.GetToolchain().GetTypeFlagPrefix()+"configfile", configFile.Name())
}
@@ -269,7 +277,7 @@ func getFlagValueIfExists(cmdFlag string, argAndFlags []string) (string, error)
}
// InitNewConfig is used when neither of the flags were provided, and we need to init our own config.
-func InitNewConfig(configDirPath, repoName string, server *config.ServerDetails, useNugetV2 bool) (configFile *os.File, err error) {
+func InitNewConfig(configDirPath, repoName string, server *config.ServerDetails, useNugetV2, allowInsecureConnections bool) (configFile *os.File, err error) {
// Initializing a new NuGet config file that NuGet will use into a temp file
configFile, err = os.CreateTemp(configDirPath, configFilePattern)
if errorutils.CheckError(err) != nil {
@@ -283,12 +291,12 @@ func InitNewConfig(configDirPath, repoName string, server *config.ServerDetails,
// We would prefer to write the NuGet configuration using the `nuget add source` command,
// but the NuGet configuration utility doesn't currently allow setting protocolVersion.
// Until that is supported, the templated method must be used.
- err = addSourceToNugetTemplate(configFile, server, useNugetV2, repoName)
+ err = addSourceToNugetTemplate(configFile, server, useNugetV2, repoName, allowInsecureConnections)
return
}
// Adds a source to the nuget config template
-func addSourceToNugetTemplate(configFile *os.File, server *config.ServerDetails, useNugetV2 bool, repoName string) error {
+func addSourceToNugetTemplate(configFile *os.File, server *config.ServerDetails, useNugetV2 bool, repoName string, allowInsecureConnections bool) error {
sourceUrl, user, password, err := GetSourceDetails(server, repoName, useNugetV2)
if err != nil {
return err
@@ -301,7 +309,7 @@ func addSourceToNugetTemplate(configFile *os.File, server *config.ServerDetails,
}
// Format the templates
- _, err = fmt.Fprintf(configFile, dotnet.ConfigFileFormat, sourceUrl, protoVer, user, password)
+ _, err = fmt.Fprintf(configFile, dotnet.ConfigFileFormat, sourceUrl, protoVer, allowInsecureConnections, user, password)
return err
}
diff --git a/artifactory/commands/dotnet/dotnetcommand_test.go b/artifactory/commands/dotnet/dotnetcommand_test.go
index e2aa89f99..f64af2bbd 100644
--- a/artifactory/commands/dotnet/dotnetcommand_test.go
+++ b/artifactory/commands/dotnet/dotnetcommand_test.go
@@ -74,7 +74,7 @@ func TestInitNewConfig(t *testing.T) {
User: "user",
Password: "pass",
}
- configFile, err := InitNewConfig(tmpDir, repoName, server, false)
+ configFile, err := InitNewConfig(tmpDir, repoName, server, false, true)
assert.NoError(t, err)
f, err := os.Open(configFile.Name())
assert.NoError(t, err)
@@ -87,7 +87,7 @@ func TestInitNewConfig(t *testing.T) {
assert.Equal(t, `
-
+
@@ -98,7 +98,7 @@ func TestInitNewConfig(t *testing.T) {
`, string(buf[:n]))
server.Password = ""
server.AccessToken = "abc123"
- configFile, err = InitNewConfig(tmpDir, repoName, server, true)
+ configFile, err = InitNewConfig(tmpDir, repoName, server, true, true)
assert.NoError(t, err)
updatedConfigFile, err := os.Open(configFile.Name())
assert.NoError(t, err)
@@ -111,7 +111,7 @@ func TestInitNewConfig(t *testing.T) {
assert.Equal(t, `
-
+
@@ -164,11 +164,12 @@ func testPrepareDotnetBuildInfoModule(t *testing.T, subCommand string, flags []s
}()
module := createNewDotnetModule(t, tmpDir)
cmd := DotnetCommand{
- toolchainType: dotnet.DotnetCore,
- subCommand: subCommand,
- argAndFlags: flags,
- buildConfiguration: buildUtils.NewBuildConfiguration("", "", "mod", ""),
- serverDetails: &config.ServerDetails{ArtifactoryUrl: "https://my-instance.jfrog.io"},
+ toolchainType: dotnet.DotnetCore,
+ subCommand: subCommand,
+ argAndFlags: flags,
+ buildConfiguration: buildUtils.NewBuildConfiguration("", "", "mod", ""),
+ serverDetails: &config.ServerDetails{ArtifactoryUrl: "https://my-instance.jfrog.io"},
+ allowInsecureConnections: true,
}
callbackFunc, err := cmd.prepareDotnetBuildInfoModule(module)
if !assert.NoError(t, err) {
diff --git a/common/spec/specfiles.go b/common/spec/specfiles.go
index 74efc8b88..c1e88880b 100644
--- a/common/spec/specfiles.go
+++ b/common/spec/specfiles.go
@@ -2,7 +2,6 @@ package spec
import (
"encoding/json"
-
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
"github.com/jfrog/jfrog-client-go/artifactory/services/utils"
clientutils "github.com/jfrog/jfrog-client-go/utils"
@@ -39,6 +38,23 @@ func CreateSpecFromFile(specFilePath string, specVars map[string]string) (spec *
return
}
+func CreateSpecFromBuildNameAndNumber(buildName, buildNumber string) (*SpecFiles, error) {
+ if buildName == "" || buildNumber == "" {
+ return nil, errorutils.CheckErrorf("build name and build number must be provided")
+ }
+
+ buildString := buildName + "/" + buildNumber
+ specFile := &SpecFiles{
+ Files: []File{
+ {
+ Build: buildString,
+ },
+ },
+ }
+
+ return specFile, nil
+}
+
type File struct {
Aql utils.Aql
PathMapping utils.PathMapping
diff --git a/common/spec/specfiles_test.go b/common/spec/specfiles_test.go
new file mode 100644
index 000000000..d3f704611
--- /dev/null
+++ b/common/spec/specfiles_test.go
@@ -0,0 +1,40 @@
+package spec
+
+import (
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func TestCreateSpecFromBuildNameAndNumber(t *testing.T) {
+ t.Run("Valid Inputs", func(t *testing.T) {
+ spec, err := CreateSpecFromBuildNameAndNumber("Common-builds", "1.2.0")
+
+ assert.NoError(t, err)
+ assert.NotNil(t, spec)
+ assert.Equal(t, "Common-builds/1.2.0", spec.Files[0].Build)
+ })
+
+ t.Run("Missing Build Name", func(t *testing.T) {
+ spec, err := CreateSpecFromBuildNameAndNumber("", "1.2.0")
+
+ assert.Error(t, err)
+ assert.Nil(t, spec)
+ assert.EqualError(t, err, "build name and build number must be provided")
+ })
+
+ t.Run("Missing Build Number", func(t *testing.T) {
+ spec, err := CreateSpecFromBuildNameAndNumber("Common-builds", "")
+
+ assert.Error(t, err)
+ assert.Nil(t, spec)
+ assert.EqualError(t, err, "build name and build number must be provided")
+ })
+
+ t.Run("Empty Build Name and Build Number", func(t *testing.T) {
+ spec, err := CreateSpecFromBuildNameAndNumber("", "")
+
+ assert.Error(t, err)
+ assert.Nil(t, spec)
+ assert.EqualError(t, err, "build name and build number must be provided")
+ })
+}
diff --git a/general/login/login.go b/general/login/login.go
index 589651987..9bd4b47e0 100644
--- a/general/login/login.go
+++ b/general/login/login.go
@@ -1,6 +1,7 @@
package login
import (
+ "fmt"
"github.com/jfrog/jfrog-cli-core/v2/common/commands"
"github.com/jfrog/jfrog-cli-core/v2/general"
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
@@ -32,21 +33,22 @@ func (lc *LoginCommand) Run() error {
}
func newConfLogin() error {
- platformUrl, err := promptPlatformUrl()
- if err != nil {
- return err
- }
+ platformUrl := promptPlatformUrl()
newServer := config.ServerDetails{Url: platformUrl}
return general.ConfigServerWithDeducedId(&newServer, true, true)
}
-func promptPlatformUrl() (string, error) {
+func promptPlatformUrl() string {
var platformUrl string
- ioutils.ScanFromConsole("Enter your JFrog Platform URL", &platformUrl, "")
- if platformUrl == "" {
- return "", errorutils.CheckErrorf("providing JFrog Platform URL is mandatory")
+ // Loop until a non-empty platformUrl is entered
+ for {
+ ioutils.ScanFromConsole("Enter your JFrog Platform URL", &platformUrl, "")
+ if platformUrl != "" {
+ break
+ }
+ fmt.Println("The JFrog Platform URL cannot be empty. Please try again.")
}
- return platformUrl, nil
+ return platformUrl
}
func existingConfLogin(configurations []*config.ServerDetails) error {
diff --git a/go.mod b/go.mod
index 88b7368e4..e9de07281 100644
--- a/go.mod
+++ b/go.mod
@@ -11,22 +11,22 @@ require (
github.com/gocarina/gocsv v0.0.0-20240520201108-78e41c74b4b1
github.com/google/uuid v1.6.0
github.com/gookit/color v1.5.4
- github.com/jedib0t/go-pretty/v6 v6.6.1
- github.com/jfrog/build-info-go v1.10.5
+ github.com/jedib0t/go-pretty/v6 v6.6.3
+ github.com/jfrog/build-info-go v1.10.6
github.com/jfrog/gofrog v1.7.6
- github.com/jfrog/jfrog-client-go v1.48.0
+ github.com/jfrog/jfrog-client-go v1.48.3
github.com/magiconair/properties v1.8.7
github.com/manifoldco/promptui v0.9.0
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c
github.com/spf13/viper v1.19.0
- github.com/stretchr/testify v1.9.0
+ github.com/stretchr/testify v1.10.0
github.com/urfave/cli v1.22.16
github.com/vbauerster/mpb/v8 v8.8.3
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f
golang.org/x/mod v0.22.0
- golang.org/x/sync v0.9.0
- golang.org/x/term v0.26.0
- golang.org/x/text v0.20.0
+ golang.org/x/sync v0.10.0
+ golang.org/x/term v0.27.0
+ golang.org/x/text v0.21.0
gopkg.in/yaml.v3 v3.0.1
)
@@ -88,9 +88,9 @@ require (
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
go.uber.org/atomic v1.9.0 // indirect
go.uber.org/multierr v1.9.0 // indirect
- golang.org/x/crypto v0.29.0 // indirect
+ golang.org/x/crypto v0.31.0 // indirect
golang.org/x/net v0.31.0 // indirect
- golang.org/x/sys v0.27.0 // indirect
+ golang.org/x/sys v0.28.0 // indirect
golang.org/x/tools v0.27.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/warnings.v0 v0.1.2 // indirect
@@ -98,6 +98,6 @@ require (
// replace github.com/jfrog/jfrog-client-go => github.com/eyalbe4/jfrog-client-go v1.28.1-0.20241103083749-45c13ff7fe16
-// replace github.com/jfrog/build-info-go => github.com/galusben/build-info-go v0.0.0-20240930113238-ac3b31030284
+// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd
// replace github.com/jfrog/gofrog => github.com/jfrog/gofrog v1.3.3-0.20231223133729-ef57bd08cedc
diff --git a/go.sum b/go.sum
index 26c80cd3a..74666008c 100644
--- a/go.sum
+++ b/go.sum
@@ -85,16 +85,16 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A=
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo=
-github.com/jedib0t/go-pretty/v6 v6.6.1 h1:iJ65Xjb680rHcikRj6DSIbzCex2huitmc7bDtxYVWyc=
-github.com/jedib0t/go-pretty/v6 v6.6.1/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E=
+github.com/jedib0t/go-pretty/v6 v6.6.3 h1:nGqgS0tgIO1Hto47HSaaK4ac/I/Bu7usmdD3qvs0WvM=
+github.com/jedib0t/go-pretty/v6 v6.6.3/go.mod h1:zbn98qrYlh95FIhwwsbIip0LYpwSG8SUOScs+v9/t0E=
github.com/jfrog/archiver/v3 v3.6.1 h1:LOxnkw9pOn45DzCbZNFV6K0+6dCsQ0L8mR3ZcujO5eI=
github.com/jfrog/archiver/v3 v3.6.1/go.mod h1:VgR+3WZS4N+i9FaDwLZbq+jeU4B4zctXL+gL4EMzfLw=
-github.com/jfrog/build-info-go v1.10.5 h1:cW03JlPlKv7RMUU896uLUxyLWXAmCgR5Y5QX0fwgz0Q=
-github.com/jfrog/build-info-go v1.10.5/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
+github.com/jfrog/build-info-go v1.10.6 h1:zH1ZhXlVfi5DlFyunygHjrdOcnv5qxfeLqmsfD4+lc4=
+github.com/jfrog/build-info-go v1.10.6/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
-github.com/jfrog/jfrog-client-go v1.48.0 h1:hx5B7+Wnobmzq4aFVZtALtbEVDFcjpn0Wb4q2m6H4KU=
-github.com/jfrog/jfrog-client-go v1.48.0/go.mod h1:1a7bmQHkRmPEza9wva2+WVrYzrGbosrMymq57kyG5gU=
+github.com/jfrog/jfrog-client-go v1.48.3 h1:HJpKGul0f/S2i7Uf7K/GwS1EUGiirt1LWXL1lanKNhU=
+github.com/jfrog/jfrog-client-go v1.48.3/go.mod h1:1a7bmQHkRmPEza9wva2+WVrYzrGbosrMymq57kyG5gU=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
@@ -191,8 +191,9 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
-github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
github.com/terminalstatic/go-xsd-validate v0.1.5 h1:RqpJnf6HGE2CB/lZB1A8BYguk8uRtcvYAPLCF15qguo=
@@ -223,6 +224,8 @@ go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTV
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ=
golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg=
+golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo=
golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak=
golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4=
@@ -233,6 +236,8 @@ golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ=
golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -253,12 +258,18 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.26.0 h1:WEQa6V3Gja/BhNxg540hBip/kkaYtRg3cxg4oXSw4AU=
golang.org/x/term v0.26.0/go.mod h1:Si5m1o57C5nBNQo5z1iq+XDijt21BDBDp2bK0QI8e3E=
+golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug=
golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o=
golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q=
diff --git a/plugins/components/commandcomp.go b/plugins/components/commandcomp.go
index e7401053a..361f9533c 100644
--- a/plugins/components/commandcomp.go
+++ b/plugins/components/commandcomp.go
@@ -60,6 +60,10 @@ func (c *Context) GetStringFlagValue(flagName string) string {
return c.stringFlags[flagName]
}
+func (c *Context) AddStringFlag(key, value string) {
+ c.stringFlags[key] = value
+}
+
func (c *Context) GetIntFlagValue(flagName string) (value int, err error) {
parsed, err := strconv.ParseInt(c.GetStringFlagValue(flagName), 0, 64)
if err != nil {
diff --git a/utils/coreutils/coreconsts.go b/utils/coreutils/coreconsts.go
index 9e83bc8b0..541d1feb0 100644
--- a/utils/coreutils/coreconsts.go
+++ b/utils/coreutils/coreconsts.go
@@ -67,6 +67,8 @@ var (
BuildName = "JFROG_CLI_BUILD_NAME"
BuildNumber = "JFROG_CLI_BUILD_NUMBER"
Project = "JFROG_CLI_BUILD_PROJECT"
+ SigningKey = "JFROG_CLI_SIGNING_KEY"
+ KeyAlias = "JFROG_CLI_KEY_ALIAS"
//#nosec G101
EncryptionKey = "JFROG_CLI_ENCRYPTION_KEY"
)