Skip to content

Commit

Permalink
Fix release bundle creation with project (#2536)
Browse files Browse the repository at this point in the history
  • Loading branch information
RobiNino committed May 6, 2024
1 parent b17e679 commit 3f830ed
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 22 deletions.
10 changes: 5 additions & 5 deletions artifactory/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -1186,7 +1186,7 @@ func prepareDownloadCommand(c *cli.Context) (*spec.SpecFiles, error) {
var downloadSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
downloadSpec, err = cliutils.GetSpec(c, true)
downloadSpec, err = cliutils.GetSpec(c, true, true)
} else {
downloadSpec, err = createDefaultDownloadSpec(c)
}
Expand Down Expand Up @@ -1315,7 +1315,7 @@ func prepareCopyMoveCommand(c *cli.Context) (*spec.SpecFiles, error) {
var copyMoveSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
copyMoveSpec, err = cliutils.GetSpec(c, false)
copyMoveSpec, err = cliutils.GetSpec(c, false, true)
} else {
copyMoveSpec, err = createDefaultCopyMoveSpec(c)
}
Expand Down Expand Up @@ -1403,7 +1403,7 @@ func prepareDeleteCommand(c *cli.Context) (*spec.SpecFiles, error) {
var deleteSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
deleteSpec, err = cliutils.GetSpec(c, false)
deleteSpec, err = cliutils.GetSpec(c, false, true)
} else {
deleteSpec, err = createDefaultDeleteSpec(c)
}
Expand Down Expand Up @@ -1458,7 +1458,7 @@ func prepareSearchCommand(c *cli.Context) (*spec.SpecFiles, error) {
var searchSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
searchSpec, err = cliutils.GetSpec(c, false)
searchSpec, err = cliutils.GetSpec(c, false, true)
} else {
searchSpec, err = createDefaultSearchSpec(c)
}
Expand Down Expand Up @@ -1525,7 +1525,7 @@ func preparePropsCmd(c *cli.Context) (*generic.PropsCommand, error) {
var props string
if c.IsSet("spec") {
props = c.Args()[0]
propsSpec, err = cliutils.GetSpec(c, false)
propsSpec, err = cliutils.GetSpec(c, false, true)
} else {
propsSpec, err = createDefaultPropertiesSpec(c)
if c.NArg() == 1 {
Expand Down
4 changes: 2 additions & 2 deletions distribution/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func releaseBundleCreateCmd(c *cli.Context) error {
var releaseBundleCreateSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
releaseBundleCreateSpec, err = cliutils.GetSpec(c, true)
releaseBundleCreateSpec, err = cliutils.GetSpec(c, true, true)
} else {
releaseBundleCreateSpec = createDefaultReleaseBundleSpec(c)
}
Expand Down Expand Up @@ -137,7 +137,7 @@ func releaseBundleUpdateCmd(c *cli.Context) error {
var releaseBundleUpdateSpec *spec.SpecFiles
var err error
if c.IsSet("spec") {
releaseBundleUpdateSpec, err = cliutils.GetSpec(c, true)
releaseBundleUpdateSpec, err = cliutils.GetSpec(c, true, true)
} else {
releaseBundleUpdateSpec = createDefaultReleaseBundleSpec(c)
}
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ require (

replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240505160419-7173b506c6b7

replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240430132902-9d4dfaf05041
replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240505164307-d12abb9f140e

// replace github.com/jfrog/jfrog-cli-security => github.com/jfrog/jfrog-cli-security v1.0.6-0.20240408061620-c9b84da33d5e

Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -138,8 +138,8 @@ github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240505160419-7173b506c6b7 h1:C2Zl
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240505160419-7173b506c6b7/go.mod h1:2tdqY2OG3Cv5xQX4LhKM6VsJLp+TLK3Dq7DXHcqFVkg=
github.com/jfrog/jfrog-cli-security v1.1.0 h1:ifCjFJSa1D1pWyW/ADYPqnMkOddzkAT/WY4vHAufn1g=
github.com/jfrog/jfrog-cli-security v1.1.0/go.mod h1:086t7e/einVAGfBXxRdEGDKovWt67I6SqUb1rcpdiZc=
github.com/jfrog/jfrog-client-go v1.28.1-0.20240430132902-9d4dfaf05041 h1:cDTm4RxkI+RA8aNmdfM2BVxb5iCoXjLjhb+M+ReEIrE=
github.com/jfrog/jfrog-client-go v1.28.1-0.20240430132902-9d4dfaf05041/go.mod h1:FprEW0Sqhj6ZSFTFk9NCni+ovFAYMA3zCBmNX4hGXgQ=
github.com/jfrog/jfrog-client-go v1.28.1-0.20240505164307-d12abb9f140e h1:ySI3daaq/qiJ7oWZxBJjBrQozYo5tHGdkLeLBAUiCj8=
github.com/jfrog/jfrog-client-go v1.28.1-0.20240505164307-d12abb9f140e/go.mod h1:FprEW0Sqhj6ZSFTFk9NCni+ovFAYMA3zCBmNX4hGXgQ=
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
16 changes: 10 additions & 6 deletions lifecycle/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -155,12 +155,9 @@ func create(c *cli.Context) (err error) {
return err
}

var creationSpec *spec.SpecFiles
if c.IsSet("spec") {
creationSpec, err = cliutils.GetSpec(c, true)
if err != nil {
return
}
creationSpec, err := getReleaseBundleCreationSpec(c)
if err != nil {
return
}

lcDetails, err := createLifecycleDetailsByFlags(c)
Expand All @@ -175,6 +172,13 @@ func create(c *cli.Context) (err error) {
return commands.Exec(createCmd)
}

func getReleaseBundleCreationSpec(c *cli.Context) (*spec.SpecFiles, error) {
if c.IsSet("spec") {
return cliutils.GetSpec(c, true, false)
}
return nil, nil
}

func promote(c *cli.Context) error {
if show, err := cliutils.ShowCmdHelpIfNeeded(c, c.Args()); show || err != nil {
return err
Expand Down
13 changes: 13 additions & 0 deletions lifecycle/cli_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"github.com/jfrog/jfrog-cli/utils/cliutils"
"github.com/jfrog/jfrog-cli/utils/tests"
"github.com/stretchr/testify/assert"
"path/filepath"
"testing"
)

Expand Down Expand Up @@ -43,3 +44,15 @@ func TestValidateCreateReleaseBundleContext(t *testing.T) {
})
}
}

// Validates that the project option does not override the project field in the spec file.
func TestCreateReleaseBundleSpecWithProject(t *testing.T) {
projectKey := "myproj"
specFile := filepath.Join("testdata", "specfile.json")
context, _ := tests.CreateContext(t, []string{"spec=" + specFile, "project=" + projectKey}, []string{})
creationSpec, err := getReleaseBundleCreationSpec(context)
assert.NoError(t, err)
assert.Equal(t, creationSpec.Get(0).Pattern, "path/to/file")
creationSpec.Get(0).Project = ""
assert.Equal(t, projectKey, cliutils.GetProject(context))
}
7 changes: 7 additions & 0 deletions lifecycle/testdata/specfile.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"files": [
{
"pattern": "path/to/file"
}
]
}
23 changes: 17 additions & 6 deletions utils/cliutils/utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -401,19 +401,30 @@ func handleSecretInput(c *cli.Context, stringFlag, stdinFlag string) (secret str
return commonCliUtils.HandleSecretInput(stringFlag, c.String(stringFlag), stdinFlag, c.Bool(stdinFlag))
}

func GetSpec(c *cli.Context, isDownload bool) (specFiles *speccore.SpecFiles, err error) {
func GetSpec(c *cli.Context, isDownload, overrideFieldsIfSet bool) (specFiles *speccore.SpecFiles, err error) {
specFiles, err = speccore.CreateSpecFromFile(c.String("spec"), coreutils.SpecVarsStringToMap(c.String("spec-vars")))
if err != nil {
return nil, err
}
// Override spec with CLI options
if isDownload {
trimPatternPrefix(specFiles)
}
if overrideFieldsIfSet {
overrideSpecFields(c, specFiles)
}
return
}

func overrideSpecFields(c *cli.Context, specFiles *speccore.SpecFiles) {
for i := 0; i < len(specFiles.Files); i++ {
if isDownload {
specFiles.Get(i).Pattern = strings.TrimPrefix(specFiles.Get(i).Pattern, "/")
}
OverrideFieldsIfSet(specFiles.Get(i), c)
}
return
}

func trimPatternPrefix(specFiles *speccore.SpecFiles) {
for i := 0; i < len(specFiles.Files); i++ {
specFiles.Get(i).Pattern = strings.TrimPrefix(specFiles.Get(i).Pattern, "/")
}
}

func GetFileSystemSpec(c *cli.Context) (fsSpec *speccore.SpecFiles, err error) {
Expand Down

0 comments on commit 3f830ed

Please sign in to comment.