github.com/nevalang/neva@v0.23.1-0.20240507185603-7696a9bb8dda/internal/compiler/parser/manifest.go (about)

     1  package parser
     2  
     3  import (
     4  	"fmt"
     5  
     6  	yaml "gopkg.in/yaml.v3"
     7  
     8  	src "github.com/nevalang/neva/internal/compiler/sourcecode"
     9  )
    10  
    11  func (p Parser) ParseManifest(raw []byte) (src.ModuleManifest, error) {
    12  	var manifest src.ModuleManifest
    13  	if err := yaml.Unmarshal(raw, &manifest); err != nil {
    14  		return src.ModuleManifest{}, fmt.Errorf("yaml unmarshal: %w", err)
    15  	}
    16  	return processParsedManifest(manifest), nil
    17  }
    18  
    19  func processParsedManifest(manifest src.ModuleManifest) src.ModuleManifest {
    20  	deps := make(map[string]src.ModuleRef, len(manifest.Deps))
    21  
    22  	for alias, dep := range manifest.Deps {
    23  		path := dep.Path
    24  		if path == "" {
    25  			path = alias
    26  		}
    27  		deps[alias] = src.ModuleRef{
    28  			Path:    path,
    29  			Version: dep.Version,
    30  		}
    31  	}
    32  
    33  	return src.ModuleManifest{
    34  		LanguageVersion: manifest.LanguageVersion,
    35  		Deps:            deps,
    36  	}
    37  }