Skip to content

Commit 421ed0a

Browse files
authored
Add archive registry support for curated plugin (#2797)
1 parent eb3622e commit 421ed0a

File tree

7 files changed

+723
-566
lines changed

7 files changed

+723
-566
lines changed

private/bufpkg/bufplugin/bufplugin.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ func PluginToProtoPluginRegistryType(plugin Plugin) registryv1alpha1.PluginRegis
7878
registryType = registryv1alpha1.PluginRegistryType_PLUGIN_REGISTRY_TYPE_SWIFT
7979
} else if plugin.Registry().Python != nil {
8080
registryType = registryv1alpha1.PluginRegistryType_PLUGIN_REGISTRY_TYPE_PYTHON
81+
} else if plugin.Registry().Archive != nil {
82+
registryType = registryv1alpha1.PluginRegistryType_PLUGIN_REGISTRY_TYPE_ARCHIVE
8183
}
8284
}
8385
return registryType
@@ -195,6 +197,12 @@ func PluginRegistryToProtoRegistryConfig(pluginRegistry *bufpluginconfig.Registr
195197
return nil, err
196198
}
197199
registryConfig.RegistryConfig = &registryv1alpha1.RegistryConfig_PythonConfig{PythonConfig: pythonConfig}
200+
} else if pluginRegistry.Archive != nil {
201+
archiveConfig, err := ArchiveRegistryConfigToProtoArchiveConfig(pluginRegistry.Archive)
202+
if err != nil {
203+
return nil, err
204+
}
205+
registryConfig.RegistryConfig = &registryv1alpha1.RegistryConfig_ArchiveConfig{ArchiveConfig: archiveConfig}
198206
}
199207
return registryConfig, nil
200208
}
@@ -264,6 +272,12 @@ func ProtoRegistryConfigToPluginRegistry(config *registryv1alpha1.RegistryConfig
264272
return nil, err
265273
}
266274
registryConfig.Python = pythonConfig
275+
} else if protoArchiveConfig := config.GetArchiveConfig(); protoArchiveConfig != nil {
276+
archiveConfig, err := ProtoArchiveConfigToArchiveRegistryConfig(protoArchiveConfig)
277+
if err != nil {
278+
return nil, err
279+
}
280+
registryConfig.Archive = archiveConfig
267281
}
268282
return registryConfig, nil
269283
}
@@ -306,6 +320,14 @@ func PythonRegistryConfigToProtoPythonConfig(pythonConfig *bufpluginconfig.Pytho
306320
return protoPythonConfig, nil
307321
}
308322

