summaryrefslogtreecommitdiffstats
path: root/src/actions/index/indextime.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/actions/index/indextime.rs')
-rw-r--r--src/actions/index/indextime.rs38
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(&timestamp);
+ testdir.child(".khaleesi/index-time").assert("631155660\n");
+
+ let indextime = get_index_time();
+ assert_eq!(Some(timestamp), indextime);
+ }
+}