soong_docs build link error fix.
This adds a script to copy the current page's base url to hrefs in the
doc.
Fixes: 123473548
Test: m soong_docs
Change-Id: I8a8ac0f9ba6c0d57ed83db2155955a95e070a265
diff --git a/cmd/soong_build/writedocs.go b/cmd/soong_build/writedocs.go
index de2182f..e86ef82 100644
--- a/cmd/soong_build/writedocs.go
+++ b/cmd/soong_build/writedocs.go
@@ -108,14 +108,9 @@
}
// Produce the top-level, package list page first.
- tmpl, err := template.New("file").Parse(packageListTemplate)
- if err != nil {
- return err
- }
+ tmpl := template.Must(template.Must(template.New("file").Parse(packageListTemplate)).Parse(copyBaseUrl))
buf := &bytes.Buffer{}
- if err == nil {
- err = tmpl.Execute(buf, packages)
- }
+ err = tmpl.Execute(buf, packages)
if err == nil {
err = ioutil.WriteFile(filename, buf.Bytes(), 0666)
}
@@ -125,18 +120,16 @@
// We need a module name getter/setter function because I couldn't
// find a way to keep it in a variable defined within the template.
currentModuleName := ""
- tmpl, err := template.New("file").Funcs(map[string]interface{}{
- "setModule": func(moduleName string) string {
- currentModuleName = moduleName
- return ""
- },
- "getModule": func() string {
- return currentModuleName
- },
- }).Parse(perPackageTemplate)
- if err != nil {
- return err
- }
+ tmpl := template.Must(
+ template.Must(template.New("file").Funcs(map[string]interface{}{
+ "setModule": func(moduleName string) string {
+ currentModuleName = moduleName
+ return ""
+ },
+ "getModule": func() string {
+ return currentModuleName
+ },
+ }).Parse(perPackageTemplate)).Parse(copyBaseUrl))
buf := &bytes.Buffer{}
modules := moduleTypeDocsToTemplates(pkg.ModuleTypes)
data := perPackageTemplateData{Name: pkg.Name, Modules: modules}
@@ -173,6 +166,7 @@
word-wrap:break-word;
}
</style>
+{{template "copyBaseUrl"}}
</head>
<body>
<div id="main">
@@ -203,9 +197,7 @@
</body>
</html>
`
-)
-const (
perPackageTemplate = `
<html>
<head>
@@ -243,6 +235,7 @@
color: white;
}
</style>
+{{template "copyBaseUrl"}}
</head>
<body>
{{- /* Fixed sidebar with module types */ -}}
@@ -309,4 +302,23 @@
</script>
</body>
`
+
+ copyBaseUrl = `
+{{define "copyBaseUrl"}}
+<script type="text/javascript">
+window.addEventListener('message', (e) => {
+ if (e != null && e.data != null && e.data.type === "SET_BASE" && e.data.base != null) {
+ const existingBase = document.querySelector('base');
+ if (existingBase != null) {
+ existingBase.parentElement.removeChild(existingBase);
+ }
+
+ const base = document.createElement('base');
+ base.setAttribute('href', e.data.base);
+ document.head.appendChild(base);
+ }
+});
+</script>
+{{end}}
+`
)