Skip to content

Commit 5b878ef

Browse files
committed
Adding 'operation' flag for the release bundle promote command
1 parent e5223ab commit 5b878ef

File tree

5 files changed

+97
-3
lines changed

5 files changed

+97
-3
lines changed

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ require (
9090
github.com/spf13/cast v1.6.0 // indirect
9191
github.com/spf13/pflag v1.0.5 // indirect
9292
github.com/stoewer/go-strcase v1.3.0 // indirect
93+
github.com/stretchr/objx v0.5.2 // indirect
9394
github.com/subosito/gotenv v1.6.0 // indirect
9495
github.com/ulikunitz/xz v0.5.12 // indirect
9596
github.com/xanzy/ssh-agent v0.3.3 // indirect
@@ -119,3 +120,5 @@ require (
119120
// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20241121100855-e7a75ceee2bd
120121

121122
// replace github.com/jfrog/gofrog => github.com/jfrog/gofrog v1.3.3-0.20231223133729-ef57bd08cedc
123+
124+
replace github.com/jfrog/jfrog-client-go => github.com/oshratZairi/jfrog-client-go v0.0.0-20250220085006-01d8636b041b

go.sum

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,6 @@ github.com/jfrog/build-info-go v1.10.9 h1:mdJ+wlLw2ReFsqC7rifJVlRYLEqYk38uXDYAOZ
112112
github.com/jfrog/build-info-go v1.10.9/go.mod h1:JcISnovFXKx3wWf3p1fcMmlPdt6adxScXvoJN4WXqIE=
113113
github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
114114
github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
115-
github.com/jfrog/jfrog-client-go v1.50.0 h1:t7v/zpLkPomHR6ZjVbPQ1WPQJd9IFKESK9Tt6phZz3k=
116-
github.com/jfrog/jfrog-client-go v1.50.0/go.mod h1:xHxwKBjPSUBd/FyCWgusfHmSWKUZTkfOZkTmntC2F5Y=
117115
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
118116
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
119117
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
@@ -170,6 +168,9 @@ github.com/onsi/ginkgo/v2 v2.14.0 h1:vSmGj2Z5YPb9JwCWT6z6ihcUvDhuXLc3sJiqd3jMKAY
170168
github.com/onsi/ginkgo/v2 v2.14.0/go.mod h1:JkUdW7JkN0V6rFvsHcJ478egV3XH9NxpD27Hal/PhZw=
171169
github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
172170
github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
171+
github.com/oshratZairi/jfrog-client-go v0.0.0-20250216115008-a06b0a541670 h1:3BOq28ewTiOtXoY949NOsBL0HyjEImfmKrwiwh6n7UQ=
172+
github.com/oshratZairi/jfrog-client-go v0.0.0-20250216115008-a06b0a541670/go.mod h1:xHxwKBjPSUBd/FyCWgusfHmSWKUZTkfOZkTmntC2F5Y=
173+
github.com/oshratZairi/jfrog-client-go v0.0.0-20250220085006-01d8636b041b/go.mod h1:hDoUcW6LZme83YNFbdSRImV+di1x0GP+Nlw7fctkwtE=
173174
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
174175
github.com/pelletier/go-toml/v2 v2.2.2/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs=
175176
github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU=
@@ -216,6 +217,7 @@ github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8w
216217
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
217218
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
218219
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
220+
github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY=
219221
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
220222
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
221223
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=

lifecycle/common.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@ type releaseBundleCmd struct {
2121
}
2222

2323
func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
24+
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
25+
return rbc.initPrerequisites()
26+
}
27+
28+
func (rbp *ReleaseBundlePromoteCommand) getPromotionPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
29+
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
30+
servicesManager, rbDetails, queryParams, err = rbp.initPrerequisites()
31+
queryParams.PromotionType = rbp.promotionType
32+
return servicesManager, rbDetails, queryParams, err
33+
}
34+
35+
func (rbc *releaseBundleCmd) initPrerequisites() (servicesManager *lifecycle.LifecycleServicesManager,
2436
rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams, err error) {
2537
servicesManager, err = utils.CreateLifecycleServiceManager(rbc.serverDetails, false)
2638
if err != nil {
@@ -34,6 +46,7 @@ func (rbc *releaseBundleCmd) getPrerequisites() (servicesManager *lifecycle.Life
3446
ProjectKey: rbc.rbProjectKey,
3547
Async: !rbc.sync,
3648
}
49+
3750
return
3851
}
3952

lifecycle/common_test.go

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package lifecycle
2+
3+
import (
4+
"github.com/jfrog/jfrog-cli-core/v2/utils/config"
5+
"github.com/jfrog/jfrog-client-go/lifecycle/services"
6+
"github.com/stretchr/testify/assert"
7+
"testing"
8+
)
9+
10+
func TestGetPrerequisites_Success(t *testing.T) {
11+
serverDetails := &config.ServerDetails{}
12+
rbCmd := &releaseBundleCmd{
13+
serverDetails: serverDetails,
14+
releaseBundleName: "testRelease",
15+
releaseBundleVersion: "1.0.0",
16+
sync: true,
17+
rbProjectKey: "project1",
18+
}
19+
20+
expectedQueryParams := services.CommonOptionalQueryParams{
21+
ProjectKey: rbCmd.rbProjectKey,
22+
Async: false,
23+
}
24+
25+
expectedRbDetails := services.ReleaseBundleDetails{
26+
ReleaseBundleName: rbCmd.releaseBundleName,
27+
ReleaseBundleVersion: rbCmd.releaseBundleVersion,
28+
}
29+
30+
servicesManager, rbDetails, queryParams, err := rbCmd.getPrerequisites()
31+
32+
assert.NoError(t, err)
33+
assert.NotNil(t, servicesManager, "Expected servicesManager to be initialized")
34+
assert.Equal(t, expectedRbDetails, rbDetails, "ReleaseBundleDetails does not match expected values")
35+
assert.Equal(t, expectedQueryParams, queryParams, "QueryParams do not match expected values")
36+
37+
}
38+
39+
func TestGetPromotionPrerequisites_Success(t *testing.T) {
40+
serverDetails := &config.ServerDetails{}
41+
rbp := &ReleaseBundlePromoteCommand{
42+
promotionType: "move",
43+
releaseBundleCmd: releaseBundleCmd{
44+
serverDetails: serverDetails,
45+
releaseBundleName: "testRelease",
46+
releaseBundleVersion: "1.0.0",
47+
sync: true,
48+
rbProjectKey: "project1",
49+
},
50+
}
51+
52+
expectedQueryParams := services.CommonOptionalQueryParams{
53+
ProjectKey: rbp.rbProjectKey,
54+
Async: false,
55+
PromotionType: rbp.promotionType,
56+
}
57+
58+
expectedRbDetails := services.ReleaseBundleDetails{
59+
ReleaseBundleName: rbp.releaseBundleName,
60+
ReleaseBundleVersion: rbp.releaseBundleVersion,
61+
}
62+
63+
servicesManager, rbDetails, queryParams, err := rbp.getPromotionPrerequisites()
64+
65+
assert.NoError(t, err)
66+
assert.NotNil(t, servicesManager, "Expected servicesManager to be initialized")
67+
assert.Equal(t, expectedRbDetails, rbDetails, "ReleaseBundleDetails do not match expected values") // Replace _ with appropriate variable.
68+
assert.Equal(t, expectedQueryParams, queryParams, "QueryParams do not match expected values")
69+
}

lifecycle/promote.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type ReleaseBundlePromoteCommand struct {
1414
environment string
1515
includeReposPatterns []string
1616
excludeReposPatterns []string
17+
promotionType string
1718
}
1819

1920
func NewReleaseBundlePromoteCommand() *ReleaseBundlePromoteCommand {
@@ -65,6 +66,11 @@ func (rbp *ReleaseBundlePromoteCommand) SetExcludeReposPatterns(excludeReposPatt
6566
return rbp
6667
}
6768

69+
func (rbp *ReleaseBundlePromoteCommand) SetPromotionType(promotionType string) *ReleaseBundlePromoteCommand {
70+
rbp.promotionType = promotionType
71+
return rbp
72+
}
73+
6874
func (rbp *ReleaseBundlePromoteCommand) CommandName() string {
6975
return "rb_promote"
7076
}
@@ -78,7 +84,8 @@ func (rbp *ReleaseBundlePromoteCommand) Run() error {
7884
return err
7985
}
8086

81-
servicesManager, rbDetails, queryParams, err := rbp.getPrerequisites()
87+
servicesManager, rbDetails, queryParams, err := rbp.getPromotionPrerequisites()
88+
8289
if err != nil {
8390
return err
8491
}

0 commit comments

Comments
 (0)