diff options
Diffstat (limited to 'src/actions/index/indextime.rs')
-rw-r--r-- | src/actions/index/indextime.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/actions/index/indextime.rs b/src/actions/index/indextime.rs new file mode 100644 index 0000000..b078b2f --- /dev/null +++ b/src/actions/index/indextime.rs @@ -0,0 +1,38 @@ +use std::fs; +use std::io::{Read,Write}; +use chrono::prelude::*; + +use defaults::*; + +pub fn write_index_time(index_time: &DateTime<Utc>) { + let mut timefile = fs::File::create(get_indextimefile()).unwrap(); + timefile.write_all(format!("{}\n", index_time.timestamp()).as_bytes()).unwrap(); +} + +pub fn get_index_time() -> Option<DateTime<Utc>> { + let mut timefile = fs::File::open(get_indextimefile()).ok()?; + let mut timestamp_str = String::new(); + timefile.read_to_string(&mut timestamp_str).ok()?; + let timestamp = timestamp_str.trim().parse::<i64>().ok()?; + Some(Utc.timestamp(timestamp, 0)) +} + +#[cfg(test)] +mod tests { + use super::*; + + use testutils; + use assert_fs::prelude::*; + + #[test] + fn test_write_read() { + let testdir = testutils::prepare_testdir("testdir"); + + let timestamp = Utc.ymd(1990,01,01).and_hms(1, 1, 0); + write_index_time(×tamp); + testdir.child(".khaleesi/index-time").assert("631155660\n"); + + let indextime = get_index_time(); + assert_eq!(Some(timestamp), indextime); + } +} |