diff --git a/cmd/xbus.go b/cmd/xbus.go index 2f6044b42451d1e6786f7f847043cf99b02f260d_Y21kL3hidXMuZ28=..f63320edc50f3c5389e1605854d2ab26baf5e74a_Y21kL3hidXMuZ28= 100644 --- a/cmd/xbus.go +++ b/cmd/xbus.go @@ -20,6 +20,7 @@ } SetupXbusServeCmd(program, c) + SetupXbusActorListCmd(program, c) return &cmd } diff --git a/cmd/xbus_actor_list.go b/cmd/xbus_actor_list.go new file mode 100644 index 0000000000000000000000000000000000000000..f63320edc50f3c5389e1605854d2ab26baf5e74a_Y21kL3hidXNfYWN0b3JfbGlzdC5nbw== --- /dev/null +++ b/cmd/xbus_actor_list.go @@ -0,0 +1,37 @@ +package cmd + +import ( + "fmt" + + "github.com/jessevdk/go-flags" +) + +func SetupXbusActorListCmd[E any](program *Program[E], cmd *flags.Command) *XbusActorListCmd[E] { + serveCmd := XbusActorListCmd[E]{ + program: program, + } + + _, err := cmd.AddCommand("actor-list", "List all the available actor services", "", &serveCmd) + if err != nil { + panic(err) + } + + return &serveCmd +} + +//nolint:lll +type XbusActorListCmd[E any] struct { + program *Program[E] +} + +func (cmd *XbusActorListCmd[E]) Execute([]string) error { + + fmt.Printf("The following actor services are provided by %s:\n", cmd.program.Name) + for _, ff := range cmd.program.setupXbusActors { + for _, factory := range ff(cmd.program) { + fmt.Println("*", factory.Name) + } + } + + return nil +}