lookupLatestModuleVersion invokes the Perseus API to retrieve the highest known semantic version for the specified module.
(ctx context.Context, c perseusapiconnect.PerseusServiceClient, modulePath string)
| 341 | // lookupLatestModuleVersion invokes the Perseus API to retrieve the highest known semantic version for |
| 342 | // the specified module. |
| 343 | func lookupLatestModuleVersion(ctx context.Context, c perseusapiconnect.PerseusServiceClient, modulePath string) (version string, err error) { |
| 344 | req := connect.NewRequest(&perseusapi.ListModuleVersionsRequest{ |
| 345 | ModuleName: modulePath, |
| 346 | VersionOption: perseusapi.ModuleVersionOption_latest, |
| 347 | }) |
| 348 | resp, err := retryOp(func() (*connect.Response[perseusapi.ListModuleVersionsResponse], error) { |
| 349 | return c.ListModuleVersions(ctx, req) |
| 350 | }) |
| 351 | if err != nil { |
| 352 | return "", err |
| 353 | } |
| 354 | if len(resp.Msg.Modules) == 0 || len(resp.Msg.Modules[0].Versions) == 0 { |
| 355 | return "", fmt.Errorf("no version found for module %s", modulePath) |
| 356 | } |
| 357 | |
| 358 | return resp.Msg.Modules[0].Versions[0], nil |
| 359 | } |
| 360 | |
| 361 | // dependencyTreeNode defines the information returned by walkDependencies |
| 362 | type dependencyTreeNode struct { |
no test coverage detected