diff --git a/cmd/root.go b/cmd/root.go index b5663c15..7b8624a9 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -97,7 +97,7 @@ To build a package, from a tree definition: plugin := viper.GetStringSlice("plugin") - bus.Manager.Load(plugin...).Register() + bus.Manager.Initialize(plugin...) if len(bus.Manager.Plugins) != 0 { Info(":lollipop:Enabled plugins:") for _, p := range bus.Manager.Plugins { diff --git a/pkg/bus/events.go b/pkg/bus/events.go index bc4f58f0..868a7556 100644 --- a/pkg/bus/events.go +++ b/pkg/bus/events.go @@ -1,6 +1,8 @@ package bus import ( + . "github.com/mudler/luet/pkg/logger" + "github.com/mudler/go-pluggable" ) @@ -47,21 +49,47 @@ var ( ) // Manager is the bus instance manager, which subscribes plugins to events emitted by Luet -var Manager *pluggable.Manager = pluggable.NewManager( - []pluggable.EventType{ - EventPackageInstall, - EventPackageUnInstall, - EventPackagePreBuild, - EventPackagePreBuildArtifact, - EventPackagePostBuildArtifact, - EventPackagePostBuild, - EventRepositoryPreBuild, - EventRepositoryPostBuild, - EventImagePreBuild, - EventImagePrePull, - EventImagePrePush, - EventImagePostBuild, - EventImagePostPull, - EventImagePostPush, - }, -) +var Manager *Bus = &Bus{ + Manager: pluggable.NewManager( + []pluggable.EventType{ + EventPackageInstall, + EventPackageUnInstall, + EventPackagePreBuild, + EventPackagePreBuildArtifact, + EventPackagePostBuildArtifact, + EventPackagePostBuild, + EventRepositoryPreBuild, + EventRepositoryPostBuild, + EventImagePreBuild, + EventImagePrePull, + EventImagePrePush, + EventImagePostBuild, + EventImagePostPull, + EventImagePostPush, + }, + ), +} + +type Bus struct { + *pluggable.Manager +} + +func (b *Bus) Initialize(plugin ...string) { + b.Manager.Load(plugin...).Register() + + for _, e := range b.Manager.Events { + b.Manager.Response(e, func(p *pluggable.Plugin, r *pluggable.EventResponse) { + if r.Errored() { + Fatal("Plugin", p.Name, "at", p.Executable, "Error", r.Error) + } + Debug( + "plugin_event", + "received from", + p.Name, + "at", + p.Executable, + r, + ) + }) + } +} diff --git a/tests/fixtures/plugin/test-foo b/tests/fixtures/plugin/test-foo index 7073bea4..075f1756 100755 --- a/tests/fixtures/plugin/test-foo +++ b/tests/fixtures/plugin/test-foo @@ -1,3 +1,5 @@ #!/bin/bash echo "$1" >> $EVENT_FILE -echo "$2" >> $PAYLOAD_FILE \ No newline at end of file +echo "$2" >> $PAYLOAD_FILE + +echo "{}" \ No newline at end of file