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

     1  package generic
     2  
     3  import (
     4  	"github.com/jfrog/jfrog-cli-core/artifactory/utils"
     5  	clientartutils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     6  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
     7  	"github.com/jfrog/jfrog-client-go/utils/io/content"
     8  	"github.com/jfrog/jfrog-client-go/utils/log"
     9  )
    10  
    11  type SearchCommand struct {
    12  	GenericCommand
    13  }
    14  
    15  func NewSearchCommand() *SearchCommand {
    16  	return &SearchCommand{GenericCommand: *NewGenericCommand()}
    17  }
    18  
    19  func (sc *SearchCommand) CommandName() string {
    20  	return "rt_search"
    21  }
    22  
    23  func (sc *SearchCommand) Run() error {
    24  	reader, err := sc.Search()
    25  	sc.Result().SetReader(reader)
    26  	return err
    27  }
    28  
    29  func (sc *SearchCommand) Search() (*content.ContentReader, error) {
    30  	// Service Manager
    31  	rtDetails, err := sc.RtDetails()
    32  	if errorutils.CheckError(err) != nil {
    33  		return nil, err
    34  	}
    35  	servicesManager, err := utils.CreateServiceManager(rtDetails, false)
    36  	if err != nil {
    37  		return nil, err
    38  	}
    39  
    40  	// Search Loop
    41  	log.Info("Searching artifacts...")
    42  	var searchResults []*content.ContentReader
    43  	defer func() {
    44  		for _, reader := range searchResults {
    45  			reader.Close()
    46  		}
    47  	}()
    48  	for i := 0; i < len(sc.Spec().Files); i++ {
    49  		searchParams, err := utils.GetSearchParams(sc.Spec().Get(i))
    50  		if err != nil {
    51  			log.Error(err)
    52  			return nil, err
    53  		}
    54  
    55  		reader, err := servicesManager.SearchFiles(searchParams)
    56  		if err != nil {
    57  			log.Error(err)
    58  			return nil, err
    59  		}
    60  		searchResults = append(searchResults, reader)
    61  	}
    62  	reader, err := utils.AqlResultToSearchResult(searchResults)
    63  	if err != nil {
    64  		return nil, err
    65  	}
    66  	length, err := reader.Length()
    67  	clientartutils.LogSearchResults(length)
    68  	return reader, err
    69  }