github.com/osievert/jfrog-cli-core@v1.2.7/artifactory/commands/distribution/distributebundle.go (about)

     1  package distribution
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/artifactory/spec"
     5  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     6  	"github.com/jfrog/jfrog-cli-core/utils/config"
     7  	"github.com/jfrog/jfrog-client-go/distribution/services"
     8  )
     9  
    10  type DistributeReleaseBundleCommand struct {
    11  	rtDetails               *config.ArtifactoryDetails
    12  	distributeBundlesParams services.DistributionParams
    13  	distributionRules       *spec.DistributionRules
    14  	sync                    bool
    15  	maxWaitMinutes          int
    16  	dryRun                  bool
    17  }
    18  
    19  func NewReleaseBundleDistributeCommand() *DistributeReleaseBundleCommand {
    20  	return &DistributeReleaseBundleCommand{}
    21  }
    22  
    23  func (db *DistributeReleaseBundleCommand) SetRtDetails(rtDetails *config.ArtifactoryDetails) *DistributeReleaseBundleCommand {
    24  	db.rtDetails = rtDetails
    25  	return db
    26  }
    27  
    28  func (db *DistributeReleaseBundleCommand) SetDistributeBundleParams(params services.DistributionParams) *DistributeReleaseBundleCommand {
    29  	db.distributeBundlesParams = params
    30  	return db
    31  }
    32  
    33  func (db *DistributeReleaseBundleCommand) SetDistributionRules(distributionRules *spec.DistributionRules) *DistributeReleaseBundleCommand {
    34  	db.distributionRules = distributionRules
    35  	return db
    36  }
    37  
    38  func (db *DistributeReleaseBundleCommand) SetSync(sync bool) *DistributeReleaseBundleCommand {
    39  	db.sync = sync
    40  	return db
    41  }
    42  
    43  func (db *DistributeReleaseBundleCommand) SetMaxWaitMinutes(maxWaitMinutes int) *DistributeReleaseBundleCommand {
    44  	db.maxWaitMinutes = maxWaitMinutes
    45  	return db
    46  }
    47  
    48  func (db *DistributeReleaseBundleCommand) SetDryRun(dryRun bool) *DistributeReleaseBundleCommand {
    49  	db.dryRun = dryRun
    50  	return db
    51  }
    52  
    53  func (db *DistributeReleaseBundleCommand) Run() error {
    54  	servicesManager, err := utils.CreateDistributionServiceManager(db.rtDetails, db.dryRun)
    55  	if err != nil {
    56  		return err
    57  	}
    58  
    59  	for _, rule := range db.distributionRules.DistributionRules {
    60  		db.distributeBundlesParams.DistributionRules = append(db.distributeBundlesParams.DistributionRules, rule.ToDistributionCommonParams())
    61  	}
    62  
    63  	if db.sync {
    64  		return servicesManager.DistributeReleaseBundleSync(db.distributeBundlesParams, db.maxWaitMinutes)
    65  	}
    66  	return servicesManager.DistributeReleaseBundle(db.distributeBundlesParams)
    67  }
    68  
    69  func (db *DistributeReleaseBundleCommand) RtDetails() (*config.ArtifactoryDetails, error) {
    70  	return db.rtDetails, nil
    71  }
    72  
    73  func (db *DistributeReleaseBundleCommand) CommandName() string {
    74  	return "rt_distribute_bundle"
    75  }