func()

in code/go/internal/specschema/folder_spec.go [46:86]


func (l *FolderSpecLoader) loadFolderSpec(s *folderItemSpec, specPath string) error {
	specFile, err := l.fs.Open(specPath)
	if err != nil {
		return fmt.Errorf("could not open folder specification file: %w", err)
	}
	defer specFile.Close()

	data, err := io.ReadAll(specFile)
	if err != nil {
		return fmt.Errorf("could not read folder specification file: %w", err)
	}

	var folderSpec folderSchemaSpec
	folderSpec.Spec = s
	if err := yaml.Unmarshal(data, &folderSpec); err != nil {
		return fmt.Errorf("could not parse folder specification file: %w", err)
	}

	newSpec, err := folderSpec.resolve(l.specVersion)
	if err != nil {
		return err
	}

	err = l.loadContents(newSpec, l.fs, specPath)
	if err != nil {
		return err
	}

	err = newSpec.setDefaultValues()
	if err != nil {
		return fmt.Errorf("could not set default values: %w", err)
	}

	newSpec.propagateContentLimits()

	// it is required to assign the real values to be able to
	// use all the calculated contents in following iterations
	*s = *newSpec

	return nil
}