in codegen/module.go [746:810]
func (system *ModuleSystem) getDefaultDependency(baseDirectory string, defaultDepDirAbs string,
moduleSearchPaths map[string][]string, className string, ch chan defaultDependencyRes, wg *sync.WaitGroup) {
defer wg.Done()
dependencyClassName, err := getClassNameOfDependency(baseDirectory, defaultDepDirAbs, moduleSearchPaths)
if err != nil {
ch <- defaultDependencyRes{
err: errors.Wrapf(
err,
"cannot get class name of dependency %s",
defaultDepDirAbs,
),
}
return
}
found := false
for _, actualClassDependencyName := range system.classes[className].DependsOn {
if dependencyClassName == actualClassDependencyName {
found = true
break
}
}
if !found {
ch <- defaultDependencyRes{err: errors.Errorf(
"default dependency class %s is not a dependency of %s",
dependencyClassName,
className,
),
}
return
}
classConfigPath, _, _ := getConfigFilePath(defaultDepDirAbs, dependencyClassName)
if classConfigPath == "" {
// No class config found, skip over this directory
ch <- defaultDependencyRes{}
return
}
dependencyDir, err := filepath.Rel(baseDirectory, defaultDepDirAbs)
if err != nil {
ch <- defaultDependencyRes{err: errors.Wrapf(
err,
"cannot make %q relative to %q for default dependency",
defaultDepDirAbs,
baseDirectory,
),
}
return
}
defaultDependency, err := system.getModuleDependency(classConfigPath, dependencyDir, dependencyClassName)
if err != nil {
ch <- defaultDependencyRes{err: errors.Wrapf(
err,
"error getting default dependency module %s for class %s",
defaultDepDirAbs,
className,
),
}
return
}
ch <- defaultDependencyRes{dep: defaultDependency}
return
}