pub trait Plugin {
    fn config(&mut self) -> Result<Signature, ShellError>;

    fn begin_filter(
        &mut self,
        _call_info: CallInfo
    ) -> Result<Vec<ReturnValue>, ShellError> { ... }
fn filter(&mut self, _input: Value) -> Result<Vec<ReturnValue>, ShellError> { ... }
fn end_filter(&mut self) -> Result<Vec<ReturnValue>, ShellError> { ... }
fn sink(&mut self, _call_info: CallInfo, _input: Vec<Value>) { ... }
fn quit(&mut self) { ... } }
Expand description

The Plugin trait defines the API which plugins may use to “hook” into nushell.

Required methods

The config method is used to configure a plugin’s user interface / signature.

This is where the “name” of the plugin (ex fetch), description, any required/optional fields, and flags can be defined. This information will displayed in nushell when running help

Provided methods

begin_filter is the first method to be called if the Signature of the plugin is configured to be filterable. Any setup required for the plugin such as parsing arguments from CallInfo or initializing data structures can be done here. The CallInfo parameter will contain data configured in the config method of the Plugin trait.

filter is called for every Value that is processed by the plugin. This method requires the plugin Signature to be configured as filterable.

end_filter is the last method to be called by the plugin after all Values are processed by the plugin. This method requires the plugin Signature to be configured as filterable.

sink consumes the Values that are passed in, preventing further processing. This method requires the plugin Signature to be configured without filtering.

Implementors