use std::path::PathBuf;
use figment::{
providers::{Format, Toml},
Figment
};
use winreg::{enums::HKEY_LOCAL_MACHINE, RegKey};
use crate::Error;
fn get_params_subkey(service_name: &str) -> Result<winreg::RegKey, Error> {
Ok(
RegKey::predef(HKEY_LOCAL_MACHINE)
.open_subkey("SYSTEM\\CurrentControlSet\\Services")?
.open_subkey(service_name)?
.open_subkey("Parameters")?
)
}
pub fn load(service_name: &str) -> Result<Figment, Error> {
let key = "AppConf";
let subkey = get_params_subkey(service_name)?;
let fname = subkey.get_value::<String, &str>(key)?;
let fname = PathBuf::from(fname);
let fig = Figment::new().merge(Toml::file(fname));
Ok(fig)
}