cmd/zoekt: support -l flag, for compatibility with grep

Change-Id: Iabd3a189031e9f36a0c12961f208b2a1a1f3d412
diff --git a/cmd/zoekt/main.go b/cmd/zoekt/main.go
index f1ad086..d39f4f1 100644
--- a/cmd/zoekt/main.go
+++ b/cmd/zoekt/main.go
@@ -29,14 +29,19 @@
 	"github.com/google/zoekt/shards"
 )
 
-func displayMatches(files []zoekt.FileMatch, pat string, withRepo bool) {
+func displayMatches(files []zoekt.FileMatch, pat string, withRepo bool, list bool) {
 	for _, f := range files {
+		r := ""
+		if withRepo {
+			r = f.Repository + "/"
+		}
+		if list {
+			fmt.Printf("%s%s\n", r, f.FileName)
+			continue
+		}
+
 		for _, m := range f.LineMatches {
-			if withRepo {
-				fmt.Printf("%s/%s:%d:%s\n", f.Repository, f.FileName, m.LineNumber, m.Line)
-			} else {
-				fmt.Printf("%s:%d:%s\n", f.FileName, m.LineNumber, m.Line)
-			}
+			fmt.Printf("%s%s:%d:%s\n", r, f.FileName, m.LineNumber, m.Line)
 		}
 	}
 }
@@ -68,6 +73,7 @@
 	profileTime := flag.Duration("profile_time", time.Second, "run this long to gather stats.")
 	verbose := flag.Bool("v", false, "print some background data")
 	withRepo := flag.Bool("r", false, "print the repo before the file name")
+	list := flag.Bool("l", false, "print matching filenames only")
 
 	flag.Usage = func() {
 		name := os.Args[0]
@@ -134,7 +140,7 @@
 		log.Fatal(err)
 	}
 
-	displayMatches(sres.Files, pat, *withRepo)
+	displayMatches(sres.Files, pat, *withRepo, *list)
 	if *verbose {
 		log.Printf("stats: %#v", sres.Stats)
 	}