Skip to content

Commit 2fe7a31

Browse files
feat: add files updater plugin
1 parent 18e84ac commit 2fe7a31

File tree

10 files changed

+713
-8
lines changed

10 files changed

+713
-8
lines changed

pkg/plugin/buildin/buildin.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ import (
1818
"github.com/go-semantic-release/semantic-release/pkg/provider"
1919
"github.com/go-semantic-release/semantic-release/pkg/provider/github"
2020
"github.com/go-semantic-release/semantic-release/pkg/provider/gitlab"
21+
"github.com/go-semantic-release/semantic-release/pkg/updater"
22+
"github.com/go-semantic-release/semantic-release/pkg/updater/npm"
2123
"github.com/urfave/cli/v2"
2224
)
2325

@@ -71,6 +73,12 @@ func GetPluginCommands() []*cli.Command {
7173
Hidden: true,
7274
HideHelp: true,
7375
},
76+
{
77+
Name: updater.FilesUpdaterPluginName + "_npm",
78+
Action: npm.Main,
79+
Hidden: true,
80+
HideHelp: true,
81+
},
7482
}
7583
}
7684

pkg/plugin/client.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/go-semantic-release/semantic-release/pkg/condition"
99
"github.com/go-semantic-release/semantic-release/pkg/generator"
1010
"github.com/go-semantic-release/semantic-release/pkg/provider"
11+
"github.com/go-semantic-release/semantic-release/pkg/updater"
1112
"github.com/hashicorp/go-hclog"
1213
"github.com/hashicorp/go-plugin"
1314
)
@@ -90,3 +91,11 @@ func StartProviderPlugin(opts *PluginOpts) (provider.Provider, error) {
9091
}
9192
return raw.(provider.Provider), nil
9293
}
94+
95+
func StartFilesUpdaterPlugin(opts *PluginOpts) (updater.FilesUpdater, error) {
96+
raw, err := startPlugin(opts)
97+
if err != nil {
98+
return nil, err
99+
}
100+
return raw.(updater.FilesUpdater), nil
101+
}

pkg/plugin/grpc.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"github.com/go-semantic-release/semantic-release/pkg/condition"
99
"github.com/go-semantic-release/semantic-release/pkg/generator"
1010
"github.com/go-semantic-release/semantic-release/pkg/provider"
11+
"github.com/go-semantic-release/semantic-release/pkg/updater"
1112
"github.com/hashicorp/go-plugin"
1213
"google.golang.org/grpc"
1314
)
@@ -36,7 +37,12 @@ func (p *GRPCWrapper) GRPCServer(broker *plugin.GRPCBroker, s *grpc.Server) erro
3637
provider.RegisterProviderPluginServer(s, &provider.Server{
3738
Impl: p.Impl.(provider.Provider),
3839
})
40+
case updater.FilesUpdaterPluginName:
41+
updater.RegisterFilesUpdaterPluginServer(s, &updater.FilesUpdaterServer{
42+
Impl: p.Impl.(updater.FilesUpdater),
43+
})
3944
}
45+
4046
return nil
4147
}
4248

@@ -58,6 +64,10 @@ func (p *GRPCWrapper) GRPCClient(ctx context.Context, broker *plugin.GRPCBroker,
5864
return &provider.Client{
5965
Impl: provider.NewProviderPluginClient(c),
6066
}, nil
67+
case updater.FilesUpdaterPluginName:
68+
return &updater.FilesUpdaterClient{
69+
Impl: updater.NewFilesUpdaterPluginClient(c),
70+
}, nil
6171
}
6272
return nil, errors.New("unknown plugin type")
6373
}

pkg/plugin/manager/manager.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"github.com/go-semantic-release/semantic-release/pkg/plugin/buildin"
1212
"github.com/go-semantic-release/semantic-release/pkg/provider"
1313
"github.com/go-semantic-release/semantic-release/pkg/updater"
14-
"github.com/go-semantic-release/semantic-release/pkg/updater/npm"
1514
)
1615

