Merge "hackdoc: do not render links to pages that wouldn't serve anything"
diff --git a/devtools/hackdoc/markdown.go b/devtools/hackdoc/markdown.go
index 14ffe45..eaed905 100644
--- a/devtools/hackdoc/markdown.go
+++ b/devtools/hackdoc/markdown.go
@@ -50,6 +50,29 @@
 	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 @@
 				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{}{
diff --git a/devtools/hackdoc/tpl/default.html b/devtools/hackdoc/tpl/default.html
index edb4c33..e6280db 100644
--- a/devtools/hackdoc/tpl/default.html
+++ b/devtools/hackdoc/tpl/default.html
@@ -72,6 +72,7 @@
     font-family: Consolas, monospace;
     margin-top: 1rem;
     padding: 0.5em 0 0.5em 0;
+    display: inline-flex;
 }
 
 .header a {
@@ -231,7 +232,13 @@
         <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 }}