config: Merge for modules works
This commit is contained in:
parent
e7fe5aa452
commit
dd6f536fab
|
@ -309,6 +309,25 @@ func (c *Config) allVariables() map[string][]InterpolatedVariable {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m *Module) mergerName() string {
|
||||||
|
return m.Id()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *Module) mergerMerge(other merger) merger {
|
||||||
|
m2 := other.(*Module)
|
||||||
|
|
||||||
|
result := *m
|
||||||
|
result.Name = m2.Name
|
||||||
|
result.Type = m2.Type
|
||||||
|
result.RawConfig = result.RawConfig.merge(m2.RawConfig)
|
||||||
|
|
||||||
|
if m2.Source != "" {
|
||||||
|
result.Source = m2.Source
|
||||||
|
}
|
||||||
|
|
||||||
|
return &result
|
||||||
|
}
|
||||||
|
|
||||||
func (o *Output) mergerName() string {
|
func (o *Output) mergerName() string {
|
||||||
return o.Name
|
return o.Name
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,23 @@ func Merge(c1, c2 *Config) (*Config, error) {
|
||||||
|
|
||||||
var m1, m2, mresult []merger
|
var m1, m2, mresult []merger
|
||||||
|
|
||||||
|
// Modules
|
||||||
|
m1 = make([]merger, 0, len(c1.Modules))
|
||||||
|
m2 = make([]merger, 0, len(c2.Modules))
|
||||||
|
for _, v := range c1.Modules {
|
||||||
|
m1 = append(m1, v)
|
||||||
|
}
|
||||||
|
for _, v := range c2.Modules {
|
||||||
|
m2 = append(m2, v)
|
||||||
|
}
|
||||||
|
mresult = mergeSlice(m1, m2)
|
||||||
|
if len(mresult) > 0 {
|
||||||
|
c.Modules = make([]*Module, len(mresult))
|
||||||
|
for i, v := range mresult {
|
||||||
|
c.Modules[i] = v.(*Module)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Outputs
|
// Outputs
|
||||||
m1 = make([]merger, 0, len(c1.Outputs))
|
m1 = make([]merger, 0, len(c1.Outputs))
|
||||||
m2 = make([]merger, 0, len(c2.Outputs))
|
m2 = make([]merger, 0, len(c2.Outputs))
|
||||||
|
|
|
@ -13,6 +13,9 @@ func TestMerge(t *testing.T) {
|
||||||
// Normal good case.
|
// Normal good case.
|
||||||
{
|
{
|
||||||
&Config{
|
&Config{
|
||||||
|
Modules: []*Module{
|
||||||
|
&Module{Name: "foo"},
|
||||||
|
},
|
||||||
Outputs: []*Output{
|
Outputs: []*Output{
|
||||||
&Output{Name: "foo"},
|
&Output{Name: "foo"},
|
||||||
},
|
},
|
||||||
|
@ -30,6 +33,9 @@ func TestMerge(t *testing.T) {
|
||||||
},
|
},
|
||||||
|
|
||||||
&Config{
|
&Config{
|
||||||
|
Modules: []*Module{
|
||||||
|
&Module{Name: "bar"},
|
||||||
|
},
|
||||||
Outputs: []*Output{
|
Outputs: []*Output{
|
||||||
&Output{Name: "bar"},
|
&Output{Name: "bar"},
|
||||||
},
|
},
|
||||||
|
@ -47,6 +53,10 @@ func TestMerge(t *testing.T) {
|
||||||
},
|
},
|
||||||
|
|
||||||
&Config{
|
&Config{
|
||||||
|
Modules: []*Module{
|
||||||
|
&Module{Name: "foo"},
|
||||||
|
&Module{Name: "bar"},
|
||||||
|
},
|
||||||
Outputs: []*Output{
|
Outputs: []*Output{
|
||||||
&Output{Name: "foo"},
|
&Output{Name: "foo"},
|
||||||
&Output{Name: "bar"},
|
&Output{Name: "bar"},
|
||||||
|
|
Loading…
Reference in New Issue