Skip to content

Commit

Permalink
Merge ff583ca into 70dfab1
Browse files Browse the repository at this point in the history
  • Loading branch information
l-w-2017 committed Oct 2, 2018
2 parents 70dfab1 + ff583ca commit bda5f29
Showing 1 changed file with 38 additions and 46 deletions.
84 changes: 38 additions & 46 deletions codegen/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -705,27 +705,32 @@ func (system *ModuleSystem) readInstance(
yamlFileName,
)

yamlConfig := yamlClassConfig{}
raw, err := yamlConfig.Read(classConfigPath)
raw, readErr := ioutil.ReadFile(classConfigPath)
if readErr != nil {
return nil, errors.Wrapf(
readErr,
"Error reading class config %q",
classConfigPath,
)
}

if err != nil {
// TODO: We should accumulate errors and list them all here
// Expected $class-config.yaml to exist in ...
config, configErr := NewClassConfig(raw)
if configErr != nil {
return nil, errors.Wrapf(
err,
configErr,
"Error reading Config %q",
classConfigPath,
)
}

dependencies := readDeps(yamlConfig.Dependencies)
dependencies := readDeps(config.Dependencies)
packageInfo, err := readPackageInfo(
packageRoot,
baseDirectory,
targetGenDir,
className,
instanceDirectory,
&yamlConfig,
config,
dependencies,
)

Expand All @@ -736,17 +741,17 @@ func (system *ModuleSystem) readInstance(
err,
"Error reading class package info for %q %q",
className,
yamlConfig.Name,
config.Name,
)
}

return &ModuleInstance{
PackageInfo: packageInfo,
ClassName: className,
ClassType: yamlConfig.Type,
ClassType: config.Type,
BaseDirectory: baseDirectory,
Directory: instanceDirectory,
InstanceName: yamlConfig.Name,
InstanceName: config.Name,
Dependencies: dependencies,
ResolvedDependencies: map[string][]*ModuleInstance{},
RecursiveDependencies: map[string][]*ModuleInstance{},
Expand All @@ -755,7 +760,7 @@ func (system *ModuleSystem) readInstance(
YAMLFileName: yamlFileName,
JSONFileRaw: raw,
YAMLFileRaw: raw,
Config: yamlConfig.Config,
Config: config.Config,
}, nil
}

Expand Down Expand Up @@ -788,11 +793,11 @@ func readPackageInfo(
targetGenDir string,
className string,
instanceDirectory string,
yamlConfig *yamlClassConfig,
config *ClassConfig,
dependencies []ModuleDependency,
) (*PackageInfo, error) {
qualifiedClassName := strings.Title(CamelCase(className))
qualifiedInstanceName := strings.Title(CamelCase(yamlConfig.Name))
qualifiedInstanceName := strings.Title(CamelCase(config.Name))
defaultAlias := packageName(qualifiedInstanceName + qualifiedClassName)

relativeGeneratedPath, err := filepath.Rel(baseDirectory, targetGenDir)
Expand All @@ -808,16 +813,16 @@ func readPackageInfo(
// type. We should really extrapolate from the class type info what the
// default export type is for this instance
var isExportGenerated bool
if yamlConfig.Type == "custom" {
if yamlConfig.IsExportGenerated == nil {
if config.Type == "custom" {
if config.IsExportGenerated == nil {
isExportGenerated = false
} else {
isExportGenerated = *yamlConfig.IsExportGenerated
isExportGenerated = *config.IsExportGenerated
}
} else if yamlConfig.IsExportGenerated == nil {
} else if config.IsExportGenerated == nil {
isExportGenerated = true
} else {
isExportGenerated = *yamlConfig.IsExportGenerated
isExportGenerated = *config.IsExportGenerated
}

return &PackageInfo{
Expand Down Expand Up @@ -1346,8 +1351,8 @@ type ModuleDependency struct {
InstanceName string
}

// yamlClassConfig maps onto a YAML configuration for a class type
type yamlClassConfig struct {
// ClassConfig maps onto a YAML configuration for a class type
type ClassConfig struct {
// Name is the class instance name used to identify the module as a
// dependency. The combination of the class Name and this instance name
// is unique.
Expand All @@ -1365,49 +1370,36 @@ type yamlClassConfig struct {
IsExportGenerated *bool `yaml:"IsExportGenerated" json:"IsExportGenerated"`
}

// Read will read a class configuration yaml file into a yamlClassConfig struct
// NewClassConfig unmarshals raw bytes into a ClassConfig struct
// or return an error if it cannot be unmarshaled into the struct
func (yamlConfig *yamlClassConfig) Read(
classConfigPath string,
) ([]byte, error) {
configFile, readErr := ioutil.ReadFile(classConfigPath)
if readErr != nil {
return nil, errors.Wrapf(
readErr,
"Error reading class config %q",
classConfigPath,
)
}

parseErr := yaml.Unmarshal(configFile, &yamlConfig)
func NewClassConfig(raw []byte) (*ClassConfig, error) {
config := &ClassConfig{}
parseErr := yaml.Unmarshal(raw, config)

if parseErr != nil {
return nil, errors.Wrapf(
parseErr,
"Error yaml parsing clss config %q",
configFile,
"Error yaml parsing config",
)
}

if yamlConfig.Name == "" {
if config.Name == "" {
return nil, errors.Errorf(
"Error reading instance name from %q",
classConfigPath,
"Error reading instance name",
)
}

if yamlConfig.Type == "" {
if config.Type == "" {
return nil, errors.Errorf(
"Error reading instance type from %q",
classConfigPath,
"Error reading instance type",
)
}

if yamlConfig.Dependencies == nil {
yamlConfig.Dependencies = map[string][]string{}
if config.Dependencies == nil {
config.Dependencies = map[string][]string{}
}

return configFile, nil
return config, nil
}

// writeFile is like ioutil.WriteFile with a mkdirp step
Expand Down

0 comments on commit bda5f29

Please sign in to comment.