(src []byte)
| 16 | const EngineVersionLatest string = "latest" |
| 17 | |
| 18 | func ParseModuleConfig(src []byte) (*ModuleConfigWithUserFields, error) { |
| 19 | // before attempting to parse the entire config, just read the |
| 20 | // engineVersion field, to perform version checks to see if it's even |
| 21 | // possible |
| 22 | var meta struct { |
| 23 | EngineVersion string `json:"engineVersion"` |
| 24 | } |
| 25 | if err := json.Unmarshal(src, &meta); err != nil { |
| 26 | return nil, fmt.Errorf("failed to decode module config: %w", err) |
| 27 | } |
| 28 | meta.EngineVersion = engine.NormalizeVersion(meta.EngineVersion) |
| 29 | if !engine.CheckMaxVersionCompatibility(meta.EngineVersion, engine.BaseVersion(engine.Version)) { |
| 30 | return nil, fmt.Errorf("module requires dagger %s, but you have %s", meta.EngineVersion, engine.Version) |
| 31 | } |
| 32 | |
| 33 | var modCfg ModuleConfigWithUserFields |
| 34 | if err := json.Unmarshal(src, &modCfg); err != nil { |
| 35 | return nil, fmt.Errorf("failed to decode module config: %w", err) |
| 36 | } |
| 37 | return &modCfg, nil |
| 38 | } |
| 39 | |
| 40 | // ModuleConfigWithUserFields is the config for a single module as loaded from a dagger.json file. |
| 41 | // Includes additional fields that should only be set by the user. |
no test coverage detected