plugin

package
v0.0.0-...-921d8b4 Latest Latest
Warning

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

Go to latest
Published: Mar 13, 2021 License: Apache-2.0 Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultManager = NewBaseManager()

DefaultManager is the default plugin manager

Functions

This section is empty.

Types

type BaseLoader

type BaseLoader struct{}

BaseLoader is an default implementation of Loader interface

func (*BaseLoader) Load

func (bl *BaseLoader) Load(plugin *spec.Plugin) (spec.PluginExecutor, error)

Load implements same method of Loader interface

func (*BaseLoader) Parse

func (bl *BaseLoader) Parse(pluginPath string) (*spec.Plugin, error)

Parse implements same method of Loader interface

func (*BaseLoader) Scan

func (bl *BaseLoader) Scan(pluginBaseDir string) ([]string, error)

Scan implements same method of Loader interface

type BaseManager

type BaseManager struct {
	// contains filtered or unexported fields
}

BaseManager is implemented as default plugin manager

func (*BaseManager) GetPlugin

func (bm *BaseManager) GetPlugin(name string) (*spec.Plugin, spec.PluginExecutor, error)

GetPlugin implements the interface method

func (*BaseManager) LoadPlugin

func (bm *BaseManager) LoadPlugin(name string) error

LoadPlugin implements the interface method

func (*BaseManager) LoadPlugins

func (bm *BaseManager) LoadPlugins() error

LoadPlugins implements the interface method

func (*BaseManager) SetPluginBaseDir

func (bm *BaseManager) SetPluginBaseDir(dir string) error

SetPluginBaseDir implements the interface method

func (*BaseManager) UnloadPlugin

func (bm *BaseManager) UnloadPlugin(name string) error

UnloadPlugin implements the interface method

type BaseStore

type BaseStore struct {
	// contains filtered or unexported fields
}

BaseStore is the default implementation of Store interface

func NewBaseStore

func NewBaseStore() *BaseStore

NewBaseStore is constructor of BaseStore

func (*BaseStore) Get

func (bs *BaseStore) Get(name string) (*spec.PluginItem, bool)

Get is the implementation of same method in Store interface

func (*BaseStore) Put

func (bs *BaseStore) Put(item *spec.PluginItem, forced bool)

Put is the implementation of same method in Store interface

func (*BaseStore) Remove

func (bs *BaseStore) Remove(name string) (*spec.PluginItem, bool)

Remove is the implementation of same method in Store interface

func (*BaseStore) Size

func (bs *BaseStore) Size() uint

Size is the implementation of same method in Store interface

type BaseValidatorChain

type BaseValidatorChain struct {
	// contains filtered or unexported fields
}

BaseValidatorChain build a validation pipeline with 'JSONFileValidator' and 'SpecValidator'.

func (*BaseValidatorChain) Validate

func (bvc *BaseValidatorChain) Validate(params ...interface{}) (interface{}, error)

Validate is the implementation of Validator interface

type JSONFileValidator

type JSONFileValidator struct{}

JSONFileValidator validates the existence of plugin.json.

func (*JSONFileValidator) Validate

func (jfv *JSONFileValidator) Validate(params ...interface{}) (interface{}, error)

Validate is the implementation of Validator interface

type Loader

type Loader interface {
	//Scan the plugin base dir and get the plugin candidates
	Scan(pluginBaseDir string) ([]string, error)

	//Parse the plugin metadata
	Parse(pluginPath string) (*spec.Plugin, error)

	//Load the plugin executor
	Load(plugin *spec.Plugin) (spec.PluginExecutor, error)
}

Loader defines the plugin load flow

type LocalSourceValidator

type LocalSourceValidator struct{}

LocalSourceValidator validate the local source

func (*LocalSourceValidator) Validate

func (lsv *LocalSourceValidator) Validate(params ...interface{}) (interface{}, error)

Validate is the implementation of Validator interface

type Manager

type Manager interface {
	//Set the base dir where to load plugins.
	//If the dir does not exist or it's not a dir
	//an error will be returned.
	SetPluginBaseDir(dir string) error

	//Load all the plugins from the base plugin dir.
	//Any issues happened, an error will be returned.
	LoadPlugins() error

	//Load plugin with the specified name.
	//If failed to load, an error will be returned.
	LoadPlugin(name string) error

	//Unload plugin with the specified name.
	//If failed to unload, an error will be returned.
	UnloadPlugin(name string) error

	//Get the plugin with the specified name.
	//If plugin is not existing, an error will be returned.
	GetPlugin(name string) (*spec.Plugin, spec.PluginExecutor, error)
}

Manager defines the related operations of one plugin manager should support. Manager is used to load, organize and maintain the plugins.

func NewBaseManager

func NewBaseManager() Manager

NewBaseManager is constructor of BaseManager

type RemoteSourceValidator

type RemoteSourceValidator struct{}

RemoteSourceValidator validates the remote source

func (*RemoteSourceValidator) Validate

func (rsv *RemoteSourceValidator) Validate(params ...interface{}) (interface{}, error)

Validate is the implementation of Validator interface TODO:

type SpecValidator

type SpecValidator struct{}

SpecValidator validates the plugin spec.

func (*SpecValidator) Validate

func (sv *SpecValidator) Validate(params ...interface{}) (interface{}, error)

Validate is the implementation of Validator interface

type Store

type Store interface {
	//The total count of current items in the store
	Size() uint

	//Append the plugin item to the store
	//If forced is set to be true, new plugin item will overwrite the existing one
	//Try best to append, ignore any errors
	Put(item *spec.PluginItem, forced bool)

	//Get the plugin item by name
	//If existing, return the item and set the bool flag to true
	Get(name string) (*spec.PluginItem, bool)

	//Remove the plugin out of the store and return the removed plugin item
	//If successfully removed, set the bool flag to true
	Remove(name string) (*spec.PluginItem, bool)
}

Store defines how to maintain the loaded plugin

type Validator

type Validator interface {
	//Do validation with the provided params.
	//If meet any issues, an error will be returned.
	//If succeed, output the result which depends on the implementations.
	Validate(params ...interface{}) (interface{}, error)
}

Validator defines the behaviors of a plugin validator

func NewBaseValidatorChain

func NewBaseValidatorChain(validators ...Validator) Validator

NewBaseValidatorChain creates a validator chain

Jump to

Keyboard shortcuts

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