codegen

package
v0.27.0 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2024 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AdditionalPrinterColumn added in v0.21.0

type AdditionalPrinterColumn struct {
	Name        string  `json:"name"`
	Type        string  `json:"type"`
	Format      *string `json:"format,omitempty"`
	Description *string `json:"description,omitempty"`
	Priority    *int32  `json:"priority"`
	JSONPath    string  `json:"jsonPath"`
}

type AnyKind added in v0.14.0

type AnyKind struct {
	Props       KindProperties
	AllVersions []KindVersion
}

AnyKind is a simple implementation of Kind

func (*AnyKind) Name added in v0.14.0

func (a *AnyKind) Name() string

func (*AnyKind) Properties added in v0.14.0

func (a *AnyKind) Properties() KindProperties

func (*AnyKind) Version added in v0.14.0

func (a *AnyKind) Version(v string) *KindVersion

func (*AnyKind) Versions added in v0.14.0

func (a *AnyKind) Versions() []KindVersion

type AppManifest added in v0.27.0

type AppManifest interface {
	Name() string
	Kinds() []Kind
	Properties() AppManifestProperties
}

type AppManifestKindPermission added in v0.27.0

type AppManifestKindPermission struct {
	Group    string   `json:"group"`
	Resource string   `json:"resource"`
	Actions  []string `json:"actions"`
}

type AppManifestProperties added in v0.27.0

type AppManifestProperties struct {
	AppName          string                                `json:"appName"`
	Group            string                                `json:"group"`
	FullGroup        string                                `json:"fullGroup"`
	ExtraPermissions AppManifestPropertiesExtraPermissions `json:"extraPermissions"`
}

type AppManifestPropertiesExtraPermissions added in v0.27.0

type AppManifestPropertiesExtraPermissions struct {
	AccessKinds []AppManifestKindPermission `json:"accessKinds,omitempty"`
}

type ConversionWebhookProperties added in v0.26.0

type ConversionWebhookProperties struct {
	URL string `json:"url"`
}

type Generator

type Generator[T any] struct {
	// contains filtered or unexported fields
}

func NewGenerator added in v0.14.0

func NewGenerator[T any](parser Parser[T], files fs.FS) (*Generator[T], error)

func (*Generator[T]) FilteredGenerate added in v0.14.0

func (g *Generator[T]) FilteredGenerate(jennies JennyList[T], filterFunc func(T) bool, selectors ...string) (codejen.Files, error)

func (*Generator[T]) Generate

func (g *Generator[T]) Generate(jennies JennyList[T], selectors ...string) (codejen.Files, error)

type JennyList added in v0.14.0

type JennyList[T any] interface {
	Generate(...T) (codejen.Files, error)
}

type Kind added in v0.14.0

type Kind interface {
	Name() string
	Properties() KindProperties
	Versions() []KindVersion
	Version(version string) *KindVersion
}

Kind is a common interface declaration for code generation. Any type parser should be able to parse a kind into this definition to supply to various common Jennies in the codegen package.

type KindAdmissionCapability added in v0.20.0

type KindAdmissionCapability struct {
	Operations []KindAdmissionCapabilityOperation `json:"operations"`
}

type KindAdmissionCapabilityOperation added in v0.20.0

type KindAdmissionCapabilityOperation string
const (
	AdmissionCapabilityOperationCreate  KindAdmissionCapabilityOperation = "CREATE"
	AdmissionCapabilityOperationUpdate  KindAdmissionCapabilityOperation = "UPDATE"
	AdmissionCapabilityOperationDelete  KindAdmissionCapabilityOperation = "DELETE"
	AdmissionCapabilityOperationConnect KindAdmissionCapabilityOperation = "CONNECT"
	AdmissionCapabilityOperationAny     KindAdmissionCapabilityOperation = "*"
)

type KindCodegenProperties added in v0.14.0

type KindCodegenProperties struct {
	Frontend bool `json:"frontend"`
	Backend  bool `json:"backend"`
}

KindCodegenProperties contains code generation directives for a Kind or KindVersion

type KindProperties added in v0.14.0

type KindProperties struct {
	// Kind is the unique-within-the-group name of the kind
	Kind string `json:"kind"`
	// Group is the group the Kind is a part of
	Group string `json:"group"`
	// ManifestGroup is the group shortname used by the AppManifest this Kind belongs to
	ManifestGroup string `json:"manifestGroup"`
	// MachineName is the machine version of the Kind, which follows the regex: /^[a-z]+[a-z0-9]*$/
	MachineName string `json:"machineName"`
	// PluralMachineName is the plural of the MachineName
	PluralMachineName string `json:"pluralMachineName"`
	// PluralName is the plural of the Kind
	PluralName string `json:"pluralName"`
	// Current is the version string of the version considered to be "current".
	// This does not have to be the latest, but determines preference when generating code.
	Current                string                      `json:"current"`
	Scope                  string                      `json:"scope"`
	Validation             KindAdmissionCapability     `json:"validation"`
	Mutation               KindAdmissionCapability     `json:"mutation"`
	Conversion             bool                        `json:"conversion"`
	ConversionWebhookProps ConversionWebhookProperties `json:"conversionWebhookProps"`
	// Codegen contains code-generation directives for the codegen pipeline
	Codegen KindCodegenProperties `json:"codegen"`
}

KindProperties is the collection of properties for a Kind which are used for code generation

type KindVersion added in v0.14.0

type KindVersion struct {
	Version string `json:"version"`
	// Schema is the CUE schema for the version
	// This should eventually be changed to JSONSchema/OpenAPI(/AST?)
	Schema                   cue.Value                 `json:"schema"` // TODO: this should eventually be OpenAPI/JSONSchema (ast or bytes?)
	Codegen                  KindCodegenProperties     `json:"codegen"`
	Served                   bool                      `json:"served"`
	SelectableFields         []string                  `json:"selectableFields"`
	Validation               KindAdmissionCapability   `json:"validation"`
	Mutation                 KindAdmissionCapability   `json:"mutation"`
	AdditionalPrinterColumns []AdditionalPrinterColumn `json:"additionalPrinterColumns"`
}

type Parser added in v0.14.0

type Parser[T any] interface {
	Parse(fs.FS, ...string) ([]T, error)
}

type SimpleManifest added in v0.27.0

type SimpleManifest struct {
	Props    AppManifestProperties
	AllKinds []Kind
}

func (*SimpleManifest) Kinds added in v0.27.0

func (m *SimpleManifest) Kinds() []Kind

func (*SimpleManifest) Name added in v0.27.0

func (m *SimpleManifest) Name() string

func (*SimpleManifest) Properties added in v0.27.0

func (m *SimpleManifest) Properties() AppManifestProperties

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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