39 lines
1,001 B
Go
39 lines
1,001 B
Go
package Commands
|
|
|
|
import (
|
|
"lpm-cli/Lotus"
|
|
"lpm-cli/ProtoHandler"
|
|
proto "lpm-cli/Proto/lpm/go"
|
|
)
|
|
|
|
func fetchPackages(platform string, architecture []string, query string, registry Lotus.Registry) *proto.SearchResponse {
|
|
var protoWrap ProtoHandler.ProtoWrapper
|
|
|
|
conn := protoWrap.CreateConnection(registry.Address)
|
|
defer conn.Close()
|
|
|
|
client, ctx, cancel := protoWrap.CreateRegistryClient(conn)
|
|
defer cancel()
|
|
|
|
res, _ := client.Search(ctx, &proto.SearchRequest{Platform: platform, Architecture: architecture, Query: query})
|
|
|
|
return res
|
|
}
|
|
|
|
func SearchPackages(platform string, architecture []string, query string) []ProtoHandler.Package {
|
|
var packages []ProtoHandler.Package
|
|
var protoWrap ProtoHandler.ProtoWrapper
|
|
|
|
registries := Lotus.GetRegistries()
|
|
|
|
for _, reg := range registries {
|
|
res := fetchPackages(platform, architecture, query, reg)
|
|
if res != nil{
|
|
for _, pkg := range protoWrap.ParsePackages(res, reg){
|
|
packages = append(packages, pkg)
|
|
}
|
|
}
|
|
}
|
|
|
|
return packages
|
|
}
|