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

This gets rid of annoying clickable 404 links.

Change-Id: Ibf767875af29f4571e7f935d494b44dde002fac6
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{}{