Require input for date format
(#7043)
This commit is contained in:
parent
14d7ba5cc9
commit
da8f6c5682
|
@ -61,6 +61,13 @@ impl Command for SubCommand {
|
||||||
|
|
||||||
let format = call.opt::<Spanned<String>>(engine_state, stack, 0)?;
|
let format = call.opt::<Spanned<String>>(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(
|
input.map(
|
||||||
move |value| match &format {
|
move |value| match &format {
|
||||||
Some(format) => format_helper(value, format.item.as_str(), format.span, head),
|
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,
|
Err(e) => e,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Value::Nothing { .. } => {
|
|
||||||
let dt = Local::now();
|
|
||||||
format_from(dt, formatter, formatter_span)
|
|
||||||
}
|
|
||||||
_ => Value::Error {
|
_ => Value::Error {
|
||||||
error: ShellError::DatetimeParseError(head_span),
|
error: ShellError::DatetimeParseError(head_span),
|
||||||
},
|
},
|
||||||
|
@ -176,13 +179,6 @@ fn format_helper_rfc2822(value: Value, span: Span) -> Value {
|
||||||
Err(e) => e,
|
Err(e) => e,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Value::Nothing { span: _ } => {
|
|
||||||
let dt = Local::now();
|
|
||||||
Value::String {
|
|
||||||
val: dt.with_timezone(dt.offset()).to_rfc2822(),
|
|
||||||
span,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
_ => Value::Error {
|
_ => Value::Error {
|
||||||
error: ShellError::DatetimeParseError(span),
|
error: ShellError::DatetimeParseError(span),
|
||||||
},
|
},
|
||||||
|
|
|
@ -5,7 +5,7 @@ fn formatter_not_valid() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
cwd: ".", pipeline(
|
cwd: ".", pipeline(
|
||||||
r#"
|
r#"
|
||||||
date format '%N'
|
date now | date format '%N'
|
||||||
"#
|
"#
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -13,6 +13,19 @@ fn formatter_not_valid() {
|
||||||
assert!(actual.err.contains("invalid format"));
|
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]
|
#[test]
|
||||||
fn locale_format_respect_different_locale() {
|
fn locale_format_respect_different_locale() {
|
||||||
let actual = nu!(
|
let actual = nu!(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user