Add TODO's, Save pending config Changes

This commit is contained in:
Samuel Lorch 2023-10-25 18:13:59 +02:00
parent 125c2d48d8
commit eaf9f2d3b1

View file

@ -25,6 +25,7 @@ impl ConfigManager {
Ok(Self { Ok(Self {
shared_data: Arc::new(Mutex::new(SharedData { shared_data: Arc::new(Mutex::new(SharedData {
current_config: read_file_to_config(CURRENT_CONFIG_PATH)?, current_config: read_file_to_config(CURRENT_CONFIG_PATH)?,
// TODO Dont Fail if pending config is missing, use current instead
pending_config: read_file_to_config(PENDING_CONFIG_PATH)?, pending_config: read_file_to_config(PENDING_CONFIG_PATH)?,
})), })),
}) })
@ -40,15 +41,18 @@ impl ConfigManager {
pub fn apply_pending_changes(&mut self) -> Result<(), Box<dyn Error>> { pub fn apply_pending_changes(&mut self) -> Result<(), Box<dyn Error>> {
let mut data = self.shared_data.lock().unwrap(); let mut data = self.shared_data.lock().unwrap();
// TODO run Apply functions, revert on failure // TODO run Apply functions
// TODO Revert on Apply Failure and Return
write_config_to_file(CURRENT_CONFIG_PATH, data.pending_config.clone())?; write_config_to_file(CURRENT_CONFIG_PATH, data.pending_config.clone())?;
// Also revert if config save fails // TODO revert if config save fails
// TODO Remove Pending Config File
data.current_config = data.pending_config.clone(); data.current_config = data.pending_config.clone();
Ok(()) Ok(())
} }
pub fn discard_pending_changes(&mut self) -> Result<(), Box<dyn Error>> { pub fn discard_pending_changes(&mut self) -> Result<(), Box<dyn Error>> {
let mut data = self.shared_data.lock().unwrap(); let mut data = self.shared_data.lock().unwrap();
// TODO Remove Pending Config File
data.pending_config = data.current_config.clone(); data.pending_config = data.current_config.clone();
Ok(()) Ok(())
@ -76,6 +80,7 @@ impl<'a> ConfigTransaction<'a> {
let ch = self.changes.clone(); let ch = self.changes.clone();
ch.validate()?; ch.validate()?;
self.shared_data.pending_config = ch.clone(); self.shared_data.pending_config = ch.clone();
write_config_to_file(PENDING_CONFIG_PATH, ch.clone())?;
Ok(()) Ok(())
} }
} }