github.com/jfrog/jfrog-cli-core/v2@v2.52.0/artifactory/commands/generic/search.go (about)

     1  package generic
     2  
     3  import (
     4  	"errors"
     5  	"github.com/jfrog/jfrog-cli-core/v2/artifactory/utils"
     6  	clientartutils "github.com/jfrog/jfrog-client-go/artifactory/services/utils"
     7  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
     8  	"github.com/jfrog/jfrog-client-go/utils/io/content"
     9  	"github.com/jfrog/jfrog-client-go/utils/log"
    10  )
    11  
    12  type SearchCommand struct {
    13  	GenericCommand
    14  }
    15  
    16  func NewSearchCommand() *SearchCommand {
    17  	return &SearchCommand{GenericCommand: *NewGenericCommand()}
    18  }
    19  
    20  func (sc *SearchCommand) CommandName() string {
    21  	return "rt_search"
    22  }
    23  
    24  func (sc *SearchCommand) Run() error {
    25  	reader, err := sc.Search()
    26  	sc.Result().SetReader(reader)
    27  	return err
    28  }
    29  
    30  func (sc *SearchCommand) Search() (*content.ContentReader, error) {
    31  	// Service Manager
    32  	serverDetails, err := sc.ServerDetails()
    33  	if errorutils.CheckError(err) != nil {
    34  		return nil, err
    35  	}
    36  	servicesManager, err := utils.CreateServiceManager(serverDetails, sc.retries, sc.retryWaitTimeMilliSecs, false)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	// Search Loop
    41  	log.Info("Searching artifacts...")
    42  
    43  	searchResults, callbackFunc, err := utils.SearchFiles(servicesManager, sc.Spec())
    44  	defer func() {
    45  		err = errors.Join(err, callbackFunc())
    46  	}()
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  
    51  	reader, err := utils.AqlResultToSearchResult(searchResults)
    52  	if err != nil {
    53  		return nil, err
    54  	}
    55  	length, err := reader.Length()
    56  	clientartutils.LogSearchResults(length)
    57  	return reader, err
    58  }