From 8a4f9e807448d7526caac3ceec40cf8a9e28ddce Mon Sep 17 00:00:00 2001 From: Mateusz Walkiewicz Date: Tue, 17 Sep 2024 19:00:45 +0200 Subject: [PATCH] Dummy provider: override offer properties --- src/process/dummy.rs | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/process/dummy.rs b/src/process/dummy.rs index b1c012a..ee0e701 100644 --- a/src/process/dummy.rs +++ b/src/process/dummy.rs @@ -1,3 +1,4 @@ +use std::fs; use std::path::PathBuf; use std::process::{ExitStatus, Stdio}; use std::sync::Arc; @@ -14,6 +15,8 @@ use crate::offer_template; use super::{Runtime, RuntimeConfig}; +const OFFER_OVERRIDE_FILE_PATH_ENV: &str = "OFFER_OVERRIDE_FILE_PATH"; + #[derive(Clone)] pub struct Dummy { child: Arc>, @@ -87,10 +90,27 @@ impl Runtime for Dummy { } fn test(_config: &Self::CONFIG) -> anyhow::Result<()> { - Ok(()) + Dummy::read_overrides().map(|_| ()) } fn offer_template(config: &Self::CONFIG) -> anyhow::Result { - offer_template::template(config) + let template = offer_template::template(config)?; + if let Ok(Some(overrides)) = Dummy::read_overrides() { + Ok(template.patch(overrides)) + } else { + Ok(template) + } + } +} + +impl Dummy { + fn read_overrides() -> anyhow::Result> { + if let Ok(override_json_path) = std::env::var(OFFER_OVERRIDE_FILE_PATH_ENV) { + let file = fs::File::open(override_json_path)?; + let overrides: OfferTemplate = serde_json::from_reader(file)?; + Ok(Some(overrides)) + } else { + Ok(None) + } } }