mirror of
https://github.com/watchexec/watchexec.git
synced 2024-09-29 22:51:33 +02:00
Add fs event metadata to event
This commit is contained in:
parent
07f5e445f6
commit
9c8d4c1a1b
@ -13,6 +13,8 @@ use std::{
|
|||||||
process::ExitStatus,
|
process::ExitStatus,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use notify::EventKind;
|
||||||
|
|
||||||
use crate::signal::Signal;
|
use crate::signal::Signal;
|
||||||
|
|
||||||
/// An event, as far as watchexec cares about.
|
/// An event, as far as watchexec cares about.
|
||||||
@ -28,6 +30,7 @@ pub struct Event {
|
|||||||
#[non_exhaustive]
|
#[non_exhaustive]
|
||||||
pub enum Particle {
|
pub enum Particle {
|
||||||
Path(PathBuf),
|
Path(PathBuf),
|
||||||
|
FileEventKind(EventKind),
|
||||||
Source(Source),
|
Source(Source),
|
||||||
Process(u32),
|
Process(u32),
|
||||||
Signal(Signal),
|
Signal(Signal),
|
||||||
@ -69,6 +72,7 @@ impl fmt::Display for Event {
|
|||||||
for p in &self.particulars {
|
for p in &self.particulars {
|
||||||
match p {
|
match p {
|
||||||
Particle::Path(p) => write!(f, " path={}", p.display())?,
|
Particle::Path(p) => write!(f, " path={}", p.display())?,
|
||||||
|
Particle::FileEventKind(kind) => write!(f, " kind={:?}", kind)?,
|
||||||
Particle::Source(s) => write!(f, " source={:?}", s)?,
|
Particle::Source(s) => write!(f, " source={:?}", s)?,
|
||||||
Particle::Process(p) => write!(f, " process={}", p)?,
|
Particle::Process(p) => write!(f, " process={}", p)?,
|
||||||
Particle::Signal(s) => write!(f, " signal={:?}", s)?,
|
Particle::Signal(s) => write!(f, " signal={:?}", s)?,
|
||||||
|
@ -229,6 +229,7 @@ fn process_event(
|
|||||||
|
|
||||||
let mut particulars = Vec::with_capacity(4);
|
let mut particulars = Vec::with_capacity(4);
|
||||||
particulars.push(Particle::Source(Source::Filesystem));
|
particulars.push(Particle::Source(Source::Filesystem));
|
||||||
|
particulars.push(Particle::FileEventKind(nev.kind));
|
||||||
|
|
||||||
for path in nev.paths {
|
for path in nev.paths {
|
||||||
particulars.push(Particle::Path(dunce::canonicalize(path)?));
|
particulars.push(Particle::Path(dunce::canonicalize(path)?));
|
||||||
@ -238,9 +239,19 @@ fn process_event(
|
|||||||
particulars.push(Particle::Process(pid));
|
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 {
|
let ev = Event {
|
||||||
particulars,
|
particulars,
|
||||||
metadata: HashMap::new(), // TODO
|
metadata,
|
||||||
};
|
};
|
||||||
|
|
||||||
trace!(event = ?ev, "processed notify event into watchexec event");
|
trace!(event = ?ev, "processed notify event into watchexec event");
|
||||||
|
Loading…
Reference in New Issue
Block a user