diff options
Diffstat (limited to 'pkgs/by-name/ba/back/src/config/mod.rs')
-rw-r--r-- | pkgs/by-name/ba/back/src/config/mod.rs | 72 |
1 files changed, 0 insertions, 72 deletions
diff --git a/pkgs/by-name/ba/back/src/config/mod.rs b/pkgs/by-name/ba/back/src/config/mod.rs deleted file mode 100644 index 7351ad8..0000000 --- a/pkgs/by-name/ba/back/src/config/mod.rs +++ /dev/null @@ -1,72 +0,0 @@ -// Back - An extremely simple git issue tracking system. Inspired by tvix's -// panettone -// -// Copyright (C) 2024 Benedikt Peetz <benedikt.peetz@b-peetz.de> -// SPDX-License-Identifier: AGPL-3.0-or-later -// -// This file is part of Back. -// -// You should have received a copy of the License along with this program. -// If not, see <https://www.gnu.org/licenses/agpl.txt>. - -use std::{ - fs, - path::{Path, PathBuf}, -}; - -use gix::ThreadSafeRepository; -use serde::Deserialize; -use url::Url; - -use crate::error::{self, Error}; - -pub struct BackConfig { - // NOTE(@bpeetz): We do not need to html escape this, as the value must be a valid url. As such - // `<tags>` of all kinds _should_ be invalid. <2024-12-26> - pub source_code_repository_url: Url, - pub repository: ThreadSafeRepository, - pub root: Url, -} - -#[derive(Deserialize)] -struct RawBackConfig { - source_code_repository_url: Url, - repository_path: PathBuf, - root_url: Url, -} - -impl BackConfig { - pub fn from_config_file(path: &Path) -> error::Result<Self> { - let value = fs::read_to_string(path).map_err(|err| Error::ConfigRead { - file: path.to_owned(), - error: err, - })?; - - let raw: RawBackConfig = - serde_json::from_str(&value).map_err(|err| Error::ConfigParse { - file: path.to_owned(), - error: err, - })?; - - Self::try_from(raw) - } -} - -impl TryFrom<RawBackConfig> for BackConfig { - type Error = error::Error; - - fn try_from(value: RawBackConfig) -> Result<Self, Self::Error> { - let repository = { - ThreadSafeRepository::open(&value.repository_path).map_err(|err| Error::RepoOpen { - repository_path: value.repository_path, - error: Box::new(err), - }) - }?; - - Ok(Self { - repository, - source_code_repository_url: value.source_code_repository_url, - root: value.root_url, - }) - } -} |