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 }