diff --git a/crates/nu_plugin_example/src/commands/echo.rs b/crates/nu_plugin_example/src/commands/echo.rs new file mode 100644 index 0000000000..e60ccf8107 --- /dev/null +++ b/crates/nu_plugin_example/src/commands/echo.rs @@ -0,0 +1,55 @@ +use nu_plugin::{EngineInterface, EvaluatedCall, PluginCommand}; +use nu_protocol::{Category, Example, LabeledError, PipelineData, Signature, Type, Value}; + +use crate::ExamplePlugin; + +/// ` | example echo` +pub struct Echo; + +impl PluginCommand for Echo { + type Plugin = ExamplePlugin; + + fn name(&self) -> &str { + "example echo" + } + + fn usage(&self) -> &str { + "Example stream consumer that outputs the received input" + } + + fn signature(&self) -> Signature { + Signature::build(self.name()) + .input_output_types(vec![(Type::Any, Type::Any)]) + .category(Category::Experimental) + } + + fn search_terms(&self) -> Vec<&str> { + vec!["example"] + } + + fn examples(&self) -> Vec { + vec![Example { + example: "example seq 1 5 | example echo", + description: "echos the values from 1 to 5", + result: Some(Value::test_list( + (1..=5).map(Value::test_int).collect::>(), + )), + }] + } + + fn run( + &self, + _plugin: &ExamplePlugin, + _engine: &EngineInterface, + _call: &EvaluatedCall, + input: PipelineData, + ) -> Result { + Ok(input) + } +} + +#[test] +fn test_examples() -> Result<(), nu_protocol::ShellError> { + use nu_plugin_test_support::PluginTest; + PluginTest::new("example", ExamplePlugin.into())?.test_command_examples(&Echo) +} diff --git a/crates/nu_plugin_example/src/commands/mod.rs b/crates/nu_plugin_example/src/commands/mod.rs index 2d7ef4274a..9425dad4ca 100644 --- a/crates/nu_plugin_example/src/commands/mod.rs +++ b/crates/nu_plugin_example/src/commands/mod.rs @@ -25,12 +25,14 @@ pub use view_span::ViewSpan; // Stream demos mod collect_external; +mod echo; mod for_each; mod generate; mod seq; mod sum; pub use collect_external::CollectExternal; +pub use echo::Echo; pub use for_each::ForEach; pub use generate::Generate; pub use seq::Seq; diff --git a/crates/nu_plugin_example/src/lib.rs b/crates/nu_plugin_example/src/lib.rs index 0c394c78aa..e87c31229d 100644 --- a/crates/nu_plugin_example/src/lib.rs +++ b/crates/nu_plugin_example/src/lib.rs @@ -25,6 +25,7 @@ impl Plugin for ExamplePlugin { Box::new(DisableGc), // Stream demos Box::new(CollectExternal), + Box::new(Echo), Box::new(ForEach), Box::new(Generate), Box::new(Seq),