Documentation ¶
Index ¶
- Constants
- func AddPluginCommandStubs(dockerCli command.Cli, rootCmd *cobra.Command) (err error)
- func IsNotFound(err error) bool
- func IsPluginCommand(cmd *cobra.Command) bool
- func NewPluginError(msg string, args ...interface{}) error
- func PluginRunCommand(dockerCli command.Cli, name string, rootcmd *cobra.Command) (*exec.Cmd, error)
- type Candidate
- type Metadata
- type Plugin
Constants ¶
const ( // CommandAnnotationPlugin is added to every stub command added by // AddPluginCommandStubs with the value "true" and so can be // used to distinguish plugin stubs from regular commands. CommandAnnotationPlugin = "com.docker.cli.plugin" // CommandAnnotationPluginVendor is added to every stub command // added by AddPluginCommandStubs and contains the vendor of // that plugin. CommandAnnotationPluginVendor = "com.docker.cli.plugin.vendor" // CommandAnnotationPluginVersion is added to every stub command // added by AddPluginCommandStubs and contains the version of // that plugin. CommandAnnotationPluginVersion = "com.docker.cli.plugin.version" // CommandAnnotationPluginInvalid is added to any stub command // added by AddPluginCommandStubs for an invalid command (that // is, one which failed it's candidate test) and contains the // reason for the failure. CommandAnnotationPluginInvalid = "com.docker.cli.plugin-invalid" )
const ( // NamePrefix is the prefix required on all plugin binary names NamePrefix = "docker-" // MetadataSubcommandName is the name of the plugin subcommand // which must be supported by every plugin and returns the // plugin metadata. MetadataSubcommandName = "docker-cli-plugin-metadata" )
const ReexecEnvvar = "DOCKER_CLI_PLUGIN_ORIGINAL_CLI_COMMAND"
ReexecEnvvar is the name of an ennvar which is set to the command used to originally invoke the docker CLI when executing a plugin. Assuming $PATH and $CWD remain unchanged this should allow the plugin to re-execute the original CLI.
Variables ¶
This section is empty.
Functions ¶
func AddPluginCommandStubs ¶
AddPluginCommandStubs adds a stub cobra.Commands for each valid and invalid plugin. The command stubs will have several annotations added, see `CommandAnnotationPlugin*`.
func IsNotFound ¶
IsNotFound is true if the given error is due to a plugin not being found.
func IsPluginCommand ¶
IsPluginCommand checks if the given cmd is a plugin-stub.
func NewPluginError ¶
NewPluginError creates a new pluginError, analogous to errors.Errorf.
func PluginRunCommand ¶
func PluginRunCommand(dockerCli command.Cli, name string, rootcmd *cobra.Command) (*exec.Cmd, error)
PluginRunCommand returns an "os/exec".Cmd which when .Run() will execute the named plugin. The rootcmd argument is referenced to determine the set of builtin commands in order to detect conficts. The error returned satisfies the IsNotFound() predicate if no plugin was found or if the first candidate plugin was invalid somehow.
Types ¶
type Metadata ¶
type Metadata struct { // SchemaVersion describes the version of this struct. Mandatory, must be "0.1.0" SchemaVersion string `json:",omitempty"` // Vendor is the name of the plugin vendor. Mandatory Vendor string `json:",omitempty"` // Version is the optional version of this plugin. Version string `json:",omitempty"` // ShortDescription should be suitable for a single line help message. ShortDescription string `json:",omitempty"` // URL is a pointer to the plugin's homepage. URL string `json:",omitempty"` // Experimental specifies whether the plugin is experimental. // Deprecated: experimental features are now always enabled in the CLI Experimental bool `json:",omitempty"` }
Metadata provided by the plugin.
type Plugin ¶
type Plugin struct { Metadata Name string `json:",omitempty"` Path string `json:",omitempty"` // Err is non-nil if the plugin failed one of the candidate tests. Err error `json:",omitempty"` // ShadowedPaths contains the paths of any other plugins which this plugin takes precedence over. ShadowedPaths []string `json:",omitempty"` }
Plugin represents a potential plugin with all it's metadata.