diff --git a/cmd/root.go b/cmd/root.go index 2ad2c1e1c..c27934640 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -15,7 +15,6 @@ import ( "github.com/navidrome/navidrome/db" "github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/model" - "github.com/navidrome/navidrome/plugins" "github.com/navidrome/navidrome/resources" "github.com/navidrome/navidrome/scanner" "github.com/navidrome/navidrome/scheduler" @@ -336,7 +335,7 @@ func startPluginManager(ctx context.Context) func() error { return nil } log.Info(ctx, "Starting plugin manager") - manager := plugins.GetManager() + manager := GetPluginManager(ctx) return manager.Start(ctx) } } diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index 70f29caa2..78846f631 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -187,6 +187,18 @@ func GetPlaybackServer() playback.PlaybackServer { return playbackServer } +func getPluginManager() *plugins.Manager { + manager := plugins.GetManager() + return manager +} + // wire_injectors.go: var allProviders = wire.NewSet(core.Set, artwork.Set, server.New, subsonic.New, nativeapi.New, public.New, persistence.New, lastfm.NewRouter, listenbrainz.NewRouter, events.GetBroker, scanner.New, scanner.GetWatcher, metrics.GetPrometheusInstance, db.Db, plugins.GetManager, wire.Bind(new(agents.PluginLoader), new(*plugins.Manager)), wire.Bind(new(scrobbler.PluginLoader), new(*plugins.Manager)), wire.Bind(new(core.Watcher), new(scanner.Watcher))) + +func GetPluginManager(ctx context.Context) *plugins.Manager { + manager := getPluginManager() + manager.SetSubsonicRouter(CreateSubsonicAPIRouter(ctx)) + manager.SetDataStore(CreateDataStore()) + return manager +} diff --git a/cmd/wire_injectors.go b/cmd/wire_injectors.go index 437c8863f..7a90d8bf4 100644 --- a/cmd/wire_injectors.go +++ b/cmd/wire_injectors.go @@ -118,3 +118,16 @@ func GetPlaybackServer() playback.PlaybackServer { allProviders, )) } + +func getPluginManager() *plugins.Manager { + panic(wire.Build( + allProviders, + )) +} + +func GetPluginManager(ctx context.Context) *plugins.Manager { + manager := getPluginManager() + manager.SetSubsonicRouter(CreateSubsonicAPIRouter(ctx)) + manager.SetDataStore(CreateDataStore()) + return manager +}