diff --git a/waybar-collectd/src/runner.rs b/waybar-collectd/src/runner.rs index 2fbbd4f..471e183 100644 --- a/waybar-collectd/src/runner.rs +++ b/waybar-collectd/src/runner.rs @@ -1,5 +1,5 @@ use core::fmt; -use std::time::SystemTime; +use std::{fs, time::SystemTime}; use draw::{StackedConfig, StackedSeries, StackedSeriesConfig, stacked}; use imageproc::image::codecs::pnm::SampleEncoding; @@ -95,6 +95,15 @@ impl Runner { self.last_sample = now; for g in &mut self.graphs { + let path = std::path::Path::new(&g.series.config.path) + .parent() + .expect("wrong target directory"); + if !fs::exists(path).unwrap_or(false) { + fs::create_dir(path).map_err(|_| { + RunnerError::CouldNotSaveImage("cannot create parent directory".to_string()) + })?; + } + // fill in empty samples for missing data if dt >= 2. { let dt_round = dt.round() as u32;