1716
type PluginManager struct {
@@ -55,29 +54,28 @@ func (m *PluginManager) GetProvider() (provider.Provider, error) {
5554

5655
func (m *PluginManager) GetCommitAnalyzer() (analyzer.CommitAnalyzer, error) {
5756
ca, err := plugin.StartCommitAnalyzerPlugin(buildin.GetPluginOpts(analyzer.CommitAnalyzerPluginName))
58-
5957
if err != nil {
6058
return nil, err
6159
}
62-
6360
return ca, nil
6461
}
6562

6663
func (m *PluginManager) GetChangelogGenerator() (generator.ChangelogGenerator, error) {
6764
cg, err := plugin.StartChangelogGeneratorPlugin(buildin.GetPluginOpts(generator.ChangelogGeneratorPluginName))
68-
6965
if err != nil {
7066
return nil, err
7167
}
72-
7368
return cg, nil
7469
}
7570

7671
func (m *PluginManager) GetUpdater() (updater.Updater, error) {
72+
npmUpdater, err := plugin.StartFilesUpdaterPlugin(buildin.GetPluginOpts(updater.FilesUpdaterPluginName, "npm"))
73+
if err != nil {
74+
return nil, err
75+
}
76+
7777
updater := &updater.ChainedUpdater{
78-
Updaters: []updater.FilesUpdater{
79-
&npm.Updater{},
80-
},
78+
Updaters: []updater.FilesUpdater{npmUpdater},
8179
}
8280
return updater, nil
8381
}

pkg/plugin/serve.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"github.com/go-semantic-release/semantic-release/pkg/condition"
66
"github.com/go-semantic-release/semantic-release/pkg/generator"
77
"github.com/go-semantic-release/semantic-release/pkg/provider"
8+
"github.com/go-semantic-release/semantic-release/pkg/updater"
89
"github.com/hashicorp/go-plugin"
910
)
1011

@@ -17,12 +18,14 @@ type CommitAnalyzerFunc func() analyzer.CommitAnalyzer
1718
type CIConditionFunc func() condition.CICondition
1819
type ChangelogGeneratorFunc func() generator.ChangelogGenerator
1920
type ProviderFunc func() provider.Provider
21+
type FilesUpdaterFunc func() updater.FilesUpdater
2022

2123
type ServeOpts struct {
2224
CommitAnalyzer CommitAnalyzerFunc
2325
CICondition CIConditionFunc
2426
ChangelogGenerator ChangelogGeneratorFunc
2527
Provider ProviderFunc
28+
FilesUpdater FilesUpdaterFunc
2629
}
2730

2831
func Serve(opts *ServeOpts) {
@@ -56,6 +59,13 @@ func Serve(opts *ServeOpts) {
5659
}
5760
}
5861

62+
if opts.FilesUpdater != nil {
63+
pluginSet[updater.FilesUpdaterPluginName] = &GRPCWrapper{
64+
Type: updater.FilesUpdaterPluginName,
65+
Impl: opts.FilesUpdater(),
66+
}
67+
}
68+
5969
plugin.Serve(&plugin.ServeConfig{
6070
HandshakeConfig: Handshake,
6171
VersionedPlugins: map[int]plugin.PluginSet{

pkg/updater/npm/npm.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import (
55
"io/ioutil"
66
"os"
77
"path"
8+
9+
"github.com/go-semantic-release/semantic-release/pkg/plugin"
10+
"github.com/go-semantic-release/semantic-release/pkg/updater"
11+
"github.com/urfave/cli/v2"
812
)
913

1014
const npmrc = "//registry.npmjs.org/:_authToken=${NPM_TOKEN}\n"
@@ -65,3 +69,12 @@ func (u *Updater) Apply(file, newVersion string) error {
6569

6670
return err
6771
}
72+
73+
func Main(c *cli.Context) error {
74+
plugin.Serve(&plugin.ServeOpts{
75+
FilesUpdater: func() updater.FilesUpdater {
76+
return &Updater{}
77+
},
78+
})
79+
return nil
80+
}

0 commit comments

Comments
 (0)