in codegen/module.go [895:981]
func (system *ModuleSystem) readInstance(
className string,
packageRoot string,
baseDirectory string,
targetGenDir string,
instanceDirectory string,
classConfigDir string,
defaultDependencies []ModuleDependency,
options Options,
) (*ModuleInstance, error) {
classConfigPath, yamlFileName, jsonFileName := getConfigFilePath(classConfigDir, className)
raw, readErr := ioutil.ReadFile(classConfigPath)
if readErr != nil {
return nil, errors.Wrapf(
readErr,
"Error reading ClassConfig %q",
classConfigPath,
)
}
jsonRaw := []byte{}
if jsonFileName != "" {
jsonRaw = raw
}
config, configErr := NewClassConfig(raw)
if configErr != nil {
return nil, errors.Wrapf(
configErr,
"Error unmarshal ClassConfig %q",
classConfigPath,
)
}
dependencies := readDeps(config.Dependencies)
dependencies = append(dependencies, defaultDependencies...)
var classPlural string
for _, moduleClass := range system.classes {
if moduleClass.Name == className {
classPlural = moduleClass.NamePlural
}
}
instanceName := stripModuleClassName(classPlural, instanceDirectory)
packageInfo, err := readPackageInfo(
packageRoot,
baseDirectory,
targetGenDir,
className,
instanceDirectory,
config,
options,
)
if err != nil {
// TODO: We should accumulate errors and list them all here
// Expected $class-config.yaml to exist in ...
return nil, errors.Wrapf(
err,
"Error reading class package info for %q %q",
className,
instanceName,
)
}
return &ModuleInstance{
PackageInfo: packageInfo,
ClassName: className,
ClassType: config.Type,
BaseDirectory: baseDirectory,
Directory: instanceDirectory,
InstanceName: instanceName,
Dependencies: dependencies,
ResolvedDependencies: map[string][]*ModuleInstance{},
RecursiveDependencies: map[string][]*ModuleInstance{},
DependencyOrder: []string{},
JSONFileName: jsonFileName,
YAMLFileName: yamlFileName,
JSONFileRaw: jsonRaw,
YAMLFileRaw: raw,
Config: config.Config,
SelectiveBuilding: config.SelectiveBuilding,
CustomTemplates: options.CustomTemplates,
}, nil
}