zoekt: verbose flag prints shard metadata

This is a convenient way to look at the metadata for a shard. Now when
you run the zoekt command on a shard with the verbose flag we will log
the shard's metadata.

Change-Id: I14a7711b0bcd7a8582fbf3e5cfa1caa5f3d6fe7a
diff --git a/cmd/zoekt/main.go b/cmd/zoekt/main.go
index d39f4f1..035e8fa 100644
--- a/cmd/zoekt/main.go
+++ b/cmd/zoekt/main.go
@@ -46,7 +46,7 @@
 	}
 }
 
-func loadShard(fn string) (zoekt.Searcher, error) {
+func loadShard(fn string, verbose bool) (zoekt.Searcher, error) {
 	f, err := os.Open(fn)
 	if err != nil {
 		return nil, err
@@ -56,12 +56,23 @@
 	if err != nil {
 		return nil, err
 	}
+
 	s, err := zoekt.NewSearcher(iFile)
 	if err != nil {
 		iFile.Close()
 		return nil, fmt.Errorf("NewSearcher(%s): %v", fn, err)
 	}
 
+	if verbose {
+		repo, index, err := zoekt.ReadMetadata(iFile)
+		if err != nil {
+			iFile.Close()
+			return nil, fmt.Errorf("ReadMetadata(%s): %v", fn, err)
+		}
+		log.Printf("repo metadata: %#v", repo)
+		log.Printf("index metadata: %#v", index)
+	}
+
 	return s, nil
 }
 
@@ -94,7 +105,7 @@
 	var searcher zoekt.Searcher
 	var err error
 	if *shard != "" {
-		searcher, err = loadShard(*shard)
+		searcher, err = loadShard(*shard, *verbose)
 	} else {
 		searcher, err = shards.NewDirectorySearcher(*index)
 	}