diff options
author | Ben Morrison <ben@gbmor.dev> | 2020-06-16 20:05:30 -0400 |
---|---|---|
committer | Ben Morrison <ben@gbmor.dev> | 2020-06-16 20:14:37 -0400 |
commit | 0fe685c34c5cdbff278b70c98241b0aa7c5bd6ed (patch) | |
tree | 5468c2a6d278d901f28085d3b2f1b41a1df4f860 /src/posts.rs | |
parent | 40bb48bb701f88c902b912fb51fea88b5ae9a8b8 (diff) | |
download | clinte-0fe685c34c5cdbff278b70c98241b0aa7c5bd6ed.tar.gz |
moved hashing to shellscript to check for posts
removes dependency on sha2 crate and allows users to choose their own hashing algorithm easily. now copies clinte.json to $HOME/.clinte.json once the posts are viewed. a shellscript can be used to compare the hash of the global clinte.json to the hash of the copy. an example script is supplied. on `make install` the example script is installed to /etc/profile.d/, where it will be run for users on login.
Diffstat (limited to 'src/posts.rs')
-rw-r--r-- | src/posts.rs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/posts.rs b/src/posts.rs index 0de3d52..1dfd167 100644 --- a/src/posts.rs +++ b/src/posts.rs @@ -1,5 +1,8 @@ use std::io; +#[cfg(not(test))] +use std::{env, fs}; + use crate::conf; use crate::db; use crate::error; @@ -83,7 +86,6 @@ pub fn display() -> error::Result<()> { .unwrap_or_else(|_| 80); let all = db::Posts::get_all(db::PATH); - all.hash()?; let mut postvec = Vec::new(); all.posts().iter().enumerate().for_each(|(id, post)| { @@ -117,6 +119,19 @@ pub fn display() -> error::Result<()> { } } + // copy the json file to the user's home directory + // so it can be compared to the global file to check + // for new posts. + // previously, I'd hashed it, but I feel like it's + // better to leave the hashing to UNIX utilities + // than to add a heavy-ish dependency. + #[cfg(not(test))] + { + let homedir = env::var("HOME")?; + let localdest = format!("{}/.clinte.json", homedir); + fs::copy(db::PATH, localdest)?; + } + Ok(()) } |