diff --git a/Cargo.lock b/Cargo.lock index 993f80025e3..471622bb2c9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1180,7 +1180,9 @@ dependencies = [ "document-features", "git-testtools", "itoa 1.0.3", + "once_cell", "serde", + "thiserror", "time", ] diff --git a/git-date/Cargo.toml b/git-date/Cargo.toml index ee21c19a3ba..67bfc1aa266 100644 --- a/git-date/Cargo.toml +++ b/git-date/Cargo.toml @@ -18,12 +18,14 @@ serde1 = ["serde", "bstr/serde1"] bstr = { version = "0.2.13", default-features = false, features = ["std"]} serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"]} itoa = "1.0.1" -time = { version = "0.3.2", default-features = false, features = ["local-offset", "formatting", "macros"] } +time = { version = "0.3.2", default-features = false, features = ["local-offset", "formatting", "macros", "parsing"] } +thiserror = "1.0.32" document-features = { version = "0.2.0", optional = true } [dev-dependencies] git-testtools = { path = "../tests/tools"} +once_cell = "1.12.0" [package.metadata.docs.rs] all-features = true diff --git a/git-date/src/parse.rs b/git-date/src/parse.rs index 40f8ae3cb77..ff7444fb31d 100644 --- a/git-date/src/parse.rs +++ b/git-date/src/parse.rs @@ -1,11 +1,119 @@ +use crate::time::format::{DEFAULT, ISO8601, ISO8601_STRICT, RFC2822, SHORT}; +use crate::time::Sign; use crate::Time; +use std::convert::TryInto; +use std::num::TryFromIntError; +use std::str::FromStr; +use std::time::SystemTime; +use time::{Date, OffsetDateTime}; +#[derive(thiserror::Error, Debug)] #[allow(missing_docs)] -pub fn parse(input: &str) -> Option