mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 22:50:14 +02:00
A few ls improvements. New welcome message (#1195)
This commit is contained in:
@ -30,7 +30,6 @@ nom-tracable = "0.4.1"
|
||||
typetag = "0.1.4"
|
||||
query_interface = "0.3.5"
|
||||
byte-unit = "3.0.3"
|
||||
chrono-humanize = "0.0.11"
|
||||
natural = "0.3.0"
|
||||
|
||||
# implement conversions
|
||||
|
@ -20,7 +20,7 @@ pub use crate::type_shape::{Row as RowType, Type};
|
||||
pub use crate::value::column_path::{did_you_mean, ColumnPath, PathMember, UnspannedPathMember};
|
||||
pub use crate::value::dict::{Dictionary, TaggedDictBuilder};
|
||||
pub use crate::value::evaluate::{Evaluate, EvaluateTrait, Scope};
|
||||
pub use crate::value::primitive::format_primitive;
|
||||
pub use crate::value::primitive::Primitive;
|
||||
pub use crate::value::primitive::{format_date, format_duration, format_primitive};
|
||||
pub use crate::value::range::{Range, RangeInclusion};
|
||||
pub use crate::value::{UntaggedValue, Value};
|
||||
|
@ -4,7 +4,6 @@ use crate::value::range::Range;
|
||||
use crate::value::{serde_bigdecimal, serde_bigint};
|
||||
use bigdecimal::BigDecimal;
|
||||
use chrono::{DateTime, Utc};
|
||||
use chrono_humanize::Humanize;
|
||||
use nu_errors::{ExpectedRange, ShellError};
|
||||
use nu_source::{PrettyDebug, Span, SpannedItem};
|
||||
use num_bigint::BigInt;
|
||||
@ -154,7 +153,7 @@ pub fn format_primitive(primitive: &Primitive, field_name: Option<&String>) -> S
|
||||
}
|
||||
.to_owned(),
|
||||
Primitive::Binary(_) => "<binary>".to_owned(),
|
||||
Primitive::Date(d) => d.humanize(),
|
||||
Primitive::Date(d) => format_date(d),
|
||||
}
|
||||
}
|
||||
|
||||
@ -171,3 +170,67 @@ pub fn format_duration(sec: u64) -> String {
|
||||
(d, h, m, s) => format!("{}:{:02}:{:02}:{:02}", d, h, m, s),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn format_date(d: &DateTime<Utc>) -> String {
|
||||
let utc: DateTime<Utc> = Utc::now();
|
||||
|
||||
let duration = utc.signed_duration_since(*d);
|
||||
|
||||
if duration.num_weeks() >= 52 {
|
||||
let num_years = duration.num_weeks() / 52;
|
||||
|
||||
format!(
|
||||
"{} year{} ago",
|
||||
num_years,
|
||||
if num_years == 1 { "" } else { "s" }
|
||||
)
|
||||
} else if duration.num_weeks() >= 4 {
|
||||
let num_months = duration.num_weeks() / 4;
|
||||
|
||||
format!(
|
||||
"{} month{} ago",
|
||||
num_months,
|
||||
if num_months == 1 { "" } else { "s" }
|
||||
)
|
||||
} else if duration.num_weeks() >= 1 {
|
||||
let num_weeks = duration.num_weeks();
|
||||
|
||||
format!(
|
||||
"{} week{} ago",
|
||||
num_weeks,
|
||||
if num_weeks == 1 { "" } else { "s" }
|
||||
)
|
||||
} else if duration.num_days() >= 1 {
|
||||
let num_days = duration.num_days();
|
||||
|
||||
format!(
|
||||
"{} day{} ago",
|
||||
num_days,
|
||||
if num_days == 1 { "" } else { "s" }
|
||||
)
|
||||
} else if duration.num_hours() >= 1 {
|
||||
let num_hours = duration.num_hours();
|
||||
|
||||
format!(
|
||||
"{} hour{} ago",
|
||||
num_hours,
|
||||
if num_hours == 1 { "" } else { "s" }
|
||||
)
|
||||
} else if duration.num_minutes() >= 1 {
|
||||
let num_minutes = duration.num_minutes();
|
||||
|
||||
format!(
|
||||
"{} min{} ago",
|
||||
num_minutes,
|
||||
if num_minutes == 1 { "" } else { "s" }
|
||||
)
|
||||
} else {
|
||||
let num_seconds = duration.num_seconds();
|
||||
|
||||
format!(
|
||||
"{} sec{} ago",
|
||||
num_seconds,
|
||||
if num_seconds == 1 { "" } else { "s" }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -48,6 +48,7 @@ macro_rules! nu {
|
||||
.expect("couldn't read from stdout");
|
||||
|
||||
let out = String::from_utf8_lossy(&output.stdout);
|
||||
let out = out.lines().skip(1).collect::<Vec<_>>().join("\n");
|
||||
let out = out.replace("\r\n", "");
|
||||
let out = out.replace("\n", "");
|
||||
out
|
||||
|
Reference in New Issue
Block a user