1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-27 11:07:44 +00:00

Merge pull request #4952 from wanderinglethe/date-remove-time-dep

Remove time dependency from date
This commit is contained in:
Sylvestre Ledru 2023-06-06 22:21:38 +02:00 committed by GitHub
commit 6d6966cfb1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 15 deletions

15
Cargo.lock generated
View file

@ -1154,6 +1154,16 @@ dependencies = [
"time", "time",
] ]
[[package]]
name = "humantime_to_duration"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a80a233096ddccb74e62145f3a49cacea6a2669ee90f6e144e15fe28f4037c4"
dependencies = [
"chrono",
"regex",
]
[[package]] [[package]]
name = "iana-time-zone" name = "iana-time-zone"
version = "0.1.53" version = "0.1.53"
@ -2528,9 +2538,8 @@ version = "0.0.19"
dependencies = [ dependencies = [
"chrono", "chrono",
"clap", "clap",
"humantime_to_duration", "humantime_to_duration 0.3.1",
"libc", "libc",
"time",
"uucore", "uucore",
"windows-sys 0.48.0", "windows-sys 0.48.0",
] ]
@ -3224,7 +3233,7 @@ version = "0.0.19"
dependencies = [ dependencies = [
"clap", "clap",
"filetime", "filetime",
"humantime_to_duration", "humantime_to_duration 0.2.1",
"time", "time",
"uucore", "uucore",
"windows-sys 0.48.0", "windows-sys 0.48.0",

View file

@ -286,7 +286,7 @@ fundu = "0.5.1"
gcd = "2.3" gcd = "2.3"
glob = "0.3.1" glob = "0.3.1"
half = "2.2" half = "2.2"
humantime_to_duration = "0.2.1" humantime_to_duration = "0.3.1"
indicatif = "0.17" indicatif = "0.17"
is-terminal = "0.4.7" is-terminal = "0.4.7"
itertools = "0.10.5" itertools = "0.10.5"

View file

@ -78,6 +78,8 @@ skip = [
{ name = "redox_syscall", version = "0.3.5" }, { name = "redox_syscall", version = "0.3.5" },
# cpp_macros # cpp_macros
{ name = "aho-corasick", version = "0.7.19" }, { name = "aho-corasick", version = "0.7.19" },
# touch, can be remove when touch switches from time to chrono
{ name = "humantime_to_duration", version = "0.2.1" },
] ]
# spell-checker: enable # spell-checker: enable

View file

@ -17,8 +17,6 @@ path = "src/date.rs"
[dependencies] [dependencies]
chrono = { workspace=true } chrono = { workspace=true }
#/ TODO: check if we can avoid chrono+time
time = { workspace=true }
clap = { workspace=true } clap = { workspace=true }
uucore = { workspace=true } uucore = { workspace=true }
humantime_to_duration = { workspace=true } humantime_to_duration = { workspace=true }

View file

@ -9,7 +9,7 @@
// spell-checker:ignore (chrono) Datelike Timelike ; (format) DATEFILE MMDDhhmm ; (vars) datetime datetimes humantime // spell-checker:ignore (chrono) Datelike Timelike ; (format) DATEFILE MMDDhhmm ; (vars) datetime datetimes humantime
use chrono::format::{Item, StrftimeItems}; use chrono::format::{Item, StrftimeItems};
use chrono::{DateTime, Duration as ChronoDuration, FixedOffset, Local, Offset, Utc}; use chrono::{DateTime, Duration, FixedOffset, Local, Offset, Utc};
#[cfg(windows)] #[cfg(windows)]
use chrono::{Datelike, Timelike}; use chrono::{Datelike, Timelike};
use clap::{crate_version, Arg, ArgAction, Command}; use clap::{crate_version, Arg, ArgAction, Command};
@ -18,7 +18,6 @@ use libc::{clock_settime, timespec, CLOCK_REALTIME};
use std::fs::File; use std::fs::File;
use std::io::{BufRead, BufReader}; use std::io::{BufRead, BufReader};
use std::path::PathBuf; use std::path::PathBuf;
use time::Duration;
use uucore::display::Quotable; use uucore::display::Quotable;
#[cfg(not(any(target_os = "redox")))] #[cfg(not(any(target_os = "redox")))]
use uucore::error::FromIo; use uucore::error::FromIo;
@ -226,13 +225,10 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
let iter = std::iter::once(date); let iter = std::iter::once(date);
Box::new(iter) Box::new(iter)
} }
DateSource::Human(ref input) => { DateSource::Human(relative_time) => {
// Get the current DateTime<FixedOffset> and convert the input time::Duration to chrono::Duration // Get the current DateTime<FixedOffset> for things like "1 year ago"
// for things like "1 year ago"
let current_time = DateTime::<FixedOffset>::from(Local::now()); let current_time = DateTime::<FixedOffset>::from(Local::now());
let input_chrono = ChronoDuration::seconds(input.as_seconds_f32() as i64) let iter = std::iter::once(Ok(current_time + relative_time));
+ ChronoDuration::nanoseconds(input.subsec_nanoseconds() as i64);
let iter = std::iter::once(Ok(current_time + input_chrono));
Box::new(iter) Box::new(iter)
} }
DateSource::File(ref path) => { DateSource::File(ref path) => {

View file

@ -18,7 +18,8 @@ path = "src/touch.rs"
[dependencies] [dependencies]
filetime = { workspace=true } filetime = { workspace=true }
clap = { workspace=true } clap = { workspace=true }
humantime_to_duration = { workspace=true } # TODO: use workspace dependency (0.3) when switching from time to chrono
humantime_to_duration = "0.2.1"
time = { workspace=true, features = ["parsing", "formatting", "local-offset", "macros"] } time = { workspace=true, features = ["parsing", "formatting", "local-offset", "macros"] }
uucore = { workspace=true, features=["libc"] } uucore = { workspace=true, features=["libc"] }