-
Notifications
You must be signed in to change notification settings - Fork 70
/
bundler_builder.go
75 lines (62 loc) · 1.6 KB
/
bundler_builder.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
package install
import "github.com/newrelic/newrelic-cli/internal/install/recipes"
type BundlerBuilder struct {
coreRecipes []*recipes.BundleRecipe
additionalRecipes []*recipes.BundleRecipe
}
func NewBundlerBuilder() *BundlerBuilder {
return &BundlerBuilder{}
}
func (bb *BundlerBuilder) WithCoreRecipe(name string) *BundlerBuilder {
coreRecipes := []*recipes.BundleRecipe{
{
Recipe: recipes.NewRecipeBuilder().Name(name).Build(),
},
}
bb.coreRecipes = coreRecipes
return bb
}
func (bb *BundlerBuilder) WithAdditionalRecipe(name string) *BundlerBuilder {
additionalRecipes := []*recipes.BundleRecipe{
{
Recipe: recipes.NewRecipeBuilder().Name(name).Build(),
},
}
bb.additionalRecipes = additionalRecipes
return bb
}
func (bb *BundlerBuilder) Build() RecipeBundler {
return &MockBundler{
coreRecipes: bb.coreRecipes,
additionalRecipes: bb.additionalRecipes,
}
}
type MockBundler struct {
coreRecipes []*recipes.BundleRecipe
additionalRecipes []*recipes.BundleRecipe
}
func (mb *MockBundler) CreateCoreBundle() *recipes.Bundle {
bundle := &recipes.Bundle{
BundleRecipes: mb.coreRecipes,
}
return bundle
}
func (mb *MockBundler) CreateAdditionalTargetedBundle(names []string) *recipes.Bundle {
bundle := &recipes.Bundle{
// BundleRecipes: mb.additionalRecipes,
}
for _, r := range mb.additionalRecipes {
for _, n := range names {
if r.Recipe.Name == n {
bundle.AddRecipe(r)
}
}
}
return bundle
}
func (mb *MockBundler) CreateAdditionalGuidedBundle() *recipes.Bundle {
bundle := &recipes.Bundle{
BundleRecipes: mb.additionalRecipes,
}
return bundle
}