func()

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
}