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  }