LoadDir loads a plugin from the given directory.
(dirname string)
| 141 | |
| 142 | // LoadDir loads a plugin from the given directory. |
| 143 | func LoadDir(dirname string) (Plugin, error) { |
| 144 | pluginfile := filepath.Join(dirname, PluginFileName) |
| 145 | metadataData, err := os.ReadFile(pluginfile) |
| 146 | if err != nil { |
| 147 | return nil, fmt.Errorf("failed to read plugin at %q: %w", pluginfile, err) |
| 148 | } |
| 149 | |
| 150 | m, err := loadMetadata(metadataData) |
| 151 | if err != nil { |
| 152 | return nil, fmt.Errorf("failed to load plugin %q: %w", dirname, err) |
| 153 | } |
| 154 | |
| 155 | pm, err := newPrototypePluginManager() |
| 156 | if err != nil { |
| 157 | return nil, fmt.Errorf("failed to create plugin manager: %w", err) |
| 158 | } |
| 159 | return pm.CreatePlugin(dirname, m) |
| 160 | } |
| 161 | |
| 162 | func LogIgnorePluginLoadErrorFilterFunc(pluginYAML string, err error) error { |
| 163 | slog.Warn("failed to load plugin (ignoring)", slog.String("plugin_yaml", pluginYAML), slog.Any("error", err)) |
searching dependent graphs…