github.com/jfrog/jfrog-cli-core/v2@v2.51.0/lifecycle/createfromartifacts.go (about)

     1  package lifecycle
     2  
     3  import (
     4  	"errors"
     5  	"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
     6  	rtServicesUtils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     7  	"github.com/jfrog/jfrog-client-go/lifecycle"
     8  	"github.com/jfrog/jfrog-client-go/lifecycle/services"
     9  	"github.com/jfrog/jfrog-client-go/utils/io/content"
    10  	"github.com/jfrog/jfrog-client-go/utils/log"
    11  	"path"
    12  )
    13  
    14  func (rbc *ReleaseBundleCreateCommand) createFromArtifacts(lcServicesManager *lifecycle.LifecycleServicesManager,
    15  	rbDetails services.ReleaseBundleDetails, queryParams services.CommonOptionalQueryParams) (err error) {
    16  
    17  	rtServicesManager, err := utils.CreateServiceManager(rbc.serverDetails, 3, 0, false)
    18  	if err != nil {
    19  		return err
    20  	}
    21  
    22  	log.Info("Searching artifacts...")
    23  	searchResults, callbackFunc, err := utils.SearchFiles(rtServicesManager, rbc.spec)
    24  	defer func() {
    25  		err = errors.Join(err, callbackFunc())
    26  	}()
    27  	if err != nil {
    28  		return err
    29  	}
    30  	artifactsSource, err := aqlResultToArtifactsSource(searchResults)
    31  	if err != nil {
    32  		return err
    33  	}
    34  
    35  	return lcServicesManager.CreateReleaseBundleFromArtifacts(rbDetails, queryParams, rbc.signingKeyName, artifactsSource)
    36  }
    37  
    38  func aqlResultToArtifactsSource(readers []*content.ContentReader) (artifactsSource services.CreateFromArtifacts, err error) {
    39  	for _, reader := range readers {
    40  		for searchResult := new(rtServicesUtils.ResultItem); reader.NextRecord(searchResult) == nil; searchResult = new(rtServicesUtils.ResultItem) {
    41  			if err != nil {
    42  				return
    43  			}
    44  			artifactsSource.Artifacts = append(artifactsSource.Artifacts, services.ArtifactSource{
    45  				Path:   path.Join(searchResult.Repo, searchResult.Path, searchResult.Name),
    46  				Sha256: searchResult.Sha256,
    47  			})
    48  		}
    49  		if err = reader.GetError(); err != nil {
    50  			return
    51  		}
    52  		reader.Reset()
    53  	}
    54  	return
    55  }