From 9c8d4c1a1b6dc1fcc3cd92d66972f1cf7f21d930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fe=CC=81lix=20Saparelli?= Date: Fri, 3 Sep 2021 08:14:04 +1200 Subject: [PATCH] Add fs event metadata to event --- lib/src/event.rs | 4 ++++ lib/src/fs.rs | 13 ++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/lib/src/event.rs b/lib/src/event.rs index c64f1bd..f119f26 100644 --- a/lib/src/event.rs +++ b/lib/src/event.rs @@ -13,6 +13,8 @@ use std::{ process::ExitStatus, }; +use notify::EventKind; + use crate::signal::Signal; /// An event, as far as watchexec cares about. @@ -28,6 +30,7 @@ pub struct Event { #[non_exhaustive] pub enum Particle { Path(PathBuf), + FileEventKind(EventKind), Source(Source), Process(u32), Signal(Signal), @@ -69,6 +72,7 @@ impl fmt::Display for Event { for p in &self.particulars { match p { Particle::Path(p) => write!(f, " path={}", p.display())?, + Particle::FileEventKind(kind) => write!(f, " kind={:?}", kind)?, Particle::Source(s) => write!(f, " source={:?}", s)?, Particle::Process(p) => write!(f, " process={}", p)?, Particle::Signal(s) => write!(f, " signal={:?}", s)?, diff --git a/lib/src/fs.rs b/lib/src/fs.rs index 99a6dbc..de04f44 100644 --- a/lib/src/fs.rs +++ b/lib/src/fs.rs @@ -229,6 +229,7 @@ fn process_event( let mut particulars = Vec::with_capacity(4); particulars.push(Particle::Source(Source::Filesystem)); + particulars.push(Particle::FileEventKind(nev.kind)); for path in nev.paths { particulars.push(Particle::Path(dunce::canonicalize(path)?)); @@ -238,9 +239,19 @@ fn process_event( particulars.push(Particle::Process(pid)); } + let mut metadata = HashMap::new(); + + if let Some(uid) = nev.attrs.info() { + metadata.insert("file-event-info".to_string(), vec![uid.to_string()]); + } + + if let Some(src) = nev.attrs.source() { + metadata.insert("notify-backend".to_string(), vec![src.to_string()]); + } + let ev = Event { particulars, - metadata: HashMap::new(), // TODO + metadata, }; trace!(event = ?ev, "processed notify event into watchexec event");