diff --git a/crates/nu-command/src/date/format.rs b/crates/nu-command/src/date/format.rs index 55a76b7425..2fcffaa0ad 100644 --- a/crates/nu-command/src/date/format.rs +++ b/crates/nu-command/src/date/format.rs @@ -61,6 +61,13 @@ impl Command for SubCommand { let format = call.opt::>(engine_state, stack, 0)?; + if input.is_nothing() { + return Err(ShellError::UnsupportedInput( + "Input was nothing. You must pipe an input to this command.".into(), + head, + )); + } + input.map( move |value| match &format { Some(format) => format_helper(value, format.item.as_str(), format.span, head), @@ -147,10 +154,6 @@ fn format_helper(value: Value, formatter: &str, formatter_span: Span, head_span: Err(e) => e, } } - Value::Nothing { .. } => { - let dt = Local::now(); - format_from(dt, formatter, formatter_span) - } _ => Value::Error { error: ShellError::DatetimeParseError(head_span), }, @@ -176,13 +179,6 @@ fn format_helper_rfc2822(value: Value, span: Span) -> Value { Err(e) => e, } } - Value::Nothing { span: _ } => { - let dt = Local::now(); - Value::String { - val: dt.with_timezone(dt.offset()).to_rfc2822(), - span, - } - } _ => Value::Error { error: ShellError::DatetimeParseError(span), }, diff --git a/crates/nu-command/tests/commands/date/format.rs b/crates/nu-command/tests/commands/date/format.rs index 4f0f874ee3..a50a95bff8 100644 --- a/crates/nu-command/tests/commands/date/format.rs +++ b/crates/nu-command/tests/commands/date/format.rs @@ -5,7 +5,7 @@ fn formatter_not_valid() { let actual = nu!( cwd: ".", pipeline( r#" - date format '%N' + date now | date format '%N' "# ) ); @@ -13,6 +13,19 @@ fn formatter_not_valid() { assert!(actual.err.contains("invalid format")); } +#[test] +fn fails_without_input() { + let actual = nu!( + cwd: ".", pipeline( + r#" + date format "%c" + "# + ) + ); + + assert!(actual.err.contains("Unsupported input")); +} + #[test] fn locale_format_respect_different_locale() { let actual = nu!(