Skip to content

Commit 0657fa6

Browse files
committed
Simply handling of disabled and added plugins
Signed-off-by: Derek McGowan <derek@mcg.dev>
1 parent 8bfc2cb commit 0657fa6

1 file changed

Lines changed: 16 additions & 19 deletions

File tree

plugin.go

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -112,37 +112,34 @@ type Registry []*Registration
112112
// Graph computes the ordered list of registrations based on their dependencies,
113113
// filtering out any plugins which match the provided filter.
114114
func (registry Registry) Graph(filter DisableFilter) []Registration {
115-
disabled := map[*Registration]bool{}
116-
for _, r := range registry {
117-
if filter(r) {
118-
disabled[r] = true
115+
handled := make(map[*Registration]bool, len(registry))
116+
if filter != nil {
117+
for _, r := range registry {
118+
if filter(r) {
119+
handled[r] = true
120+
}
119121
}
120122
}
121123

122-
ordered := make([]Registration, 0, len(registry)-len(disabled))
123-
added := map[*Registration]bool{}
124+
ordered := make([]Registration, 0, len(registry)-len(handled))
124125
for _, r := range registry {
125-
if disabled[r] {
126+
if handled[r] {
126127
continue
127128
}
128-
children(r, registry, added, disabled, &ordered)
129-
if !added[r] {
130-
ordered = append(ordered, *r)
131-
added[r] = true
132-
}
129+
handled[r] = true
130+
children(r, registry, handled, &ordered)
131+
ordered = append(ordered, *r)
133132
}
134133
return ordered
135134
}
136135

137-
func children(reg *Registration, registry []*Registration, added, disabled map[*Registration]bool, ordered *[]Registration) {
136+
func children(reg *Registration, registry []*Registration, handled map[*Registration]bool, ordered *[]Registration) {
138137
for _, t := range reg.Requires {
139138
for _, r := range registry {
140-
if (t == "*" || r.Type == t) && r != reg && !disabled[r] {
141-
children(r, registry, added, disabled, ordered)
142-
if !added[r] {
143-
*ordered = append(*ordered, *r)
144-
added[r] = true
145-
}
139+
if (t == "*" || r.Type == t) && r != reg && !handled[r] {
140+
handled[r] = true
141+
children(r, registry, handled, ordered)
142+
*ordered = append(*ordered, *r)
146143
}
147144
}
148145
}

0 commit comments

Comments
 (0)