Documentation
¶
Overview ¶
Package bufpluginconfig defines the buf.plugin.yaml file.
Index ¶
- Constants
- Variables
- func ExistingConfigFilePath(ctx context.Context, readBucket storage.ReadBucket) (string, error)
- func OptionsSliceToPluginOptions(options []string) map[string]string
- func PluginOptionsToOptionsSlice(pluginOptions map[string]string) []string
- type Config
- type ConfigOption
- type ExternalConfig
- type ExternalDependency
- type ExternalGoRegistryConfig
- type ExternalMavenCompilerConfig
- type ExternalMavenCompilerJavaConfig
- type ExternalMavenCompilerKotlinConfig
- type ExternalMavenRegistryConfig
- type ExternalMavenRuntimeConfig
- type ExternalNPMRegistryConfig
- type ExternalPythonRegistryConfig
- type ExternalRegistryConfig
- type ExternalSwiftRegistryConfig
- type ExternalSwiftRegistryDependencyConfig
- type ExternalSwiftRegistryDependencyPlatformConfig
- type GoRegistryConfig
- type GoRegistryDependencyConfig
- type MavenCompilerConfig
- type MavenCompilerJavaConfig
- type MavenCompilerKotlinConfig
- type MavenDependencyConfig
- type MavenRegistryConfig
- type MavenRuntimeConfig
- type NPMRegistryConfig
- type NPMRegistryDependencyConfig
- type PythonRegistryConfig
- type RegistryConfig
- type SwiftRegistryConfig
- type SwiftRegistryDependencyConfig
- type SwiftRegistryDependencyPlatformConfig
Constants ¶
const ( // ExternalConfigFilePath is the default configuration file path for v1. ExternalConfigFilePath = "buf.plugin.yaml" // V1Version is the version string used to indicate the v1 version of the buf.plugin.yaml file. V1Version = "v1" )
Variables ¶
var ( // AllConfigFilePaths are all acceptable config file paths without overrides. // // These are in the order we should check. AllConfigFilePaths = []string{ ExternalConfigFilePath, } )
Functions ¶
func ExistingConfigFilePath ¶
ExistingConfigFilePath checks if a configuration file exists, and if so, returns the path within the ReadBucket of this configuration file.
Returns empty string and no error if no configuration file exists.
func OptionsSliceToPluginOptions ¶ added in v1.8.0
OptionsSliceToPluginOptions converts a slice of plugin options to a map (using the first '=' as a delimiter between key and value). If no '=' is found, the option will be stored in the map with an empty string value.
func PluginOptionsToOptionsSlice ¶ added in v1.8.0
PluginOptionsToOptionsSlice converts a map representation of plugin options to a slice of the form '<key>=<value>' or '<key>' for empty values.
Types ¶
type Config ¶
type Config struct {
// Name is the name of the plugin (e.g. 'buf.build/protocolbuffers/go').
Name bufpluginref.PluginIdentity
// PluginVersion is the version of the plugin's implementation
// (e.g. the protoc-gen-connect-go implementation is v0.2.0).
//
// This excludes any other details found in the buf.plugin.yaml
// or plugin source (e.g. Dockerfile) that would otherwise influence
// the plugin's behavior.
PluginVersion string
// SourceURL is an optional attribute used to specify where the source
// for the plugin can be found.
SourceURL string
// Description is an optional attribute to provide a more detailed
// description for the plugin.
Description string
// Dependencies are the dependencies this plugin has on other plugins.
//
// An example of a dependency might be a 'protoc-gen-go-grpc' plugin
// which depends on the 'protoc-gen-go' generated code.
Dependencies []bufpluginref.PluginReference
// OutputLanguages is a list of output languages the plugin supports.
OutputLanguages []string
// Registry is the registry configuration, which lets the user specify
// dependencies and other metadata that applies to a specific
// remote generation registry (e.g. the Go module proxy, NPM registry,
// etc).
Registry *RegistryConfig
// SPDXLicenseID is the license of the plugin, which should be one of
// the identifiers defined in https://spdx.org/licenses
SPDXLicenseID string
// LicenseURL specifies where the plugin's license can be found.
LicenseURL string
// IntegrationGuideURL is an optional attribute used to specify where
// the plugin integration guide can be found.
IntegrationGuideURL string
}
Config is the plugin config.
func GetConfigForBucket ¶
func GetConfigForBucket(ctx context.Context, readBucket storage.ReadBucket, options ...ConfigOption) (*Config, error)
GetConfigForBucket gets the Config for the YAML data at ConfigFilePath.
If the data is of length 0, returns the default config.
func GetConfigForData ¶
GetConfigForData gets the Config for the given JSON or YAML data.
If the data is of length 0, returns the default config.
func ParseConfig ¶
func ParseConfig(config string, options ...ConfigOption) (*Config, error)
ParseConfig parses the file at the given path as a Config.
type ConfigOption ¶ added in v1.8.0
type ConfigOption func(*configOptions)
ConfigOption is an optional option used when loading a Config.
func WithOverrideRemote ¶ added in v1.8.0
func WithOverrideRemote(remote string) ConfigOption
WithOverrideRemote will update the remote found in the plugin name and dependencies.
type ExternalConfig ¶
type ExternalConfig struct {
Version string `json:"version,omitempty" yaml:"version,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
PluginVersion string `json:"plugin_version,omitempty" yaml:"plugin_version,omitempty"`
SourceURL string `json:"source_url,omitempty" yaml:"source_url,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Deps []ExternalDependency `json:"deps,omitempty" yaml:"deps,omitempty"`
OutputLanguages []string `json:"output_languages,omitempty" yaml:"output_languages,omitempty"`
Registry ExternalRegistryConfig `json:"registry,omitempty" yaml:"registry,omitempty"`
SPDXLicenseID string `json:"spdx_license_id,omitempty" yaml:"spdx_license_id,omitempty"`
LicenseURL string `json:"license_url,omitempty" yaml:"license_url,omitempty"`
IntegrationGuideURL string `json:"integration_guide_url,omitempty" yaml:"integration_guide_url,omitempty"`
}
ExternalConfig represents the on-disk representation of the plugin configuration at version v1.
type ExternalDependency ¶
type ExternalDependency struct {
Plugin string `json:"plugin,omitempty" yaml:"plugin,omitempty"`
Revision int `json:"revision,omitempty" yaml:"revision,omitempty"`
}
ExternalDependency represents a dependency on another plugin.
type ExternalGoRegistryConfig ¶ added in v1.8.0
type ExternalGoRegistryConfig struct {
// The minimum Go version required by the plugin.
MinVersion string `json:"min_version,omitempty" yaml:"min_version,omitempty"`
Deps []struct {
Module string `json:"module,omitempty" yaml:"module,omitempty"`
Version string `json:"version,omitempty" yaml:"version,omitempty"`
} `json:"deps,omitempty" yaml:"deps,omitempty"`
}
ExternalGoRegistryConfig is the external registry configuration for a Go plugin.
type ExternalMavenCompilerConfig ¶ added in v1.16.0
type ExternalMavenCompilerConfig struct {
Java ExternalMavenCompilerJavaConfig `json:"java" yaml:"java"`
Kotlin ExternalMavenCompilerKotlinConfig `json:"kotlin" yaml:"kotlin"`
}
ExternalMavenCompilerConfig configures compiler settings for Maven remote packages.
type ExternalMavenCompilerJavaConfig ¶ added in v1.16.0
type ExternalMavenCompilerJavaConfig struct {
// Encoding specifies the encoding of the source files (default: UTF-8).
Encoding string `json:"encoding" yaml:"encoding"`
// Release specifies the target Java release (default: 8).
Release int `json:"release" yaml:"release"`
// Source specifies the source bytecode level (default: 8).
Source int `json:"source" yaml:"source"`
// Target specifies the target bytecode level (default: 8).
Target int `json:"target" yaml:"target"`
}
ExternalMavenCompilerJavaConfig configures the Java compiler settings for remote packages.
type ExternalMavenCompilerKotlinConfig ¶ added in v1.16.0
type ExternalMavenCompilerKotlinConfig struct {
// APIVersion specifies the Kotlin API version to target.
APIVersion string `json:"api_version" yaml:"api_version"`
// JVMTarget specifies the target version of the JVM bytecode (default: 1.8)
JVMTarget string `json:"jvm_target" yaml:"jvm_target"`
// LanguageVersion is used to provide source compatibility with the specified Kotlin version.
LanguageVersion string `json:"language_version" yaml:"language_version"`
// Version of the Kotlin compiler to use (required for Kotlin plugins).
Version string `json:"version" yaml:"version"`
}
ExternalMavenCompilerKotlinConfig configures the Kotlin compiler settings for remote packages.
type ExternalMavenRegistryConfig ¶ added in v1.14.0
type ExternalMavenRegistryConfig struct {
Compiler ExternalMavenCompilerConfig `json:"compiler" yaml:"compiler"`
Deps []string `json:"deps,omitempty" yaml:"deps,omitempty"`
AdditionalRuntimes []ExternalMavenRuntimeConfig `json:"additional_runtimes,omitempty" yaml:"additional_runtimes,omitempty"`
}
ExternalMavenRegistryConfig is the external registry configuration for a Maven plugin.
type ExternalMavenRuntimeConfig ¶ added in v1.16.0
type ExternalMavenRuntimeConfig struct {
// Name contains the Maven runtime name (e.g. 'lite').
Name string `json:"name" yaml:"name"`
// Deps contains the Maven dependencies for the runtime. Overrides ExternalMavenRuntimeConfig.Deps.
Deps []string `json:"deps,omitempty" yaml:"deps,omitempty"`
// Opts contains the Maven plugin options for the runtime. Overrides ExternalRegistryConfig.Opts.
Opts []string `json:"opts,omitempty" yaml:"opts,omitempty"`
}
ExternalMavenRuntimeConfig allows configuring additional runtimes for remote packages. These can specify different dependencies and compiler options than the default runtime. This is used to support a single plugin supporting both full and lite Protobuf runtimes.
type ExternalNPMRegistryConfig ¶ added in v1.8.0
type ExternalNPMRegistryConfig struct {
RewriteImportPathSuffix string `json:"rewrite_import_path_suffix,omitempty" yaml:"rewrite_import_path_suffix,omitempty"`
Deps []struct {
Package string `json:"package,omitempty" yaml:"package,omitempty"`
Version string `json:"version,omitempty" yaml:"version,omitempty"`
} `json:"deps,omitempty" yaml:"deps,omitempty"`
// The import style used for the "type" field in the package.json file.
// Must be one of "module" or "commonjs".
ImportStyle string `json:"import_style,omitempty" yaml:"import_style,omitempty"`
}
ExternalNPMRegistryConfig is the external registry configuration for a JavaScript NPM plugin.
type ExternalPythonRegistryConfig ¶ added in v1.28.0
type ExternalPythonRegistryConfig struct {
// Deps are dependency specifications for the generated SDK.
Deps []string `json:"deps,omitempty" yaml:"deps,omitempty"`
// RequiresPython specifies the `Requires-Python` of the generated metadata file.
RequiresPython string `json:"requires_python,omitempty" yaml:"requires_python,omitempty"`
// PackageType is the type of package generated.
// Must be one of "runtime" or "stub-only".
PackageType string `json:"package_type,omitempty" yaml:"package_type,omitempty"`
}
type ExternalRegistryConfig ¶ added in v1.8.0
type ExternalRegistryConfig struct {
Go *ExternalGoRegistryConfig `json:"go,omitempty" yaml:"go,omitempty"`
NPM *ExternalNPMRegistryConfig `json:"npm,omitempty" yaml:"npm,omitempty"`
Maven *ExternalMavenRegistryConfig `json:"maven,omitempty" yaml:"maven,omitempty"`
Swift *ExternalSwiftRegistryConfig `json:"swift,omitempty" yaml:"swift,omitempty"`
Python *ExternalPythonRegistryConfig `json:"python,omitempty" yaml:"python,omitempty"`
Opts []string `json:"opts,omitempty" yaml:"opts,omitempty"`
}
ExternalRegistryConfig is the external configuration for the registry of a plugin.
type ExternalSwiftRegistryConfig ¶ added in v1.18.0
type ExternalSwiftRegistryConfig struct {
// Deps are dependencies for the remote package.
Deps []ExternalSwiftRegistryDependencyConfig `json:"deps,omitempty" yaml:"deps,omitempty"`
}
ExternalSwiftRegistryConfig is the registry configuration for a Swift plugin.
type ExternalSwiftRegistryDependencyConfig ¶ added in v1.18.0
type ExternalSwiftRegistryDependencyConfig struct {
// Source is the URL of the Swift package.
Source string `json:"source,omitempty" yaml:"source,omitempty"`
// Package is the name of the Swift package.
Package string `json:"package,omitempty" yaml:"package,omitempty"`
// Version is the version of the Swift package.
Version string `json:"version,omitempty" yaml:"version,omitempty"`
// Products are the names of the products available to import.
Products []string `json:"products,omitempty" yaml:"products,omitempty"`
// Platforms are the minimum versions for platforms the package supports.
Platforms ExternalSwiftRegistryDependencyPlatformConfig `json:"platforms,omitempty" yaml:"platforms,omitempty"`
// SwiftVersions are the versions of Swift the package supports.
SwiftVersions []string `json:"swift_versions,omitempty" yaml:"swift_versions,omitempty"`
}
ExternalSwiftRegistryDependencyConfig is the swift registry dependency configuration.
type ExternalSwiftRegistryDependencyPlatformConfig ¶ added in v1.18.0
type ExternalSwiftRegistryDependencyPlatformConfig struct {
// macOS specifies the version of the macOS platform.
MacOS string `json:"macos,omitempty" yaml:"macos,omitempty"`
// iOS specifies the version of the iOS platform.
IOS string `json:"ios,omitempty" yaml:"ios,omitempty"`
// TVOS specifies the version of the tvOS platform.
TVOS string `json:"tvos,omitempty" yaml:"tvos,omitempty"`
// WatchOS specifies the version of the watchOS platform.
WatchOS string `json:"watchos,omitempty" yaml:"watchos,omitempty"`
}
ExternalSwiftRegistryDependencyPlatformConfig is the swift registry dependency platform configuration.
type GoRegistryConfig ¶ added in v1.8.0
type GoRegistryConfig struct {
MinVersion string
Deps []*GoRegistryDependencyConfig
}
GoRegistryConfig is the registry configuration for a Go plugin.
type GoRegistryDependencyConfig ¶ added in v1.8.0
GoRegistryDependencyConfig is the go registry dependency configuration.
type MavenCompilerConfig ¶ added in v1.16.0
type MavenCompilerConfig struct {
Java MavenCompilerJavaConfig
Kotlin MavenCompilerKotlinConfig
}
MavenCompilerConfig specifies compiler settings for Java and/or Kotlin.
type MavenCompilerJavaConfig ¶ added in v1.16.0
type MavenCompilerJavaConfig struct {
// Encoding specifies the encoding of the source files (default: UTF-8).
Encoding string
// Release specifies the target Java release (default: 8).
Release int
// Source specifies the source bytecode level (default: 8).
Source int
// Target specifies the target bytecode level (default: 8).
Target int
}
MavenCompilerJavaConfig specifies compiler settings for Java code.
type MavenCompilerKotlinConfig ¶ added in v1.16.0
type MavenCompilerKotlinConfig struct {
// APIVersion specifies the Kotlin API version to target.
APIVersion string
// JVMTarget specifies the target version of the JVM bytecode (default: 1.8)
JVMTarget string
// LanguageVersion is used to provide source compatibility with the specified Kotlin version.
LanguageVersion string
// Version of the Kotlin compiler to use (required for Kotlin plugins).
Version string
}
MavenCompilerKotlinConfig specifies compiler settings for Kotlin code.
type MavenDependencyConfig ¶ added in v1.16.0
type MavenDependencyConfig struct {
GroupID string
ArtifactID string
Version string
Classifier string
// Extension is the file extension, also known as the Maven type.
Extension string
}
MavenDependencyConfig defines a runtime dependency for a remote package artifact.
type MavenRegistryConfig ¶ added in v1.14.0
type MavenRegistryConfig struct {
// Compiler specifies Java and/or Kotlin compiler settings for remote packages.
Compiler MavenCompilerConfig
// Deps are dependencies for the remote package.
Deps []MavenDependencyConfig
// AdditionalRuntimes tracks additional runtimes (like the 'lite' runtime).
// This is used to support multiple artifacts targeting different runtimes, plugin options, and dependencies.
AdditionalRuntimes []MavenRuntimeConfig
}
MavenRegistryConfig is the registry configuration for a Maven plugin.
type MavenRuntimeConfig ¶ added in v1.16.0
type MavenRuntimeConfig struct {
// Name is the required, unique name for the runtime in MavenRegistryConfig.AdditionalRuntimes.
Name string
// Deps contains the Maven dependencies for the runtime. Overrides MavenRegistryConfig.Deps.
Deps []MavenDependencyConfig
// Options contains the Maven plugin options for the runtime. Overrides RegistryConfig.Options.
Options []string
}
MavenRuntimeConfig is used to specify additional runtimes for a given plugin.
type NPMRegistryConfig ¶ added in v1.8.0
type NPMRegistryConfig struct {
RewriteImportPathSuffix string
Deps []*NPMRegistryDependencyConfig
ImportStyle string
}
NPMRegistryConfig is the registry configuration for a JavaScript NPM plugin.
type NPMRegistryDependencyConfig ¶ added in v1.8.0
NPMRegistryDependencyConfig is the npm registry dependency configuration.
type PythonRegistryConfig ¶ added in v1.28.0
type PythonRegistryConfig struct {
// Deps are the dependency specifications for the generated SDK.
Deps []string
// RequiresPython is the `Requires-Python` for the generated SDK.
RequiresPython string
// PackageType is the package type for the generated SDK.
PackageType string
}
PythonRegistryConfig is the registry configuration for a Python plugin.
type RegistryConfig ¶ added in v1.8.0
type RegistryConfig struct {
Go *GoRegistryConfig
NPM *NPMRegistryConfig
Maven *MavenRegistryConfig
Swift *SwiftRegistryConfig
Python *PythonRegistryConfig
// Options is the set of options passed into the plugin for the
// remote registry.
//
// For now, all options are string values. This could eventually
// support other types (like JSON Schema and Terraform variables),
// where strings are the default value unless otherwise specified.
//
// Note that some legacy plugins don't always express their options
// as key value pairs. For example, protoc-gen-java has an option
// that can be passed like so:
//
// java_opt=annotate_code
//
// In those cases, the option value in this map will be set to
// the empty string, and the option will be propagated to the
// compiler without the '=' delimiter.
Options map[string]string
}
RegistryConfig is the configuration for the registry of a plugin.
Only one field will be set.
type SwiftRegistryConfig ¶ added in v1.18.0
type SwiftRegistryConfig struct {
// Dependencies are dependencies for the remote package.
Dependencies []SwiftRegistryDependencyConfig
}
SwiftRegistryConfig is the registry configuration for a Swift plugin.
type SwiftRegistryDependencyConfig ¶ added in v1.18.0
type SwiftRegistryDependencyConfig struct {
// Source specifies the source of the dependency.
Source string
// Package is the name of the Swift package.
Package string
// Version is the version of the Swift package.
Version string
// Products are the names of the products available to import.
Products []string
// Platforms are the minimum versions for platforms the package supports.
Platforms SwiftRegistryDependencyPlatformConfig
// SwiftVersions are the versions of Swift the package supports.
SwiftVersions []string
}
SwiftRegistryDependencyConfig is the swift registry dependency configuration.
type SwiftRegistryDependencyPlatformConfig ¶ added in v1.18.0
type SwiftRegistryDependencyPlatformConfig struct {
// macOS specifies the version of the macOS platform.
MacOS string
// iOS specifies the version of the iOS platform.
IOS string
// TVOS specifies the version of the tvOS platform.
TVOS string
// WatchOS specifies the version of the watchOS platform.
WatchOS string
}
SwiftRegistryDependencyPlatformConfig is the swift registry dependency platform configuration.