(found map[string]string, done map[string][]string)
| 302 | } |
| 303 | |
| 304 | func (o *Options) loadDataClientPlugins(found map[string]string, done map[string][]string) error { |
| 305 | for _, pred := range o.DataClientPlugins { |
| 306 | name := pred[0] |
| 307 | path, ok := found[name] |
| 308 | if !ok { |
| 309 | return fmt.Errorf("data client plugin %s not found in plugin dirs", name) |
| 310 | } |
| 311 | spec, err := loadDataClientPlugin(path, pred[1:]) |
| 312 | if err != nil { |
| 313 | return fmt.Errorf("failed to load plugin %s: %s", path, err) |
| 314 | } |
| 315 | o.CustomDataClients = append(o.CustomDataClients, spec) |
| 316 | log.Printf("loaded plugin %s from %s", name, path) |
| 317 | markPluginLoaded(done, name, "InitDataClient") |
| 318 | } |
| 319 | return nil |
| 320 | } |
| 321 | |
| 322 | func loadDataClientPlugin(path string, args []string) (routing.DataClient, error) { |
| 323 | mod, err := plugin.Open(path) |
no test coverage detected