plugin

package
v3.15.1 Latest Latest
Warning

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

Go to latest
Published: May 23, 2024 License: Apache-2.0 Imports: 12 Imported by: 20

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CommonSupportedProjectVersions

func CommonSupportedProjectVersions(plugins ...Plugin) []config.Version

CommonSupportedProjectVersions returns the projects versions that are supported by all the provided Plugins

func GetShortName

func GetShortName(name string) string

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 IsLegacyLayout(config config.Config) bool

Deprecated: it was added to ensure backwards compatibility and should be removed when we remove the go/v3 plugin IsLegacyLayout returns true when is possible to identify that the project was scaffolded with the previous layout

func KeyFor

func KeyFor(p Plugin) string

KeyFor returns a Plugin's unique identifying string.

func SplitKey

func SplitKey(key string) (string, string)

SplitKey returns a name and version for a plugin key.

func SupportsVersion

func SupportsVersion(p Plugin, projectVersion config.Version) bool

SupportsVersion checks if a plugin supports a project version.

func Validate

func Validate(p Plugin) error

Validate ensures a Plugin is valid.

func ValidateKey

func ValidateKey(key string) error

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

type ExitError struct {
	Plugin string
	Reason string
}

ExitError is a typed error that is returned by a plugin when no further steps should be executed for itself.

func (ExitError) Error

func (e ExitError) Error() string

Error implements error

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

func FilterPluginsByKey(plugins []Plugin, key string) ([]Plugin, error)

FilterPluginsByKey returns the set of plugins that match the provided key (may be not-fully qualified)

func FilterPluginsByProjectVersion

func FilterPluginsByProjectVersion(plugins []Plugin, projectVersion config.Version) []Plugin

FilterPluginsByProjectVersion returns the set of plugins that support the provided project version

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) Compare

func (v Version) Compare(other Version) int

Compare returns -1 if v < other, 0 if v == other, and 1 if v > other.

func (Version) IsStable

func (v Version) IsStable() bool

IsStable returns true if v is stable.

func (*Version) Parse

func (v *Version) Parse(version string) error

Parse parses version inline, assuming it adheres to format: (v)?[0-9]*(-(alpha|beta))?

func (Version) String

func (v Version) String() string

String returns the string representation of v.

func (Version) Validate

func (v Version) Validate() error

Validate ensures that the version number is positive and the stage is one of the valid stages.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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