From c97aaf159ea5e3b1583499dd57291ecba3cde9e5 Mon Sep 17 00:00:00 2001 From: sagie gur ari Date: Fri, 3 Jul 2020 08:57:23 +0000 Subject: [PATCH] New noop command --- CHANGELOG.md | 1 + docs/sdk.md | 27 ++++++++++++++ duckscript_sdk/src/sdk/std/mod.rs | 2 ++ duckscript_sdk/src/sdk/std/noop/help.md | 19 ++++++++++ duckscript_sdk/src/sdk/std/noop/mod.rs | 39 +++++++++++++++++++++ duckscript_sdk/src/sdk/std/noop/mod_test.rs | 22 ++++++++++++ test/std/noop_test.ds | 17 +++++++++ 7 files changed, 127 insertions(+) create mode 100644 duckscript_sdk/src/sdk/std/noop/help.md create mode 100755 duckscript_sdk/src/sdk/std/noop/mod.rs create mode 100644 duckscript_sdk/src/sdk/std/noop/mod_test.rs create mode 100644 test/std/noop_test.ds diff --git a/CHANGELOG.md b/CHANGELOG.md index 514bdf9..10eda6b 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * New ftp_get_in_memory command. * New ftp_list command. * New ftp_nlst command. +* New noop command. * \[Breaking Change\] Conditions to support function calls #116 ### v0.5.0 (2020-06-06) diff --git a/docs/sdk.md b/docs/sdk.md index f0e84b6..fa50075 100644 --- a/docs/sdk.md +++ b/docs/sdk.md @@ -2,6 +2,7 @@ * [std::Echo (echo)](#std__Echo) * [std::Eval (eval)](#std__Eval) * [std::IsDefined (is_defined)](#std__IsDefined) +* [std::Noop (noop)](#std__Noop) * [std::Not (not)](#std__Not) * [std::ReadUserInput (read)](#std__ReadUserInput) * [std::Release (release)](#std__Release) @@ -244,6 +245,32 @@ exists = is_defined key #### Aliases: is_defined + +## std::Noop +```sh +noop +``` + +Empty function that does nothing and returns none. + +#### Parameters + +All parameters are ignored + +#### Return Value + +None + +#### Examples + +```sh +noop +``` + + +#### Aliases: +noop + ## std::Not ```sh diff --git a/duckscript_sdk/src/sdk/std/mod.rs b/duckscript_sdk/src/sdk/std/mod.rs index fdbfedf..337f395 100755 --- a/duckscript_sdk/src/sdk/std/mod.rs +++ b/duckscript_sdk/src/sdk/std/mod.rs @@ -10,6 +10,7 @@ mod lib; mod man; mod math; mod net; +mod noop; mod not; pub(crate) mod on_error; mod process; @@ -32,6 +33,7 @@ pub(crate) fn load(commands: &mut Commands) -> Result<(), ScriptError> { commands.set(eval::create(PACKAGE))?; commands.set(is_defined::create(PACKAGE))?; commands.set(man::create(PACKAGE))?; + commands.set(noop::create(PACKAGE))?; commands.set(not::create(PACKAGE))?; commands.set(read::create(PACKAGE))?; commands.set(release::create(PACKAGE))?; diff --git a/duckscript_sdk/src/sdk/std/noop/help.md b/duckscript_sdk/src/sdk/std/noop/help.md new file mode 100644 index 0000000..da4725d --- /dev/null +++ b/duckscript_sdk/src/sdk/std/noop/help.md @@ -0,0 +1,19 @@ +```sh +noop +``` + +Empty function that does nothing and returns none. + +#### Parameters + +All parameters are ignored + +#### Return Value + +None + +#### Examples + +```sh +noop +``` diff --git a/duckscript_sdk/src/sdk/std/noop/mod.rs b/duckscript_sdk/src/sdk/std/noop/mod.rs new file mode 100755 index 0000000..d521186 --- /dev/null +++ b/duckscript_sdk/src/sdk/std/noop/mod.rs @@ -0,0 +1,39 @@ +use crate::utils::pckg; +use duckscript::types::command::{Command, CommandResult}; + +#[cfg(test)] +#[path = "./mod_test.rs"] +mod mod_test; + +#[derive(Clone)] +pub(crate) struct CommandImpl { + package: String, +} + +impl Command for CommandImpl { + fn name(&self) -> String { + pckg::concat(&self.package, "Noop") + } + + fn aliases(&self) -> Vec { + vec!["noop".to_string()] + } + + fn help(&self) -> String { + include_str!("help.md").to_string() + } + + fn clone_and_box(&self) -> Box { + Box::new((*self).clone()) + } + + fn run(&self, _arguments: Vec) -> CommandResult { + CommandResult::Continue(None) + } +} + +pub(crate) fn create(package: &str) -> Box { + Box::new(CommandImpl { + package: package.to_string(), + }) +} diff --git a/duckscript_sdk/src/sdk/std/noop/mod_test.rs b/duckscript_sdk/src/sdk/std/noop/mod_test.rs new file mode 100644 index 0000000..d473aef --- /dev/null +++ b/duckscript_sdk/src/sdk/std/noop/mod_test.rs @@ -0,0 +1,22 @@ +use super::*; +use crate::test; +use crate::test::CommandValidation; + +#[test] +fn common_functions() { + test::test_common_command_functions(create("")); +} + +#[test] +fn run_no_args() { + test::run_script_and_validate(vec![create("")], "out = noop", CommandValidation::None); +} + +#[test] +fn run_multiple_args() { + test::run_script_and_validate( + vec![create("")], + "out = noop 1 2 \"3 4\"", + CommandValidation::None, + ); +} diff --git a/test/std/noop_test.ds b/test/std/noop_test.ds new file mode 100644 index 0000000..a30116b --- /dev/null +++ b/test/std/noop_test.ds @@ -0,0 +1,17 @@ + +fn test_no_args + value = noop + + defined = is_defined value + + assert_false ${value} +end + +fn test_multiple_args + value = noop 1 2 3 4 + + defined = is_defined value + + assert_false ${value} +end +