mirror of
https://github.com/nushell/nushell
synced 2025-01-13 13:49:21 +00:00
Deprecate date to-record
and date to-table
(#14319)
# Description Implements #11234 based on the comments there: * (Previously implemented): `into record` handles nanoseconds (as well as milliseconds and microseconds, which the deprecated commands didn't support). * Added deprecation warning to `date to-record` and `date to-table` * Added new example for `into record` showing the conversion to a table * Changed `std/dt` to use `into record` * Added "Deprecated" category back to nu-protocol::Signature * Assigned the deprecated commands to the Deprecated category so be categorized properly in the online Doc. # User-Facing Changes Deprecated command warning # Tests + Formatting - 🟢 `toolkit fmt` - 🟢 `toolkit clippy` - 🟢 `toolkit test` - 🟢 `toolkit test stdlib` # After Submitting Searched doc for existing uses of `date to-record` and `date to-table`: * For primary English-language docs, there are no uses other than in the auto-generated command help, which will be updated based on this PR * Other language translations appear to have an old use in several places and will need to be updated to match the English-language doc.
This commit is contained in:
parent
817830940b
commit
e17f6d654c
5 changed files with 34 additions and 4 deletions
|
@ -99,6 +99,11 @@ impl Command for SubCommand {
|
||||||
"timezone" => Value::test_string("+02:00"),
|
"timezone" => Value::test_string("+02:00"),
|
||||||
})),
|
})),
|
||||||
},
|
},
|
||||||
|
Example {
|
||||||
|
description: "convert date components to table columns",
|
||||||
|
example: "2020-04-12T22:10:57+02:00 | into record | transpose | transpose -r",
|
||||||
|
result: None,
|
||||||
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use crate::date::utils::parse_date_from_string;
|
use crate::date::utils::parse_date_from_string;
|
||||||
use chrono::{DateTime, Datelike, FixedOffset, Local, Timelike};
|
use chrono::{DateTime, Datelike, FixedOffset, Local, Timelike};
|
||||||
use nu_engine::command_prelude::*;
|
use nu_engine::command_prelude::*;
|
||||||
|
use nu_protocol::{report_parse_warning, ParseWarning};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct SubCommand;
|
pub struct SubCommand;
|
||||||
|
@ -17,7 +18,7 @@ impl Command for SubCommand {
|
||||||
(Type::String, Type::record()),
|
(Type::String, Type::record()),
|
||||||
])
|
])
|
||||||
.allow_variants_without_examples(true) // https://github.com/nushell/nushell/issues/7032
|
.allow_variants_without_examples(true) // https://github.com/nushell/nushell/issues/7032
|
||||||
.category(Category::Date)
|
.category(Category::Deprecated)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn description(&self) -> &str {
|
fn description(&self) -> &str {
|
||||||
|
@ -35,6 +36,17 @@ impl Command for SubCommand {
|
||||||
call: &Call,
|
call: &Call,
|
||||||
input: PipelineData,
|
input: PipelineData,
|
||||||
) -> Result<PipelineData, ShellError> {
|
) -> Result<PipelineData, ShellError> {
|
||||||
|
let head = call.head;
|
||||||
|
report_parse_warning(
|
||||||
|
&StateWorkingSet::new(engine_state),
|
||||||
|
&ParseWarning::DeprecatedWarning {
|
||||||
|
old_command: "date to-record".into(),
|
||||||
|
new_suggestion: "see `into record` command examples".into(),
|
||||||
|
span: head,
|
||||||
|
url: "`help into record`".into(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
let head = call.head;
|
let head = call.head;
|
||||||
// This doesn't match explicit nulls
|
// This doesn't match explicit nulls
|
||||||
if matches!(input, PipelineData::Empty) {
|
if matches!(input, PipelineData::Empty) {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
use crate::date::utils::parse_date_from_string;
|
use crate::date::utils::parse_date_from_string;
|
||||||
use chrono::{DateTime, Datelike, FixedOffset, Local, Timelike};
|
use chrono::{DateTime, Datelike, FixedOffset, Local, Timelike};
|
||||||
use nu_engine::command_prelude::*;
|
use nu_engine::command_prelude::*;
|
||||||
|
use nu_protocol::{report_parse_warning, ParseWarning};
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct SubCommand;
|
pub struct SubCommand;
|
||||||
|
@ -17,7 +18,7 @@ impl Command for SubCommand {
|
||||||
(Type::String, Type::table()),
|
(Type::String, Type::table()),
|
||||||
])
|
])
|
||||||
.allow_variants_without_examples(true) // https://github.com/nushell/nushell/issues/7032
|
.allow_variants_without_examples(true) // https://github.com/nushell/nushell/issues/7032
|
||||||
.category(Category::Date)
|
.category(Category::Deprecated)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn description(&self) -> &str {
|
fn description(&self) -> &str {
|
||||||
|
@ -36,6 +37,16 @@ impl Command for SubCommand {
|
||||||
input: PipelineData,
|
input: PipelineData,
|
||||||
) -> Result<PipelineData, ShellError> {
|
) -> Result<PipelineData, ShellError> {
|
||||||
let head = call.head;
|
let head = call.head;
|
||||||
|
report_parse_warning(
|
||||||
|
&StateWorkingSet::new(engine_state),
|
||||||
|
&ParseWarning::DeprecatedWarning {
|
||||||
|
old_command: "date to-table".into(),
|
||||||
|
new_suggestion: "see `into record` command examples".into(),
|
||||||
|
span: head,
|
||||||
|
url: "`help into record`".into(),
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
// This doesn't match explicit nulls
|
// This doesn't match explicit nulls
|
||||||
if matches!(input, PipelineData::Empty) {
|
if matches!(input, PipelineData::Empty) {
|
||||||
return Err(ShellError::PipelineEmpty { dst_span: head });
|
return Err(ShellError::PipelineEmpty { dst_span: head });
|
||||||
|
|
|
@ -44,6 +44,7 @@ pub enum Category {
|
||||||
Date,
|
Date,
|
||||||
Debug,
|
Debug,
|
||||||
Default,
|
Default,
|
||||||
|
Deprecated,
|
||||||
Removed,
|
Removed,
|
||||||
Env,
|
Env,
|
||||||
Experimental,
|
Experimental,
|
||||||
|
@ -79,6 +80,7 @@ impl std::fmt::Display for Category {
|
||||||
Category::Date => "date",
|
Category::Date => "date",
|
||||||
Category::Debug => "debug",
|
Category::Debug => "debug",
|
||||||
Category::Default => "default",
|
Category::Default => "default",
|
||||||
|
Category::Deprecated => "deprecated",
|
||||||
Category::Removed => "removed",
|
Category::Removed => "removed",
|
||||||
Category::Env => "env",
|
Category::Env => "env",
|
||||||
Category::Experimental => "experimental",
|
Category::Experimental => "experimental",
|
||||||
|
|
|
@ -120,8 +120,8 @@ export def datetime-diff [
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let from_expanded = ($later | date to-timezone utc | date to-record)
|
let from_expanded = ($later | date to-timezone utc | into record)
|
||||||
let to_expanded = ($earlier | date to-timezone utc | date to-record)
|
let to_expanded = ($earlier | date to-timezone utc | into record)
|
||||||
|
|
||||||
mut result = { year: ($from_expanded.year - $to_expanded.year), month: ($from_expanded.month - $to_expanded.month), day:0, hour:0, minute:0, second:0, millisecond:0, microsecond:0, nanosecond:0}
|
mut result = { year: ($from_expanded.year - $to_expanded.year), month: ($from_expanded.month - $to_expanded.month), day:0, hour:0, minute:0, second:0, millisecond:0, microsecond:0, nanosecond:0}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue