aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/ba/back/src/config
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-06 22:08:26 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-06-06 22:08:26 +0200
commit21b9a461dafeab63893d82a82d7b84ffe3a59c40 (patch)
treedfb8e657e2f36b426d9fba1b1a703431836d92e5 /pkgs/by-name/ba/back/src/config
parentflake.nix: Use the packaged version of `ragenix` (diff)
downloadnixos-server-21b9a461dafeab63893d82a82d7b84ffe3a59c40.zip
pkgs/back: Remove
Back has been moved out-of-tree.
Diffstat (limited to 'pkgs/by-name/ba/back/src/config')
-rw-r--r--pkgs/by-name/ba/back/src/config/mod.rs136
1 files changed, 0 insertions, 136 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 832d060..0000000
--- a/pkgs/by-name/ba/back/src/config/mod.rs
+++ /dev/null
@@ -1,136 +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},
- git_bug::dag::is_git_bug,
-};
-
-#[derive(Deserialize)]
-pub struct BackConfig {
- /// The url to the source code of back. This is needed, because back is licensed under the
- /// AGPL.
- pub source_code_repository_url: Url,
-
- /// The root url this instance of back is hosted on.
- /// For example:
- /// `issues.foss-syndicate.org`
- pub root_url: Url,
-
- project_list: PathBuf,
-
- /// The path that is the common parent of all the repositories.
- pub scan_path: PathBuf,
-}
-
-pub struct BackRepositories {
- repositories: Vec<BackRepository>,
-}
-
-impl BackRepositories {
- pub fn iter(&self) -> <&Self as IntoIterator>::IntoIter {
- self.into_iter()
- }
-}
-
-impl<'a> IntoIterator for &'a BackRepositories {
- type Item = <&'a Vec<BackRepository> as IntoIterator>::Item;
-
- type IntoIter = <&'a Vec<BackRepository> as IntoIterator>::IntoIter;
-
- fn into_iter(self) -> Self::IntoIter {
- self.repositories.iter()
- }
-}
-
-impl BackRepositories {
- /// Try to get the repository at path `path`.
- /// If no repository was registered/found at `path`, returns an error.
- pub fn get(&self, path: &Path) -> Result<&BackRepository, error::Error> {
- self.repositories
- .iter()
- .find(|p| p.repo_path == path)
- .ok_or(error::Error::RepoFind {
- repository_path: path.to_owned(),
- })
- }
-}
-
-pub struct BackRepository {
- repo_path: PathBuf,
-}
-
-impl BackRepository {
- pub fn open(&self, scan_path: &Path) -> Result<ThreadSafeRepository, error::Error> {
- let path = {
- let base = scan_path.join(&self.repo_path);
- if base.is_dir() {
- base
- } else {
- PathBuf::from(base.display().to_string() + ".git")
- }
- };
- let repo = ThreadSafeRepository::open(path).map_err(|err| Error::RepoOpen {
- repository_path: self.repo_path.to_owned(),
- error: Box::new(err),
- })?;
- if is_git_bug(&repo.to_thread_local())? {
- Ok(repo)
- } else {
- Err(error::Error::NotGitBug {
- path: self.repo_path.clone(),
- })
- }
- }
- pub fn path(&self) -> &Path {
- &self.repo_path
- }
-}
-
-impl BackConfig {
- pub fn repositories(&self) -> error::Result<BackRepositories> {
- let repositories = fs::read_to_string(&self.project_list)
- .map_err(|err| error::Error::ProjectListRead {
- error: err,
- file: self.project_list.to_owned(),
- })?
- .lines()
- .try_fold(vec![], |mut acc, path| {
- acc.push(BackRepository {
- repo_path: PathBuf::from(path),
- });
-
- Ok::<_, error::Error>(acc)
- })?;
- Ok(BackRepositories { repositories })
- }
-
- 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,
- })?;
-
- serde_json::from_str(&value).map_err(|err| Error::ConfigParse {
- file: path.to_owned(),
- error: err,
- })
- }
-}