Merge "hackdoc: do not render links to pages that wouldn't serve anything"

changes/81/381/1
q3k 2020-08-10 16:01:51 +00:00 committed by Gerrit Code Review
commit 77a5a4b388
2 changed files with 36 additions and 2 deletions

View File

@ -50,6 +50,29 @@ type pathPart struct {
Path string
}
func (r *request) renderable(dirpath string) bool {
cfg, err := config.ForPath(r.ctx, r.source, dirpath)
if err != nil {
glog.Errorf("could not get config for path %q: %v", dirpath, err)
return false
}
for _, f := range cfg.DefaultIndex {
fpath := dirpath + "/" + f
file, err := r.source.IsFile(r.ctx, fpath)
if err != nil {
glog.Errorf("IsFile(%q): %v", fpath, err)
return false
}
if file {
return true
}
}
return false
}
func (r *request) handleFile(path string, cfg *config.Config) {
data, err := r.source.ReadFile(r.ctx, path)
if err != nil {
@ -85,7 +108,11 @@ func (r *request) handleFile(path string, cfg *config.Config) {
label = label + "/"
}
fullPath += "/" + p
pathParts = append(pathParts, pathPart{Label: label, Path: fullPath})
target := fullPath
if i != len(parts)-1 && !r.renderable("/"+fullPath) {
target = ""
}
pathParts = append(pathParts, pathPart{Label: label, Path: target})
}
vars := map[string]interface{}{

View File

@ -72,6 +72,7 @@ body {
font-family: Consolas, monospace;
margin-top: 1rem;
padding: 0.5em 0 0.5em 0;
display: inline-flex;
}
.header a {
@ -231,7 +232,13 @@ h1,h2,h3,h4 {
<div class="page">
<div class="header">
<span class="red">hackdoc:</span>
{{ range .PathParts }}<span class="part"><a href="{{ .Path }}">{{ .Label }}</a></span>{{ end }}
{{ range .PathParts }}
{{ if ne .Path "" }}
<span class="part"><a href="{{ .Path }}">{{ .Label }}</a></span>
{{ else }}
<span class="part">{{ .Label }}</span>
{{ end }}
{{ end }}
<span class="red" style="margin-left: 1em;">shortcuts:</span> <a href="/">root</a>, <a href="/cluster/doc">cluster docs</a>, <a href="/doc/codelabs">codelabs</a>
</div>
{{ .Rendered }}