generation

package
v0.0.0-...-ac9356b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 29, 2024 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type APIGroupContext

type APIGroupContext struct {
	// Name is the group name.
	Name string

	// Versions is a list of API versions found within the group.
	Versions []APIVersionContext

	// Config is the group's generation configuration.
	// This is populated from the `.codegen.yaml` configuration for the API group.
	Config *Config
}

APIGroupContext is the context gathered for a particular API group.

type APIVersionContext

type APIVersionContext struct {
	// Name is the version name.
	Name string

	// Path is the path to the folder containing the API version.
	Path string

	// PackagePath is the path to the package containing the API version.
	// This is the import path for the package.
	PackagePath string

	// PackageName is the golang packagh name for the API version.
	PackageName string
}

APIVersionContext is the context gathered for a particular API version.

type CompatibilityConfig

type CompatibilityConfig struct {
	// Disabled determines whether the compatibility generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`
}

CompatibilityConfig is the configuration for the compatibility generator.

type Config

type Config struct {
	// Compatibility represents the configuration of the compatiblity generator.
	// When omitted, the default configuration will be used.
	Compatibility *CompatibilityConfig `json:"compatibility,omitempty"`

	// Deepcopy represents the configuration of the deepcopy generator.
	// When omitted, the default configuration will be used.
	Deepcopy *DeepcopyConfig `json:"deepcopy,omitempty"`

	// OpenAPI represents the configuration of the openapi generator.
	// When omitted, the default configuration will be used.
	OpenAPI *OpenAPIConfig `json:"openapi,omitempty"`

	// SchemaCheck represents the configuration for the schemacheck generator.
	// When omitted, the default configuration will be used.
	// When provided, any equivalent flag provided values are ignored.
	SchemaCheck *SchemaCheckConfig `json:"schemacheck,omitempty"`

	// SchemaPatch represents the configuration for the schemapatch generator.
	// When omitted, the default configuration will be used.
	// When provided, any equivalent flag provided values are ignored.
	SchemaPatch *SchemaPatchConfig `json:"schemapatch,omitempty"`

	// ManifestMerge represents the configuration for the manifest merge generator.
	// When omitted, the default configuration will be used.
	// When provided, any equivalent flag provided values are ignored.
	ManifestMerge *ManifestMerge `json:"manifestMerge,omitempty"`

	// EmptyPartialSchema represents the configuration for the manifest merge generator.
	// When omitted, the default configuration will be used.
	// When provided, any equivalent flag provided values are ignored.
	EmptyPartialSchema *EmptyPartialSchema `json:"emptyPartialSchema,omitempty"`

	// SwaggerDocs represents the configuration for the swaggerdocs generator.
	// When omitted, the default configuration will be used.
	// When provided, any equivalent flag provided values are ignored.
	SwaggerDocs *SwaggerDocsConfig `json:"swaggerdocs,omitempty"`
}

Config represents the configuration of a API group version and the configuration for each generator within it.

type Context

type Context struct {
	// BaseDir is the top level directory in which to search for API packages
	// and in which to run the generators.
	BaseDir string

	// APIGroups contains a list of API Groups and information regarding
	// their generation.
	APIGroups []APIGroupContext
}

Context is the top level generation context passed into each generator.

func NewContext

func NewContext(opts Options) (Context, error)

NewContext creates a generation context from the provided options.

type DeepcopyConfig

type DeepcopyConfig struct {
	// Disabled determines whether the deepcopy generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`

	// HeaderFilePath is the path to the file containing the boilerplate header text.
	// When omitted, no header is added to the generated files.
	HeaderFilePath string `json:"headerFilePath,omitempty"`

	// OutputFileBaseName is the base name of the output file.
	// When omitted, DefaultOutputFileBaseName is used.
	// The current value of DefaultOutputFileBaseName is "zz_generated.deepcopy".
	OutputFileBaseName string `json:"outputFileBaseName,omitempty"`
}

