-
Notifications
You must be signed in to change notification settings - Fork 8
/
package.go
80 lines (66 loc) · 2.06 KB
/
package.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
// Copyright 2022 Namespace Labs Inc; All rights reserved.
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
package parsing
import (
"context"
"namespacelabs.dev/foundation/internal/fnerrors"
"namespacelabs.dev/foundation/internal/parsing/integration/api"
"namespacelabs.dev/foundation/schema"
"namespacelabs.dev/foundation/std/pkggraph"
)
// This function contains frontend-agnostic validation and processing code.
func FinalizePackage(ctx context.Context, env *schema.Environment, pl EarlyPackageLoader, pp *pkggraph.Package) (*pkggraph.Package, error) {
var err error
if pp.Integration != nil {
if err = api.ApplyServerIntegration(ctx, env, pl, pp); err != nil {
return nil, err
}
}
if pp.Server != nil {
pp.Server, err = TransformServer(ctx, pl, pp.Server, pp)
if err != nil {
return nil, err
}
}
for _, test := range pp.Tests {
if test.Integration != nil {
if err = api.ApplyTestIntegration(ctx, env, pl, pp, test); err != nil {
return nil, err
}
}
if err := transformTest(pp.Location, pp.Server, test); err != nil {
return nil, err
}
}
if pp.Server != nil && pp.Server.RunByDefault {
test, err := createServerStartupTest(ctx, pl, pp.PackageName())
if err != nil {
return nil, fnerrors.Wrapf(pp.Location, err, "creating server startup test")
}
pp.Tests = append(pp.Tests, test)
}
for _, binary := range pp.Binaries {
if err := transformBinary(pp.Location, binary); err != nil {
return nil, err
}
}
if err := transformResourceClasses(ctx, pl, pp); err != nil {
return nil, err
}
for _, provider := range pp.ResourceProvidersSpecs {
if rp, err := transformResourceProvider(ctx, pl, pp, provider); err != nil {
return nil, err
} else {
pp.ResourceProviders = append(pp.ResourceProviders, *rp)
}
}
for _, r := range pp.ResourceInstanceSpecs {
if parsed, err := loadResourceInstance(ctx, pl, pp, r); err != nil {
return nil, err
} else {
pp.Resources = append(pp.Resources, *parsed)
}
}
return pp, nil
}