From 273734c9ffc2cbecc8ea236e27147e25a421efe2 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 20 Oct 2023 18:45:24 -0400 Subject: [PATCH] Switch to storing a path to the config file instead of a path to the root directory. --- src/config/full.rs | 47 ++++++++++++++++++++++------------------------ 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/src/config/full.rs b/src/config/full.rs index 6a7257b..49a0e8f 100644 --- a/src/config/full.rs +++ b/src/config/full.rs @@ -8,43 +8,40 @@ use super::raw::RawConfig; /// This is the config struct used by most of the code, which is an interpreted version of the RawConfig struct which is the raw disk-representation of the config. pub(crate) struct Config { raw: RawConfig, - root_dir: PathBuf, + config_path: PathBuf, } impl Config { - pub(crate) fn new>(root_dir: P) -> Result> { - Ok(Config { - raw: RawConfig::default(), - root_dir: root_dir.into(), - }) - } - - pub(crate) async fn load_from_file>( - path: P, - ) -> Result> { - async fn inner(path: &Path) -> Result> { - let contents = tokio::fs::read_to_string(path).await?; - let parsed_contents: RawConfig = toml::from_str(contents.as_str())?; - let root_directory = path - .parent() - .expect("Writer config must exist inside a directory."); + pub(crate) fn new>(root_dir: P) -> Result> { + fn inner(root_dir: &Path) -> Result> { + let file_path = root_dir.join("writer.toml"); Ok(Config { - raw: parsed_contents, - root_dir: root_directory.to_owned(), + raw: RawConfig::default(), + config_path: file_path, }) } - inner(path.as_ref()).await + inner(root_dir.as_ref()) + } + + pub(crate) async fn load_from_file>( + path: P, + ) -> Result> { + async fn inner(path: PathBuf) -> Result> { + let contents = tokio::fs::read_to_string(&path).await?; + let parsed_contents: RawConfig = toml::from_str(contents.as_str())?; + Ok(Config { + raw: parsed_contents, + config_path: path, + }) + } + inner(path.into()).await } pub(crate) async fn write_to_disk(&self) -> Result<(), Box> { - let mut config_file = File::create(self.get_path_to_config_file()).await?; + let mut config_file = File::create(&self.config_path).await?; config_file .write_all(toml::to_string(&self.raw)?.as_bytes()) .await?; Ok(()) } - - pub(crate) fn get_path_to_config_file(&self) -> PathBuf { - self.root_dir.join("writer.toml") - } }