DeepcopyConfig is the configuration for the deepcopy generator.

type EmptyPartialSchema

type EmptyPartialSchema struct {
	// Disabled determines whether the schemapatch generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`
}

ManifestMerge is the configuration for the manifest merge generator.

type Generator

type Generator interface {
	// Name returns a name identifier for the generator.
	Name() string

	// GenGroup runs the generator against the given APIGroupContext.
	GenGroup(APIGroupContext) error

	// ApplyConfig creates a new generator instance with the given configuration.
	ApplyConfig(*Config) Generator
}

Generator is an interface for running a generator against a particular API group.

type ManifestMerge

type ManifestMerge struct {
	// Disabled determines whether the schemapatch generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`
}

ManifestMerge is the configuration for the manifest merge generator.

type MultiGroupGenerator

type MultiGroupGenerator interface {
	// Name returns a name identifier for the generator.
	Name() string

	// GenGroups runs the generator against the given APIGroupContexts.
	GenGroups([]APIGroupContext) error
}

MultiGroupGenerator is an interface for running a generator against multiple API groups. This is used for generators that the the context of multiple groups simultaneously.

type OpenAPIConfig

type OpenAPIConfig struct {
	// Disabled determines whether the openapi generator should include this
	// group or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`
}

OpenAPIConfig is the configuration for the openapi generator.

type Options

type Options struct {
	// BaseDir is the base directory in which to run the generators.
	BaseDir string

	// APIGroupVersions is a list of API group versions to generate.
	// When omitted, all discovered API group versions are generated.
	APIGroupVersions []string
}

Options represents the base configuration used to generate a context.

type SchemaCheckConfig

type SchemaCheckConfig struct {
	// Disabled determines whether the schemacheck generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`

	// EnabledValidators is a list of the validators that should be enabled.
	// If this is empty, the default validators are enabled.
	EnabledValidators []string `json:"enabledValidators,omitempty"`

	// DisabledValidators is a list of the validators that should be disabled.
	// If this is empty, no default validators are disabled.
	DisabledValidators []string `json:"disabledValidators,omitempty"`
}

SchemaCheckConfig is the configuration for the schemacheck generator.

type SchemaPatchConfig

type SchemaPatchConfig struct {
	// Disabled determines whether the schemapatch generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`

	// RequiredFeatureSets is a list of feature sets combinations that should be
	// generated for this API group.
	// Each entry in this list is a comma separated list of feature set names
	// which will be matched with the `release.openshift.io/feature-set` annotation
	// on the CRD definition.
	// When omitted, any manifest with a feature set annotation will be ignored.
	// Example entries are `""` (empty string), `"TechPreviewNoUpgrade"` or `"TechPreviewNoUpgrade,CustomNoUpgrade"`.
	RequiredFeatureSets []string `json:"requiredFeatureSets,omitempty"`
}

SchemaPatchConfig is the configuration for the schemapatch generator.

type SwaggerDocsConfig

type SwaggerDocsConfig struct {
	// Disabled determines whether the swaggerdocs generator should be run or not.
	// This generator is enabled by default so this field defaults to false.
	Disabled bool `json:"disabled,omitempty"`

	// CommentPolicy determines how, when verifying swaggerdocs, the generator
	// should handle missing comments.
	// Valid values are `Ignore`, `Warn` and `Enforce`.
	// This defaults to `Warn`.
	// When set to `Ignore`, the generator will ignore any missing comments.
	// When set to `Warn`, the generator will emit a warning for any missing comments.
	// When set to `Enforce`, the generator will return an error for any missing comments.
	CommentPolicy string `json:"commentPolicy,omitempty"`

	// OutputFileName is the file name to use for writing the generated swagger
	// docs to. This file will be created for each group version.
	// Whem omitted, this will default to `zz_generated.swagger_doc_generated.go`.
	OutputFileName string `json:"outputFileName,omitempty"`
}

SwaggerDocsConfig is the configuration for the swaggerdocs generator.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL