aboutsummaryrefslogtreecommitdiff
path: root/internal/fetchdatasource/fetchdatasource.go
diff options
context:
space:
mode:
authorEthan Lee <ethanalee@google.com>2026-03-25 18:18:15 +0000
committerGopher Robot <gobot@golang.org>2026-03-26 14:02:59 -0700
commit34edebc0803b121acd1cbf363eef074e0a13ab6d (patch)
tree72af43d88fd8e6c83d93beae0dba3cc62395e70d /internal/fetchdatasource/fetchdatasource.go
parent8378ff811c1228f6a50808cb7557e6c08782205a (diff)
downloadgo-x-pkgsite-34edebc0803b121acd1cbf363eef074e0a13ab6d.tar.xz
internal: consolidate build context and unit resolution logic
- Centralize logic for resolving units and selecting the best matching build context. - New helpers MatchingBuildContext, SortedBuildContexts provide a consistent, efficient approach to build context selection. - DocumentationForBuildContext now finds the best match based on precdence rules rather than just returning the first match. - A new getUnitContext helper resolves unit metadata and the best build context in a single query. - GetSymbols and GetUnit are now both optimized to use pre-resolved IDs, simplifying their queries and removing redundant joins. - Replaced redundant matchingDoc functions in fetchdatasource and fakedatasource. Change-Id: I9207d3bfe03404483c816090a0b99666f14a36e3 Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/759162 Reviewed-by: Jonathan Amsterdam <jba@google.com> kokoro-CI: kokoro <noreply+kokoro@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Ethan Lee <ethanalee@google.com>
Diffstat (limited to 'internal/fetchdatasource/fetchdatasource.go')
-rw-r--r--internal/fetchdatasource/fetchdatasource.go21
1 files changed, 2 insertions, 19 deletions
diff --git a/internal/fetchdatasource/fetchdatasource.go b/internal/fetchdatasource/fetchdatasource.go
index 7a5f5669..dfe30fc9 100644
--- a/internal/fetchdatasource/fetchdatasource.go
+++ b/internal/fetchdatasource/fetchdatasource.go
@@ -220,7 +220,7 @@ func (ds *FetchDataSource) GetUnit(ctx context.Context, um *internal.UnitMeta, f
// Since we cache the module and its units, we have to copy this unit before we modify it.
// It can be a shallow copy, since we're only modifying the Unit.Documentation field.
u2 := *u
- if d := matchingDoc(u.Documentation, bc); d != nil {
+ if d := internal.DocumentationForBuildContext(u.Documentation, bc); d != nil {
u2.Documentation = []*internal.Documentation{d}
} else {
u2.Documentation = nil
@@ -252,23 +252,6 @@ func findUnitMeta(m *fetch.LazyModule, path string) (*internal.UnitMeta, error)
return nil, derrors.NotFound
}
-// matchingDoc returns the Documentation that matches the given build context
-// and comes earliest in build-context order. It returns nil if there is none.
-func matchingDoc(docs []*internal.Documentation, bc internal.BuildContext) *internal.Documentation {
- var (
- dMin *internal.Documentation
- bcMin = internal.BuildContext{GOOS: "unk", GOARCH: "unk"} // sorts last
- )
- for _, d := range docs {
- dbc := d.BuildContext()
- if bc.Match(dbc) && internal.CompareBuildContexts(dbc, bcMin) < 0 {
- dMin = d
- bcMin = dbc
- }
- }
- return dMin
-}
-
// GetLatestInfo returns latest information for unitPath and modulePath.
func (ds *FetchDataSource) GetLatestInfo(ctx context.Context, unitPath, modulePath string, latestUnitMeta *internal.UnitMeta) (latest internal.LatestInfo, err error) {
defer derrors.Wrap(&err, "FetchDataSource.GetLatestInfo(ctx, %q, %q)", unitPath, modulePath)
@@ -447,7 +430,7 @@ func (ds *FetchDataSource) GetSymbols(ctx context.Context, pkgPath, modulePath,
return nil, err
}
- doc := matchingDoc(unit.Documentation, bc)
+ doc := internal.DocumentationForBuildContext(unit.Documentation, bc)
if doc == nil || len(doc.API) == 0 {
return nil, derrors.NotFound
}