github.com/jfrog/jfrog-cli-core/v2@v2.51.0/lifecycle/promote.go (about) 1 package lifecycle 2 3 import ( 4 "encoding/json" 5 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 6 "github.com/jfrog/jfrog-client-go/lifecycle/services" 7 "github.com/jfrog/jfrog-client-go/utils" 8 "github.com/jfrog/jfrog-client-go/utils/log" 9 ) 10 11 type ReleaseBundlePromoteCommand struct { 12 releaseBundleCmd 13 signingKeyName string 14 environment string 15 includeReposPatterns []string 16 excludeReposPatterns []string 17 } 18 19 func NewReleaseBundlePromoteCommand() *ReleaseBundlePromoteCommand { 20 return &ReleaseBundlePromoteCommand{} 21 } 22 23 func (rbp *ReleaseBundlePromoteCommand) SetServerDetails(serverDetails *config.ServerDetails) *ReleaseBundlePromoteCommand { 24 rbp.serverDetails = serverDetails 25 return rbp 26 } 27 28 func (rbp *ReleaseBundlePromoteCommand) SetReleaseBundleName(releaseBundleName string) *ReleaseBundlePromoteCommand { 29 rbp.releaseBundleName = releaseBundleName 30 return rbp 31 } 32 33 func (rbp *ReleaseBundlePromoteCommand) SetReleaseBundleVersion(releaseBundleVersion string) *ReleaseBundlePromoteCommand { 34 rbp.releaseBundleVersion = releaseBundleVersion 35 return rbp 36 } 37 38 func (rbp *ReleaseBundlePromoteCommand) SetSigningKeyName(signingKeyName string) *ReleaseBundlePromoteCommand { 39 rbp.signingKeyName = signingKeyName 40 return rbp 41 } 42 43 func (rbp *ReleaseBundlePromoteCommand) SetSync(sync bool) *ReleaseBundlePromoteCommand { 44 rbp.sync = sync 45 return rbp 46 } 47 48 func (rbp *ReleaseBundlePromoteCommand) SetReleaseBundleProject(rbProjectKey string) *ReleaseBundlePromoteCommand { 49 rbp.rbProjectKey = rbProjectKey 50 return rbp 51 } 52 53 func (rbp *ReleaseBundlePromoteCommand) SetEnvironment(environment string) *ReleaseBundlePromoteCommand { 54 rbp.environment = environment 55 return rbp 56 } 57 58 func (rbp *ReleaseBundlePromoteCommand) SetIncludeReposPatterns(includeReposPatterns []string) *ReleaseBundlePromoteCommand { 59 rbp.includeReposPatterns = includeReposPatterns 60 return rbp 61 } 62 63 func (rbp *ReleaseBundlePromoteCommand) SetExcludeReposPatterns(excludeReposPatterns []string) *ReleaseBundlePromoteCommand { 64 rbp.excludeReposPatterns = excludeReposPatterns 65 return rbp 66 } 67 68 func (rbp *ReleaseBundlePromoteCommand) CommandName() string { 69 return "rb_promote" 70 } 71 72 func (rbp *ReleaseBundlePromoteCommand) ServerDetails() (*config.ServerDetails, error) { 73 return rbp.serverDetails, nil 74 } 75 76 func (rbp *ReleaseBundlePromoteCommand) Run() error { 77 if err := validateArtifactoryVersionSupported(rbp.serverDetails); err != nil { 78 return err 79 } 80 81 servicesManager, rbDetails, queryParams, err := rbp.getPrerequisites() 82 if err != nil { 83 return err 84 } 85 86 promotionParams := services.RbPromotionParams{ 87 Environment: rbp.environment, 88 IncludedRepositoryKeys: rbp.includeReposPatterns, 89 ExcludedRepositoryKeys: rbp.excludeReposPatterns, 90 } 91 92 promotionResp, err := servicesManager.PromoteReleaseBundle(rbDetails, queryParams, rbp.signingKeyName, promotionParams) 93 if err != nil { 94 return err 95 } 96 content, err := json.Marshal(promotionResp) 97 if err != nil { 98 return err 99 } 100 log.Output(utils.IndentJson(content)) 101 return nil 102 }