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 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 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 ¶
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 ¶
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 }
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 ¶
type ConfigOption func(*configOptions)
ConfigOption is an optional option used when loading a Config.
func WithOverrideRemote ¶
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"` }
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ExternalRegistryConfig ¶
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"` Opts []string `json:"opts,omitempty" yaml:"opts,omitempty"` }
ExternalRegistryConfig is the external configuration for the registry of a plugin.
type ExternalSwiftRegistryConfig ¶
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 ¶
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 ¶
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 ¶
type GoRegistryConfig struct { MinVersion string Deps []*GoRegistryDependencyConfig }
GoRegistryConfig is the registry configuration for a Go plugin.
type GoRegistryDependencyConfig ¶
GoRegistryDependencyConfig is the go registry dependency configuration.
type MavenCompilerConfig ¶
type MavenCompilerConfig struct { Java MavenCompilerJavaConfig Kotlin MavenCompilerKotlinConfig }
MavenCompilerConfig specifies compiler settings for Java and/or Kotlin.
type MavenCompilerJavaConfig ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
type NPMRegistryConfig struct { RewriteImportPathSuffix string Deps []*NPMRegistryDependencyConfig ImportStyle string }
NPMRegistryConfig is the registry configuration for a JavaScript NPM plugin.
type NPMRegistryDependencyConfig ¶
NPMRegistryDependencyConfig is the npm registry dependency configuration.
type RegistryConfig ¶
type RegistryConfig struct { Go *GoRegistryConfig NPM *NPMRegistryConfig Maven *MavenRegistryConfig Swift *SwiftRegistryConfig // 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 ¶
type SwiftRegistryConfig struct { // Dependencies are dependencies for the remote package. Dependencies []SwiftRegistryDependencyConfig }
SwiftRegistryConfig is the registry configuration for a Swift plugin.
type SwiftRegistryDependencyConfig ¶
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 ¶
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.