11package plugin
22
33import (
4+ "bufio"
5+ "fmt"
6+ "io"
7+ "log"
8+ "os"
49 "os/exec"
10+ "strings"
511 "sync"
612
713 "github.com/go-semantic-release/semantic-release/v2/pkg/analyzer"
@@ -15,8 +21,9 @@ import (
1521)
1622
1723type PluginOpts struct {
18- Type string
19- Cmd * exec.Cmd
24+ Type string
25+ PluginName string
26+ Cmd * exec.Cmd
2027}
2128
2229var runningClientsMx sync.Mutex
@@ -33,6 +40,19 @@ func KillAllPlugins() {
3340func startPlugin (opts * PluginOpts ) (interface {}, error ) {
3441 runningClientsMx .Lock ()
3542 defer runningClientsMx .Unlock ()
43+ logR , logW := io .Pipe ()
44+ pluginLogger := log .New (os .Stderr , fmt .Sprintf ("[%s]: " , opts .PluginName ), 0 )
45+ go func () {
46+ logLineScanner := bufio .NewScanner (logR )
47+ for logLineScanner .Scan () {
48+ line := logLineScanner .Text ()
49+ // skip JSON logging
50+ if strings .HasPrefix (line , "{" ) {
51+ continue
52+ }
53+ pluginLogger .Println (line )
54+ }
55+ }()
3656 client := plugin .NewClient (& plugin.ClientConfig {
3757 HandshakeConfig : Handshake ,
3858 VersionedPlugins : map [int ]plugin.PluginSet {
@@ -45,6 +65,7 @@ func startPlugin(opts *PluginOpts) (interface{}, error) {
4565 Cmd : opts .Cmd ,
4666 AllowedProtocols : []plugin.Protocol {plugin .ProtocolGRPC },
4767 Logger : hclog .NewNullLogger (),
68+ Stderr : logW ,
4869 })
4970
5071 rpcClient , err := client .Client ()
0 commit comments