@@ -40,59 +40,71 @@ func (p mockPlugin) Name() string { return p.name }
40
40
func (p mockPlugin ) Version () plugin.Version { return p .version }
41
41
func (p mockPlugin ) SupportedProjectVersions () []string { return p .projectVersions }
42
42
43
- func (mockPlugin ) UpdateContext (* plugin.Context ) {}
44
- func (mockPlugin ) BindFlags (* pflag.FlagSet ) {}
45
- func (mockPlugin ) InjectConfig (* config.Config ) {}
46
- func (mockPlugin ) Run () error { return nil }
47
-
48
- func makeBasePlugin (name , version string , projVers ... string ) plugin.Base {
43
+ func makeBasePlugin (name , version string , projVers ... string ) plugin.Plugin {
49
44
v , err := plugin .ParseVersion (version )
50
45
if err != nil {
51
46
panic (err )
52
47
}
53
48
return mockPlugin {name , v , projVers }
54
49
}
55
50
56
- func makePluginsForKeys (keys ... string ) (plugins []plugin.Base ) {
51
+ func makePluginsForKeys (keys ... string ) (plugins []plugin.Plugin ) {
57
52
for _ , key := range keys {
58
53
n , v := plugin .SplitKey (key )
59
54
plugins = append (plugins , makeBasePlugin (n , v , internalconfig .DefaultVersion ))
60
55
}
61
56
return
62
57
}
63
58
59
+ type mockSubcommand struct {}
60
+
61
+ func (mockSubcommand ) UpdateContext (* plugin.Context ) {}
62
+ func (mockSubcommand ) BindFlags (* pflag.FlagSet ) {}
63
+ func (mockSubcommand ) InjectConfig (* config.Config ) {}
64
+ func (mockSubcommand ) Run () error { return nil }
65
+
66
+ // nolint:maligned
64
67
type mockAllPlugin struct {
65
68
mockPlugin
66
69
mockInitPlugin
67
70
mockCreateAPIPlugin
68
71
mockCreateWebhookPlugin
72
+ mockEditPlugin
69
73
}
70
74
71
- type mockInitPlugin struct { mockPlugin }
72
- type mockCreateAPIPlugin struct { mockPlugin }
73
- type mockCreateWebhookPlugin struct { mockPlugin }
75
+ type mockInitPlugin struct { mockSubcommand }
76
+ type mockCreateAPIPlugin struct { mockSubcommand }
77
+ type mockCreateWebhookPlugin struct { mockSubcommand }
78
+ type mockEditPlugin struct { mockSubcommand }
74
79
75
- // GetInitPlugin will return the plugin which is responsible for initialized the project
76
- func (p mockInitPlugin ) GetInitPlugin () plugin.Init { return p }
80
+ // GetInitSubcommand implements plugin.Init
81
+ func (p mockInitPlugin ) GetInitSubcommand () plugin.InitSubcommand { return p }
77
82
78
- // GetCreateAPIPlugin will return the plugin which is responsible for scaffolding APIs for the project
79
- func (p mockCreateAPIPlugin ) GetCreateAPIPlugin () plugin.CreateAPI { return p }
83
+ // GetCreateAPISubcommand implements plugin.CreateAPI
84
+ func (p mockCreateAPIPlugin ) GetCreateAPISubcommand () plugin.CreateAPISubcommand { return p }
85
+
86
+ // GetCreateWebhookSubcommand implements plugin.CreateWebhook
87
+ func (p mockCreateWebhookPlugin ) GetCreateWebhookSubcommand () plugin.CreateWebhookSubcommand {
88
+ return p
89
+ }
80
90
81
- // GetCreateWebhookPlugin will return the plugin which is responsible for scaffolding webhooks for the project
82
- func (p mockCreateWebhookPlugin ) GetCreateWebhookPlugin () plugin.CreateWebhook { return p }
91
+ // GetEditSubcommand implements plugin.Edit
92
+ func (p mockEditPlugin ) GetEditSubcommand () plugin.EditSubcommand { return p }
83
93
84
- func makeAllPlugin (name , version string , projectVersions ... string ) plugin.Base {
94
+ func makeAllPlugin (name , version string , projectVersions ... string ) plugin.Plugin {
85
95
p := makeBasePlugin (name , version , projectVersions ... ).(mockPlugin )
96
+ subcommand := mockSubcommand {}
86
97
return mockAllPlugin {
87
98
p ,
88
- mockInitPlugin {p },
89
- mockCreateAPIPlugin {p },
90
- mockCreateWebhookPlugin {p },
99
+ mockInitPlugin {subcommand },
100
+ mockCreateAPIPlugin {subcommand },
101
+ mockCreateWebhookPlugin {subcommand },
102
+ mockEditPlugin {subcommand },
91
103
}
92
104
}
93
105
94
- func makeSetByProjVer (ps ... plugin.Base ) map [string ][]plugin.Base {
95
- set := make (map [string ][]plugin.Base )
106
+ func makeSetByProjVer (ps ... plugin.Plugin ) map [string ][]plugin.Plugin {
107
+ set := make (map [string ][]plugin.Plugin )
96
108
for _ , p := range ps {
97
109
for _ , version := range p .SupportedProjectVersions () {
98
110
set [version ] = append (set [version ], p )
@@ -117,7 +129,7 @@ var _ = Describe("CLI", func() {
117
129
pluginAV2 = makeAllPlugin (pluginNameA , "v2" , projectVersions ... )
118
130
pluginBV1 = makeAllPlugin (pluginNameB , "v1" , projectVersions ... )
119
131
pluginBV2 = makeAllPlugin (pluginNameB , "v2" , projectVersions ... )
120
- allPlugins = []plugin.Base {pluginAV1 , pluginAV2 , pluginBV1 , pluginBV2 }
132
+ allPlugins = []plugin.Plugin {pluginAV1 , pluginAV2 , pluginBV1 , pluginBV2 }
121
133
)
122
134
123
135
Describe ("New" , func () {
@@ -129,28 +141,28 @@ var _ = Describe("CLI", func() {
129
141
Expect (err ).NotTo (HaveOccurred ())
130
142
Expect (c ).NotTo (BeNil ())
131
143
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 )))
132
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
144
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
133
145
134
146
By ("setting two plugins with different names and versions" )
135
147
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (pluginAV1 , pluginBV2 ))
136
148
Expect (err ).NotTo (HaveOccurred ())
137
149
Expect (c ).NotTo (BeNil ())
138
150
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginBV2 )))
139
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
151
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
140
152
141
153
By ("setting two plugins with the same names and different versions" )
142
154
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (pluginAV1 , pluginAV2 ))
143
155
Expect (err ).NotTo (HaveOccurred ())
144
156
Expect (c ).NotTo (BeNil ())
145
157
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginAV2 )))
146
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
158
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
147
159
148
160
By ("setting two plugins with different names and the same version" )
149
161
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (pluginAV1 , pluginBV1 ))
150
162
Expect (err ).NotTo (HaveOccurred ())
151
163
Expect (c ).NotTo (BeNil ())
152
164
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginBV1 )))
153
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
165
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
154
166
})
155
167
156
168
It ("should return an error" , func () {
@@ -193,31 +205,31 @@ var _ = Describe("CLI", func() {
193
205
Expect (err ).NotTo (HaveOccurred ())
194
206
Expect (c ).NotTo (BeNil ())
195
207
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginAV2 )))
196
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
208
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
197
209
198
210
By (`setting cliPluginKey to "go/v1"` )
199
211
setPluginsFlag ("go/v1" )
200
212
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (pluginAV1 , pluginBV2 ))
201
213
Expect (err ).NotTo (HaveOccurred ())
202
214
Expect (c ).NotTo (BeNil ())
203
215
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginBV2 )))
204
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginAV1 }))
216
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginAV1 }))
205
217
206
218
By (`setting cliPluginKey to "go/v2"` )
207
219
setPluginsFlag ("go/v2" )
208
220
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (pluginAV1 , pluginBV2 ))
209
221
Expect (err ).NotTo (HaveOccurred ())
210
222
Expect (c ).NotTo (BeNil ())
211
223
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (pluginAV1 , pluginBV2 )))
212
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginBV2 }))
224
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginBV2 }))
213
225
214
226
By (`setting cliPluginKey to "go.test.com/v2"` )
215
227
setPluginsFlag ("go.test.com/v2" )
216
228
c , err = New (WithDefaultPlugins (pluginAV1 ), WithPlugins (allPlugins ... ))
217
229
Expect (err ).NotTo (HaveOccurred ())
218
230
Expect (c ).NotTo (BeNil ())
219
231
Expect (c .(* cli ).pluginsFromOptions ).To (Equal (makeSetByProjVer (allPlugins ... )))
220
- Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Base {pluginBV2 }))
232
+ Expect (c .(* cli ).resolvedPlugins ).To (Equal ([]plugin.Plugin {pluginBV2 }))
221
233
})
222
234
223
235
It ("should return an error" , func () {
0 commit comments