323+
func ProtoArchiveConfigToArchiveRegistryConfig(protoArchiveConfig *registryv1alpha1.ArchiveConfig) (*bufpluginconfig.ArchiveRegistryConfig, error) {
324+
return &bufpluginconfig.ArchiveRegistryConfig{}, nil
325+
}
326+
327+
func ArchiveRegistryConfigToProtoArchiveConfig(archiveConfig *bufpluginconfig.ArchiveRegistryConfig) (*registryv1alpha1.ArchiveConfig, error) {
328+
return &registryv1alpha1.ArchiveConfig{}, nil
329+
}
330+
309331
func ProtoSwiftConfigToSwiftRegistryConfig(protoSwiftConfig *registryv1alpha1.SwiftConfig) (*bufpluginconfig.SwiftRegistryConfig, error) {
310332
swiftConfig := &bufpluginconfig.SwiftRegistryConfig{}
311333
runtimeLibs := protoSwiftConfig.GetRuntimeLibraries()

private/bufpkg/bufplugin/bufpluginconfig/bufpluginconfig.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,12 @@ type Config struct {
8787
//
8888
// Only one field will be set.
8989
type RegistryConfig struct {
90-
Go *GoRegistryConfig
91-
NPM *NPMRegistryConfig
92-
Maven *MavenRegistryConfig
93-
Swift *SwiftRegistryConfig
94-
Python *PythonRegistryConfig
90+
Go *GoRegistryConfig
91+
NPM *NPMRegistryConfig
92+
Maven *MavenRegistryConfig
93+
Swift *SwiftRegistryConfig
94+
Python *PythonRegistryConfig
95+
Archive *ArchiveRegistryConfig
9596
// Options is the set of options passed into the plugin for the
9697
// remote registry.
9798
//
@@ -241,6 +242,8 @@ type PythonRegistryConfig struct {
241242
PackageType string
242243
}
243244

245+
type ArchiveRegistryConfig struct{}
246+
244247
// ConfigOption is an optional option used when loading a Config.
245248
type ConfigOption func(*configOptions)
246249

@@ -366,12 +369,13 @@ type ExternalDependency struct {
366369
// ExternalRegistryConfig is the external configuration for the registry
367370
// of a plugin.
368371
type ExternalRegistryConfig struct {
369-
Go *ExternalGoRegistryConfig `json:"go,omitempty" yaml:"go,omitempty"`
370-
NPM *ExternalNPMRegistryConfig `json:"npm,omitempty" yaml:"npm,omitempty"`
371-
Maven *ExternalMavenRegistryConfig `json:"maven,omitempty" yaml:"maven,omitempty"`
372-
Swift *ExternalSwiftRegistryConfig `json:"swift,omitempty" yaml:"swift,omitempty"`
373-
Python *ExternalPythonRegistryConfig `json:"python,omitempty" yaml:"python,omitempty"`
374-
Opts []string `json:"opts,omitempty" yaml:"opts,omitempty"`
372+
Go *ExternalGoRegistryConfig `json:"go,omitempty" yaml:"go,omitempty"`
373+
NPM *ExternalNPMRegistryConfig `json:"npm,omitempty" yaml:"npm,omitempty"`
374+
Maven *ExternalMavenRegistryConfig `json:"maven,omitempty" yaml:"maven,omitempty"`
375+
Swift *ExternalSwiftRegistryConfig `json:"swift,omitempty" yaml:"swift,omitempty"`
376+
Python *ExternalPythonRegistryConfig `json:"python,omitempty" yaml:"python,omitempty"`
377+
Archive *ExternalArchiveRegistryConfig `json:"archive,omitempty" yaml:"archive,omitempty"`
378+
Opts []string `json:"opts,omitempty" yaml:"opts,omitempty"`
375379
}
376380

377381
// ExternalGoRegistryConfig is the external registry configuration for a Go plugin.
@@ -489,6 +493,8 @@ type ExternalPythonRegistryConfig struct {
489493
PackageType string `json:"package_type,omitempty" yaml:"package_type,omitempty"`
490494
}
491495

496+
type ExternalArchiveRegistryConfig struct{}
497+
492498
type externalConfigVersion struct {
493499
Version string `json:"version,omitempty" yaml:"version,omitempty"`
494500
}

private/bufpkg/bufplugin/bufpluginconfig/bufpluginconfig_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,29 @@ func TestParsePluginConfigPythonYAML(t *testing.T) {
328328
)
329329
}
330330

331+
func TestParsePluginConfigArchiveYAML(t *testing.T) {
332+
t.Parallel()
333+
pluginConfig, err := ParseConfig(filepath.Join("testdata", "success", "archive", "buf.plugin.yaml"))
334+
require.NoError(t, err)
335+
pluginIdentity, err := bufpluginref.PluginIdentityForString("buf.build/community/pseudomuto-doc")
336+
require.NoError(t, err)
337+
require.Equal(
338+
t,
339+
&Config{
340+
Name: pluginIdentity,
341+
PluginVersion: "v1.5.1",
342+
SourceURL: "https://github.com/pseudomuto/protoc-gen-doc",
343+
Description: "Documentation generator plugin for Google Protocol Buffers.",
344+
SPDXLicenseID: "MIT",
345+
LicenseURL: "https://github.com/pseudomuto/protoc-gen-doc/blob/v1.5.1/LICENSE.md",
346+
Registry: &RegistryConfig{
347+
Archive: &ArchiveRegistryConfig{},
348+
},
349+
},
350+
pluginConfig,
351+
)
352+
}
353+
331354
func TestParsePluginConfigOptionsYAML(t *testing.T) {
332355
t.Parallel()
333356
pluginConfig, err := ParseConfig(filepath.Join("testdata", "success", "options", "buf.plugin.yaml"))

private/bufpkg/bufplugin/bufpluginconfig/config.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,12 @@ func newConfig(externalConfig ExternalConfig, options []ConfigOption) (*Config,
8787

8888
func newRegistryConfig(externalRegistryConfig ExternalRegistryConfig) (*RegistryConfig, error) {
8989
var (
90-
isGoEmpty = externalRegistryConfig.Go == nil
91-
isNPMEmpty = externalRegistryConfig.NPM == nil
92-
isMavenEmpty = externalRegistryConfig.Maven == nil
93-
isSwiftEmpty = externalRegistryConfig.Swift == nil
94-
isPythonEmpty = externalRegistryConfig.Python == nil
90+
isGoEmpty = externalRegistryConfig.Go == nil
91+
isNPMEmpty = externalRegistryConfig.NPM == nil
92+
isMavenEmpty = externalRegistryConfig.Maven == nil
93+
isSwiftEmpty = externalRegistryConfig.Swift == nil
94+
isPythonEmpty = externalRegistryConfig.Python == nil
95+
isArchiveEmpty = externalRegistryConfig.Archive == nil
9596
)
9697
var registryCount int
9798
for _, isEmpty := range []bool{
@@ -100,6 +101,7 @@ func newRegistryConfig(externalRegistryConfig ExternalRegistryConfig) (*Registry
100101
isMavenEmpty,
101102
isSwiftEmpty,
102103
isPythonEmpty,
104+
isArchiveEmpty,
103105
} {
104106
if !isEmpty {
105107
registryCount++
@@ -161,6 +163,15 @@ func newRegistryConfig(externalRegistryConfig ExternalRegistryConfig) (*Registry
161163
Python: pythonRegistryConfig,
162164
Options: options,
163165
}, nil
166+
case !isArchiveEmpty:
167+
archiveRegistryConfig, err := newArchiveRegistryConfig(externalRegistryConfig.Archive)
168+
if err != nil {
169+
return nil, err
170+
}
171+
return &RegistryConfig{
172+
Archive: archiveRegistryConfig,
173+
Options: options,
174+
}, nil
164175
default:
165176
return nil, errors.New("unknown registry configuration")
166177
}
@@ -357,6 +368,10 @@ func newPythonRegistryConfig(externalPythonRegistryConfig *ExternalPythonRegistr
357368
}, nil
358369
}
359370

371+
func newArchiveRegistryConfig(externalArchiveRegistryConfig *ExternalArchiveRegistryConfig) (*ArchiveRegistryConfig, error) {
372+
return &ArchiveRegistryConfig{}, nil
373+
}
374+
360375
func pluginIdentityForStringWithOverrideRemote(identityStr string, overrideRemote string) (bufpluginref.PluginIdentity, error) {
361376
identity, err := bufpluginref.PluginIdentityForString(identityStr)
362377
if err != nil {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
version: v1
2+
name: buf.build/community/pseudomuto-doc
3+
plugin_version: v1.5.1
4+
source_url: https://github.com/pseudomuto/protoc-gen-doc
5+
description: Documentation generator plugin for Google Protocol Buffers.
6+
spdx_license_id: MIT
7+
license_url: https://github.com/pseudomuto/protoc-gen-doc/blob/v1.5.1/LICENSE.md
8+
registry:
9+
archive: {}

0 commit comments

Comments
 (0)