diff --git a/crates/nu-command/src/default_context.rs b/crates/nu-command/src/default_context.rs index 6efcfd724..87f350048 100644 --- a/crates/nu-command/src/default_context.rs +++ b/crates/nu-command/src/default_context.rs @@ -191,6 +191,7 @@ pub fn add_shell_command_context(mut engine_state: EngineState) -> EngineState { StrSubstring, StrTrim, StrUpcase, + Format, FormatDate, FormatDuration, FormatFilesize, diff --git a/crates/nu-command/src/strings/format/format_.rs b/crates/nu-command/src/strings/format/format_.rs new file mode 100644 index 000000000..ac348d12e --- /dev/null +++ b/crates/nu-command/src/strings/format/format_.rs @@ -0,0 +1,49 @@ +use nu_engine::get_full_help; +use nu_protocol::{ + ast::Call, + engine::{Command, EngineState, Stack}, + Category, IntoPipelineData, PipelineData, ShellError, Signature, Type, Value, +}; + +#[derive(Clone)] +pub struct Format; + +impl Command for Format { + fn name(&self) -> &str { + "format" + } + + fn signature(&self) -> Signature { + Signature::build("format") + .category(Category::Strings) + .input_output_types(vec![(Type::Nothing, Type::String)]) + } + + fn usage(&self) -> &str { + "Various commands for formatting data." + } + + fn extra_usage(&self) -> &str { + "You must use one of the following subcommands. Using this command as-is will only produce this help message." + } + + fn run( + &self, + engine_state: &EngineState, + stack: &mut Stack, + call: &Call, + _input: PipelineData, + ) -> Result { + Ok(Value::string( + get_full_help( + &Format.signature(), + &Format.examples(), + engine_state, + stack, + self.is_parser_keyword(), + ), + call.head, + ) + .into_pipeline_data()) + } +} diff --git a/crates/nu-command/src/strings/format/mod.rs b/crates/nu-command/src/strings/format/mod.rs index 6802b2085..0c8814af9 100644 --- a/crates/nu-command/src/strings/format/mod.rs +++ b/crates/nu-command/src/strings/format/mod.rs @@ -1,7 +1,9 @@ mod date; mod duration; mod filesize; +mod format_; -pub use self::filesize::FormatFilesize; pub use date::FormatDate; pub use duration::FormatDuration; +pub use filesize::FormatFilesize; +pub use format_::Format;