Documentation
¶
Index ¶
- func CommonSupportedProjectVersions(plugins ...Plugin) []config.Version
- func GetShortName(name string) string
- func IsLegacyLayout(config config.Config) booldeprecated
- func KeyFor(p Plugin) string
- func SplitKey(key string) (string, string)
- func SupportsVersion(p Plugin, projectVersion config.Version) bool
- func Validate(p Plugin) error
- func ValidateKey(key string) error
- type Bundle
- type BundleOption
- type CLIMetadata
- type CreateAPI
- type CreateAPISubcommand
- type CreateWebhook
- type CreateWebhookSubcommand
- type Deprecated
- type Edit
- type EditSubcommand
- type ExitError
- type Full
- type HasFlags
- type HasPostScaffold
- type HasPreScaffold
- type Init
- type InitSubcommand
- type Plugin
- type RequiresConfig
- type RequiresResource
- type Scaffolder
- type Subcommand
- type SubcommandMetadata
- type UpdatesMetadata
- type Version
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CommonSupportedProjectVersions ¶
CommonSupportedProjectVersions returns the projects versions that are supported by all the provided Plugins
func GetShortName ¶
GetShortName returns plugin's short name (name before domain) if name is fully qualified (has a domain suffix), otherwise GetShortName returns name. Deprecated
func IsLegacyLayout
deprecated
added in
v3.9.0
func SupportsVersion ¶
SupportsVersion checks if a plugin supports a project version.
func ValidateKey ¶
ValidateKey ensures both plugin name and version are valid.
Types ¶
type Bundle ¶
type Bundle interface {
Plugin
// Plugins returns a list of the bundled plugins.
// The returned list should be flattened, i.e., no plugin bundles should be part of this list.
Plugins() []Plugin
}
Bundle allows to group plugins under a single key.
func NewBundle
deprecated
func NewBundle(name string, version Version, deprecateWarning string, plugins ...Plugin) (Bundle, error)
NewBundle creates a new Bundle with the provided name and version, and that wraps the provided plugins. The list of supported project versions is computed from the provided plugins.
Deprecated: Use the NewBundle informing the options from now one. Replace its use for as the following example. Example:
mylanguagev1Bundle, _ := plugin.NewBundle(plugin.WithName(language.DefaultNameQualifier),
plugin.WithVersion(plugin.Version{Number: 1}),
plugin.WithPlugins(kustomizecommonv1.Plugin{}, mylanguagev1.Plugin{}),
func NewBundleWithOptions ¶ added in v3.11.0
func NewBundleWithOptions(opts ...BundleOption) (Bundle, error)
NewBundleWithOptions creates a new Bundle with the provided BundleOptions. The list of supported project versions is computed from the provided plugins in options.
type BundleOption ¶ added in v3.11.0
type BundleOption func(*bundle)
func WithDeprecationMessage ¶ added in v3.11.0
func WithDeprecationMessage(msg string) BundleOption
func WithName ¶ added in v3.11.0
func WithName(name string) BundleOption
func WithPlugins ¶ added in v3.11.0
func WithPlugins(plugins ...Plugin) BundleOption
func WithVersion ¶ added in v3.11.0
func WithVersion(version Version) BundleOption
type CLIMetadata ¶
type CLIMetadata struct {
// CommandName is the root command name.
CommandName string
}
CLIMetadata is the runtime meta-data of the CLI
type CreateAPI ¶
type CreateAPI interface {
Plugin
// GetCreateAPISubcommand returns the underlying CreateAPISubcommand interface.
GetCreateAPISubcommand() CreateAPISubcommand
}
CreateAPI is an interface for plugins that provide a `create api` subcommand.
type CreateAPISubcommand ¶
type CreateAPISubcommand interface {
Subcommand
RequiresResource
}
CreateAPISubcommand is an interface that represents a `create api` subcommand.
type CreateWebhook ¶
type CreateWebhook interface {
Plugin
// GetCreateWebhookSubcommand returns the underlying CreateWebhookSubcommand interface.
GetCreateWebhookSubcommand() CreateWebhookSubcommand
}
CreateWebhook is an interface for plugins that provide a `create webhook` subcommand.
type CreateWebhookSubcommand ¶
type CreateWebhookSubcommand interface {
Subcommand
RequiresResource
}
CreateWebhookSubcommand is an interface that represents a `create wekbhook` subcommand.
type Deprecated ¶
type Deprecated interface {
// DeprecationWarning returns a string indicating a plugin is deprecated.
DeprecationWarning() string
}
Deprecated is an interface that defines the messages for plugins that are deprecated.
type Edit ¶
type Edit interface {
Plugin
// GetEditSubcommand returns the underlying EditSubcommand interface.
GetEditSubcommand() EditSubcommand
}
Edit is an interface for plugins that provide a `edit` subcommand.
type EditSubcommand ¶
type EditSubcommand interface {
Subcommand
}
EditSubcommand is an interface that represents an `edit` subcommand.
type ExitError ¶
ExitError is a typed error that is returned by a plugin when no further steps should be executed for itself.
type Full ¶
type Full interface {
Init
CreateAPI
CreateWebhook
Edit
}
Full is an interface for plugins that provide `init`, `create api`, `create webhook` and `edit` subcommands.
type HasFlags ¶
type HasFlags interface {
// BindFlags binds flags to the CLI subcommand.
BindFlags(*pflag.FlagSet)
}
HasFlags is an interface that implements the optional bind flags method.
type HasPostScaffold ¶
type HasPostScaffold interface {
// PostScaffold executes tasks after the main scaffolding.
PostScaffold() error
}
HasPostScaffold is an interface that implements the optional post-scaffold method.
type HasPreScaffold ¶
type HasPreScaffold interface {
// PreScaffold executes tasks before the main scaffolding.
PreScaffold(machinery.Filesystem) error
}
HasPreScaffold is an interface that implements the optional pre-scaffold method.
type Init ¶
type Init interface {
Plugin
// GetInitSubcommand returns the underlying InitSubcommand interface.
GetInitSubcommand() InitSubcommand
}
Init is an interface for plugins that provide an `init` subcommand.
type InitSubcommand ¶
type InitSubcommand interface {
Subcommand
}
InitSubcommand is an interface that represents an `init` subcommand.
type Plugin ¶
type Plugin interface {
// Name returns a DNS1123 label string identifying the plugin uniquely. This name should be fully-qualified,
// i.e. have a short prefix describing the plugin type (like a language) followed by a domain.
// For example, Kubebuilder's main plugin would return "go.kubebuilder.io".
Name() string
// Version returns the plugin's version.
//
// NOTE: this version is different from config version.
Version() Version
// SupportedProjectVersions lists all project configuration versions this plugin supports.
// The returned slice cannot be empty.
SupportedProjectVersions() []config.Version
}
Plugin is an interface that defines the common base for all plugins.
func FilterPluginsByKey ¶
FilterPluginsByKey returns the set of plugins that match the provided key (may be not-fully qualified)
type RequiresConfig ¶
type RequiresConfig interface {
// InjectConfig injects the configuration to a subcommand.
InjectConfig(config.Config) error
}
RequiresConfig is an interface that implements the optional inject config method.
type RequiresResource ¶
type RequiresResource interface {
// InjectResource injects the resource model to a subcommand.
InjectResource(*resource.Resource) error
}
RequiresResource is an interface that implements the required inject resource method.
type Scaffolder ¶
type Scaffolder interface {
// Scaffold implements the main scaffolding.
Scaffold(machinery.Filesystem) error
}
Scaffolder is an interface that implements the required scaffold method.
type Subcommand ¶
type Subcommand interface {
Scaffolder
}
Subcommand is a base interface for all subcommands.
type SubcommandMetadata ¶
type SubcommandMetadata struct {
// Description is a description of what this command does. It is used to display help.
Description string
// Examples are one or more examples of the command-line usage of this command. It is used to display help.
Examples string
}
SubcommandMetadata is the runtime meta-data for a subcommand
type UpdatesMetadata ¶
type UpdatesMetadata interface {
// UpdateMetadata updates the subcommand metadata.
UpdateMetadata(CLIMetadata, *SubcommandMetadata)
}
UpdatesMetadata is an interface that implements the optional metadata update method.
type Version ¶
type Version struct {
// Number denotes the current version of a plugin. Two different numbers between versions
// indicate that they are incompatible.
Number int
// Stage indicates stability.
Stage stage.Stage
}
Version is a plugin version containing a positive integer and a stage value that represents stability.
func (*Version) Parse ¶
Parse parses version inline, assuming it adheres to format: (v)?[0-9]*(-(alpha|beta))?