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 }