func()

in internal/core/component.go [97:125]


func (c *Component) LoadComponent() (loadedComponent Component, err error) {

	// If success or loading or parsing the yaml component failed for reasons other than it didn't exist, return.
	if err = c.UnmarshalComponent("yaml", yaml.Unmarshal, &loadedComponent); err != nil && !os.IsNotExist(err) {
		return loadedComponent, err
	}

	// If YAML component definition did not exist, try JSON.
	if err != nil {
		if err = c.UnmarshalComponent("json", json.Unmarshal, &loadedComponent); err != nil {
			if !os.IsNotExist(err) {
				return loadedComponent, err
			}

			errorMessage := fmt.Sprintf("Error loading component in path %s", c.PhysicalPath)
			return loadedComponent, errors.New(errorMessage)
		}
	}

	if err = loadedComponent.applyDefaultsAndMigrations(); err != nil {
		return loadedComponent, err
	}

	loadedComponent.PhysicalPath = c.PhysicalPath
	loadedComponent.LogicalPath = c.LogicalPath
	err = loadedComponent.Config.Merge(c.Config)

	return loadedComponent, err
}