github.com/jfrog/jfrog-cli-core/v2@v2.51.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 }