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
fn config(&mut self) -> Result<Signature, ShellError>
fn config(&mut self) -> Result<Signature, ShellError>
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
fn begin_filter(
&mut self,
_call_info: CallInfo
) -> Result<Vec<ReturnValue>, ShellError>
fn begin_filter(
&mut self,
_call_info: CallInfo
) -> Result<Vec<ReturnValue>, ShellError>
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.
fn filter(&mut self, _input: Value) -> Result<Vec<ReturnValue>, ShellError>
fn filter(&mut self, _input: Value) -> Result<Vec<ReturnValue>, ShellError>
filter
is called for every Value
that is processed by the plugin.
This method requires the plugin Signature
to be configured as filterable.
fn end_filter(&mut self) -> Result<Vec<ReturnValue>, ShellError>
fn end_filter(&mut self) -> Result<Vec<ReturnValue>, ShellError>
end_filter
is the last method to be called by the plugin after all Value
s are processed by the plugin.
This method requires the plugin Signature
to be configured as filterable.
sink
consumes the Value
s that are passed in, preventing further processing.
This method requires the plugin Signature
to be configured without filtering.