Documentation ¶
Overview ¶
Package bufconfig contains the configuration functionality.
Index ¶
- Constants
- Variables
- func ExistingConfigFilePath(ctx context.Context, readBucket storage.ReadBucket) (string, error)
- func ValidateVersion(version string) error
- func WriteConfig(ctx context.Context, writeBucket storage.WriteBucket, ...) error
- type Config
- type ExternalConfigV1
- type ExternalConfigV1Beta1
- type ExternalConfigVersion
- type ReadConfigOSOption
- type WriteConfigOption
- func WriteConfigWithBreakingConfig(breakingConfig *bufbreakingconfig.Config) WriteConfigOption
- func WriteConfigWithDependencyModuleReferences(dependencyModuleReferences ...bufmoduleref.ModuleReference) WriteConfigOption
- func WriteConfigWithDocumentationComments() WriteConfigOption
- func WriteConfigWithLintConfig(lintConfig *buflintconfig.Config) WriteConfigOption
- func WriteConfigWithModuleIdentity(moduleIdentity bufmoduleref.ModuleIdentity) WriteConfigOption
- func WriteConfigWithUncomment() WriteConfigOption
- func WriteConfigWithVersion(version string) WriteConfigOption
Constants ¶
const ( // ExternalConfigV1FilePath is the default configuration file path. ExternalConfigV1FilePath = "buf.yaml" // ExternalConfigV1Beta1FilePath is the v1beta1 file path. ExternalConfigV1Beta1FilePath = "buf.yaml" // V1Version is the v1 version. V1Version = "v1" // V1Beta1Version is the v1beta1 version. V1Beta1Version = "v1beta1" )
Variables ¶
var ( // All versions are all the versions in order. AllVersions = []string{ V1Beta1Version, V1Version, } // AllConfigFilePaths are all acceptable config file paths without overrides. // // These are in the order we should check. AllConfigFilePaths = []string{ ExternalConfigV1FilePath, backupExternalConfigV1FilePath, } )
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 ValidateVersion ¶
ValidateVersion checks that a given version string is valid.
func WriteConfig ¶
func WriteConfig( ctx context.Context, writeBucket storage.WriteBucket, options ...WriteConfigOption, ) error
WriteConfig writes an initial configuration file into the bucket.
Types ¶
type Config ¶
type Config struct { Version string ModuleIdentity bufmoduleref.ModuleIdentity Build *bufmoduleconfig.Config Breaking *bufbreakingconfig.Config Lint *buflintconfig.Config }
Config is the user config.
func GetConfigForBucket ¶
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 ReadConfigOS ¶
func ReadConfigOS( ctx context.Context, readBucket storage.ReadBucket, options ...ReadConfigOSOption, ) (*Config, error)
ReadConfigOS reads the configuration from the OS or an override, if any.
ONLY USE IN CLI TOOLS.
type ExternalConfigV1 ¶
type ExternalConfigV1 struct { Version string `json:"version,omitempty" yaml:"version,omitempty"` Name string `json:"name,omitempty" yaml:"name,omitempty"` Deps []string `json:"deps,omitempty" yaml:"deps,omitempty"` Build bufmoduleconfig.ExternalConfigV1 `json:"build,omitempty" yaml:"build,omitempty"` Breaking bufbreakingconfig.ExternalConfigV1 `json:"breaking,omitempty" yaml:"breaking,omitempty"` Lint buflintconfig.ExternalConfigV1 `json:"lint,omitempty" yaml:"lint,omitempty"` }
ExternalConfigV1 represents the on-disk representation of the Config at version v1.
type ExternalConfigV1Beta1 ¶
type ExternalConfigV1Beta1 struct { Version string `json:"version,omitempty" yaml:"version,omitempty"` Name string `json:"name,omitempty" yaml:"name,omitempty"` Deps []string `json:"deps,omitempty" yaml:"deps,omitempty"` Build bufmoduleconfig.ExternalConfigV1Beta1 `json:"build,omitempty" yaml:"build,omitempty"` Breaking bufbreakingconfig.ExternalConfigV1Beta1 `json:"breaking,omitempty" yaml:"breaking,omitempty"` Lint buflintconfig.ExternalConfigV1Beta1 `json:"lint,omitempty" yaml:"lint,omitempty"` }
ExternalConfigV1Beta1 represents the on-disk representation of the Config at version v1beta1.
type ExternalConfigVersion ¶
type ExternalConfigVersion struct {
Version string `json:"version,omitempty" yaml:"version,omitempty"`
}
ExternalConfigVersion defines the subset of all config file versions that is used to determine the configuration version.
type ReadConfigOSOption ¶
type ReadConfigOSOption func(*readConfigOSOptions)
ReadConfigOSOption is an option for ReadConfig.
func ReadConfigOSWithOverride ¶
func ReadConfigOSWithOverride(override string) ReadConfigOSOption
ReadConfigOSWithOverride sets the override.
If override is set, this will first check if the override ends in .json or .yaml, if so, this reads the file at this path and uses it. Otherwise, this assumes this is configuration data in either JSON or YAML format, and unmarshals it.
If no override is set, this reads ExternalConfigFilePath in the bucket.
type WriteConfigOption ¶
type WriteConfigOption func(*writeConfigOptions)
WriteConfigOption is an option for WriteConfig.
func WriteConfigWithBreakingConfig ¶
func WriteConfigWithBreakingConfig(breakingConfig *bufbreakingconfig.Config) WriteConfigOption
WriteConfigWithBreakingConfig returns a new WriteConfigOption that sets the breaking change config for the module.
If this option is used then the version used must be consistent with the rest of the config.
func WriteConfigWithDependencyModuleReferences ¶
func WriteConfigWithDependencyModuleReferences(dependencyModuleReferences ...bufmoduleref.ModuleReference) WriteConfigOption
WriteConfigWithDependencyModuleReferences returns a new WriteConfigOption that sets the dependencies of the module.
The default is to not have any dependencies. If this option is used, WriteConfigWithModuleIdentity must also be used.
Only use in tests.
func WriteConfigWithDocumentationComments ¶
func WriteConfigWithDocumentationComments() WriteConfigOption
WriteConfigWithDocumentationComments returns a new WriteConfigOption that documents the resulting configuration file.
func WriteConfigWithLintConfig ¶
func WriteConfigWithLintConfig(lintConfig *buflintconfig.Config) WriteConfigOption
WriteConfigWithLintConfig returns a new WriteConfigOption that sets the lint config for the module.
If this option is used then the version used must be consistent with the rest of the config.
func WriteConfigWithModuleIdentity ¶
func WriteConfigWithModuleIdentity(moduleIdentity bufmoduleref.ModuleIdentity) WriteConfigOption
WriteConfigWithModuleIdentity returns a new WriteConfigOption that sets the name of the module to the given ModuleIdentity.
The default is to not set the name.
Only use in tests.
func WriteConfigWithUncomment ¶
func WriteConfigWithUncomment() WriteConfigOption
WriteConfigWithUncomment returns a new WriteConfigOption that uncomments the resulting configuration file options that are commented out by default.
If this option is used, WriteConfigWithDocumentationComments must also be used.
func WriteConfigWithVersion ¶
func WriteConfigWithVersion(version string) WriteConfigOption
WriteConfigWithVersion returns a new WriteConfigOption that sets the version of the config being written.
If this is not set, the default is v1beta1.