diff --git a/cmd/novendor.go b/cmd/novendor.go
index 7b4ae9c..851ba8b 100644
--- a/cmd/novendor.go
+++ b/cmd/novendor.go
@@ -19,8 +19,9 @@
 // and returns all of the go files and directories that are not vendor.
 func NoVendor(c cookoo.Context, p *cookoo.Params) (interface{}, cookoo.Interrupt) {
 	path := p.Get("path", ".").(string)
+	gonly := p.Get("onlyGo", true).(bool)
 
-	return noVend(path)
+	return noVend(path, gonly)
 }
 
 // Take a list of paths and print a single string with space-separated paths.
@@ -33,7 +34,10 @@
 
 // noVend takes a directory and returns a list of Go-like files or directories,
 // provided the directory is not a vendor directory.
-func noVend(path string) ([]string, error) {
+//
+// If onlyGo is true, this will filter out all directories that do not contain
+// ".go" files.
+func noVend(path string, onlyGo bool) ([]string, error) {
 
 	info, err := os.Stat(path)
 	if err != nil {
@@ -72,6 +76,11 @@
 		}
 	}
 
+	// Filter out directories that do not contain Go code
+	if onlyGo {
+		res = hasGoSource(res)
+	}
+
 	if cur {
 		res = append(res, ".")
 	}
@@ -79,6 +88,33 @@
 	return res, nil
 }
 
+func hasGoSource(dirs []string) []string {
+	buf := []string{}
+	for _, d := range dirs {
+		d := filepath.Dir(d)
+		found := false
+		walker := func(p string, fi os.FileInfo, err error) error {
+			// Dumb optimization
+			if found {
+				return nil
+			}
+
+			// If the file ends with .go, report a match.
+			if strings.ToLower(filepath.Ext(p)) == ".go" {
+				found = true
+			}
+
+			return nil
+		}
+		filepath.Walk(d, walker)
+
+		if found {
+			buf = append(buf, d)
+		}
+	}
+	return buf
+}
+
 func isVend(fi os.FileInfo) bool {
 	return fi.Name() == "vendor"
 }
