Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(internal/godocfx): only put TOC status on mod if all pkgs have same status #4974

Merged
merged 2 commits into from Oct 11, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
28 changes: 24 additions & 4 deletions internal/godocfx/parse.go
Expand Up @@ -543,9 +543,23 @@ func processExamples(exs []*doc.Example, fset *token.FileSet) []example {
func buildTOC(mod string, pis []pkgload.Info, extraFiles []extraFile) tableOfContents {
toc := tableOfContents{}

// If all of the packages have the same status, only put the status on
// the module instead of all of the individual packages.
uniqueStatuses := map[string]struct{}{}
for _, pi := range pis {
uniqueStatuses[pi.Status] = struct{}{}
}
modStatus := ""
if len(uniqueStatuses) == 1 {
for status := range uniqueStatuses {
modStatus = status
}
}

modTOC := &tocItem{
UID: mod,
Name: mod,
UID: mod,
Name: mod,
Status: modStatus,
}

for _, ef := range extraFiles {
Expand All @@ -563,10 +577,14 @@ func buildTOC(mod string, pis []pkgload.Info, extraFiles []extraFile) tableOfCon
importPath := pi.Doc.ImportPath
if importPath == mod {
// Add the module root package immediately with the full name.
rootPkgStatus := pi.Status
if modStatus != "" {
rootPkgStatus = ""
}
modTOC.addItem(&tocItem{
UID: mod,
Name: mod,
Status: pi.Status,
Status: rootPkgStatus,
})
continue
}
Expand All @@ -575,7 +593,9 @@ func buildTOC(mod string, pis []pkgload.Info, extraFiles []extraFile) tableOfCon
}
trimmed := strings.TrimPrefix(importPath, mod+"/")
trimmedPkgs = append(trimmedPkgs, trimmed)
statuses[trimmed] = pi.Status
if modStatus == "" {
statuses[trimmed] = pi.Status
}
}

sort.Strings(trimmedPkgs)
Expand Down