(found map[string]string, done map[string][]string)
| 255 | } |
| 256 | |
| 257 | func (o *Options) loadPredicatePlugins(found map[string]string, done map[string][]string) error { |
| 258 | for _, pred := range o.PredicatePlugins { |
| 259 | name := pred[0] |
| 260 | path, ok := found[name] |
| 261 | if !ok { |
| 262 | return fmt.Errorf("predicate plugin %s not found in plugin dirs", name) |
| 263 | } |
| 264 | spec, err := loadPredicatePlugin(path, pred[1:]) |
| 265 | if err != nil { |
| 266 | return fmt.Errorf("failed to load plugin %s: %s", path, err) |
| 267 | } |
| 268 | o.CustomPredicates = append(o.CustomPredicates, spec) |
| 269 | log.Printf("loaded plugin %s (%s) from %s", name, spec.Name(), path) |
| 270 | markPluginLoaded(done, name, "InitPredicate") |
| 271 | } |
| 272 | return nil |
| 273 | } |
| 274 | |
| 275 | func loadPredicatePlugin(path string, args []string) (routing.PredicateSpec, error) { |
| 276 | mod, err := plugin.Open(path) |
no test coverage detected