in cmd/kazel/generator.go [58:111]
func (v *Vendorer) findGeneratorTags(root string, requestedTags map[string]bool) (tagsValuesPkgs, tagsPkgsValues generatorTagsMap, err error) {
tagsValuesPkgs = make(generatorTagsMap)
tagsPkgsValues = make(generatorTagsMap)
err = filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if err != nil {
return err
}
pkg := filepath.Dir(path)
for _, r := range v.skippedK8sCodegenPaths {
if r.MatchString(pkg) {
return filepath.SkipDir
}
}
if !strings.HasSuffix(path, ".go") || strings.HasSuffix(path, "_test.go") {
return nil
}
b, err := ioutil.ReadFile(path)
if err != nil {
return err
}
for tag, values := range extractTags(b, requestedTags) {
if _, present := tagsValuesPkgs[tag]; !present {
tagsValuesPkgs[tag] = make(map[string]map[string]bool)
}
if _, present := tagsPkgsValues[tag]; !present {
tagsPkgsValues[tag] = make(map[string]map[string]bool)
}
if _, present := tagsPkgsValues[tag][pkg]; !present {
tagsPkgsValues[tag][pkg] = make(map[string]bool)
}
for _, v := range values {
if _, present := tagsValuesPkgs[tag][v]; !present {
tagsValuesPkgs[tag][v] = make(map[string]bool)
}
// Since multiple files in the same package may list a given tag/value, use a set to deduplicate.
tagsValuesPkgs[tag][v][pkg] = true
tagsPkgsValues[tag][pkg][v] = true
}
}
return nil
})
if err != nil {
return nil, nil, err
}
return
}