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 }