From 76692109bcf18b7c642203d94b91a68e6cf5eb32 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Wed, 9 Nov 2022 14:19:59 +0530 Subject: [PATCH] feat: add Settings.pages.base_path to store website content DIRECTORY STRUCTURE: Settings.pages.base_path > page.hostname --- config/default.toml | 4 ++++ src/settings.rs | 24 ++++++++++++++++++------ src/tests.rs | 1 + 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/config/default.toml b/config/default.toml index 8b364ed..9e632f6 100644 --- a/config/default.toml +++ b/config/default.toml @@ -26,6 +26,10 @@ domain = "demo.librepages.org" cookie_secret = "94b2b2732626fdb7736229a7c777cb451e6304c147c4549f30" +[page] +base_path = "/tmp/librepages-defualt-config/" + + [database] # This section deals with the database location and how to access it diff --git a/src/settings.rs b/src/settings.rs index 16d17a8..1c5c5b0 100644 --- a/src/settings.rs +++ b/src/settings.rs @@ -84,6 +84,12 @@ pub struct Settings { pub source_code: String, pub pages: Vec>, pub database: Database, + pub page: PageConfig, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct PageConfig { + pub base_path: String, } #[cfg(not(tarpaulin_include))] @@ -174,14 +180,20 @@ impl Settings { pub fn init(&self) { for (index, page) in self.pages.iter().enumerate() { Url::parse(&page.repo).unwrap(); - let path = Path::new(&page.path); - if path.exists() && path.is_file() { - panic!("Path is a file, should be a directory: {:?}", page); + + fn create_dir_util(path: &Path) { + if path.exists() && path.is_file() { + panic!("Path is a file, should be a directory: {:?}", path); + } + + if !path.exists() { + std::fs::create_dir_all(&path).unwrap(); + } } - if !path.exists() { - std::fs::create_dir_all(&path).unwrap(); - } + create_dir_util(Path::new(&page.path)); + create_dir_util(Path::new(&self.page.base_path)); + for (index2, page2) in self.pages.iter().enumerate() { if index2 == index { continue; diff --git a/src/tests.rs b/src/tests.rs index 27bf4f3..45c15b0 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -41,6 +41,7 @@ pub async fn get_ctx() -> (Temp, Arc) { let tmp_dir = Temp::new_dir().unwrap(); println!("[log] Test temp directory: {}", tmp_dir.to_str().unwrap()); let mut pages = Vec::with_capacity(settings.pages.len()); + let page_base_path = tmp_dir.as_path().join("base_path"); for page in settings.pages.iter() { let name = Path::new(&page.path).file_name().unwrap().to_str().unwrap(); let path = tmp_dir.as_path().join(name);