| 268 | } |
| 269 | |
| 270 | func envProtoToConfig(pbEnv *configpb.Environment) (*env.Config, *descpb.FileDescriptorSet, error) { |
| 271 | if pbEnv == nil { |
| 272 | return nil, nil, fmt.Errorf("proto environment is not set") |
| 273 | } |
| 274 | envConfig := env.NewConfig(pbEnv.GetName()) |
| 275 | envConfig.Description = pbEnv.GetDescription() |
| 276 | envConfig.SetContainer(pbEnv.GetContainer()) |
| 277 | for _, imp := range pbEnv.GetImports() { |
| 278 | envConfig.AddImports(env.NewImport(imp.GetName())) |
| 279 | } |
| 280 | stdLib, err := envToStdLib(pbEnv) |
| 281 | if err != nil { |
| 282 | return nil, nil, err |
| 283 | } |
| 284 | envConfig.SetStdLib(stdLib) |
| 285 | extensions := make([]*env.Extension, 0, len(pbEnv.GetExtensions())) |
| 286 | for _, extension := range pbEnv.GetExtensions() { |
| 287 | extensions = append(extensions, &env.Extension{Name: extension.GetName(), Version: extension.GetVersion()}) |
| 288 | } |
| 289 | envConfig.AddExtensions(extensions...) |
| 290 | if contextVariable := pbEnv.GetContextVariable(); contextVariable != nil { |
| 291 | envConfig.SetContextVariable(env.NewContextVariable(contextVariable.GetTypeName())) |
| 292 | } |
| 293 | functions, variables, err := protoDeclToFunctionsAndVariables(pbEnv.GetDeclarations()) |
| 294 | if err != nil { |
| 295 | return nil, nil, err |
| 296 | } |
| 297 | envConfig.AddFunctions(functions...) |
| 298 | envConfig.AddVariables(variables...) |
| 299 | validators, err := envToValidators(pbEnv) |
| 300 | if err != nil { |
| 301 | return nil, nil, err |
| 302 | } |
| 303 | envConfig.AddValidators(validators...) |
| 304 | features, err := envToFeatures(pbEnv) |
| 305 | if err != nil { |
| 306 | return nil, nil, err |
| 307 | } |
| 308 | envConfig.AddFeatures(features...) |
| 309 | fileDescriptorSet := pbEnv.GetMessageTypeExtension() |
| 310 | return envConfig, fileDescriptorSet, nil |
| 311 | } |
| 312 | |
| 313 | func envToFeatures(pbEnv *configpb.Environment) ([]*env.Feature, error) { |
| 314 | features := make([]*env.Feature, 0, len(pbEnv.GetFeatures())+1) |