in gazelle/configure.go [65:150]
func (py *Configurer) Configure(c *config.Config, rel string, f *rule.File) {
// Create the root config.
if _, exists := c.Exts[languageName]; !exists {
rootConfig := pythonconfig.New(c.RepoRoot, "")
c.Exts[languageName] = pythonconfig.Configs{"": rootConfig}
}
configs := c.Exts[languageName].(pythonconfig.Configs)
config, exists := configs[rel]
if !exists {
parent := configs.ParentForPackage(rel)
config = parent.NewChild()
configs[rel] = config
}
if f == nil {
return
}
gazelleManifestFilename := "gazelle_python.yaml"
for _, d := range f.Directives {
switch d.Key {
case "exclude":
// We record the exclude directive for coarse-grained packages
// since we do manual tree traversal in this mode.
config.AddExcludedPattern(strings.TrimSpace(d.Value))
case pythonconfig.PythonExtensionDirective:
switch d.Value {
case "enabled":
config.SetExtensionEnabled(true)
case "disabled":
config.SetExtensionEnabled(false)
default:
err := fmt.Errorf("invalid value for directive %q: %s: possible values are enabled/disabled",
pythonconfig.PythonExtensionDirective, d.Value)
log.Fatal(err)
}
case pythonconfig.PythonRootDirective:
config.SetPythonProjectRoot(rel)
case pythonconfig.PythonManifestFileNameDirective:
gazelleManifestFilename = strings.TrimSpace(d.Value)
case pythonconfig.IgnoreFilesDirective:
for _, ignoreFile := range strings.Split(d.Value, ",") {
config.AddIgnoreFile(ignoreFile)
}
case pythonconfig.IgnoreDependenciesDirective:
for _, ignoreDependency := range strings.Split(d.Value, ",") {
config.AddIgnoreDependency(ignoreDependency)
}
case pythonconfig.ValidateImportStatementsDirective:
v, err := strconv.ParseBool(strings.TrimSpace(d.Value))
if err != nil {
log.Fatal(err)
}
config.SetValidateImportStatements(v)
case pythonconfig.GenerationMode:
switch pythonconfig.GenerationModeType(strings.TrimSpace(d.Value)) {
case pythonconfig.GenerationModePackage:
config.SetCoarseGrainedGeneration(false)
case pythonconfig.GenerationModeProject:
config.SetCoarseGrainedGeneration(true)
default:
err := fmt.Errorf("invalid value for directive %q: %s",
pythonconfig.GenerationMode, d.Value)
log.Fatal(err)
}
case pythonconfig.LibraryNamingConvention:
config.SetLibraryNamingConvention(strings.TrimSpace(d.Value))
case pythonconfig.BinaryNamingConvention:
config.SetBinaryNamingConvention(strings.TrimSpace(d.Value))
case pythonconfig.TestNamingConvention:
config.SetTestNamingConvention(strings.TrimSpace(d.Value))
}
}
gazelleManifestPath := filepath.Join(c.RepoRoot, rel, gazelleManifestFilename)
gazelleManifest, err := py.loadGazelleManifest(gazelleManifestPath)
if err != nil {
log.Fatal(err)
}
if gazelleManifest != nil {
config.SetGazelleManifest(gazelleManifest)
}
}