From 4314937d269cb571536badbd90b42058542766ee Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 20 Oct 2023 18:39:26 -0400 Subject: [PATCH] Add a function to load a config from file. --- src/config/full.rs | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/config/full.rs b/src/config/full.rs index e063959..6a7257b 100644 --- a/src/config/full.rs +++ b/src/config/full.rs @@ -1,3 +1,4 @@ +use std::path::Path; use std::path::PathBuf; use tokio::fs::File; use tokio::io::AsyncWriteExt; @@ -18,6 +19,23 @@ impl Config { }) } + 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."); + Ok(Config { + raw: parsed_contents, + root_dir: root_directory.to_owned(), + }) + } + inner(path.as_ref()).await + } + pub(crate) async fn write_to_disk(&self) -> Result<(), Box> { let mut config_file = File::create(self.get_path_to_config_file()).await?; config_file