aboutsummaryrefslogtreecommitdiffstats
path: root/pkgs/by-name/ba/back
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-24 10:52:34 +0100
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-12-24 10:52:34 +0100
commit4802f7a68d515d78ae25988410d62c5dc1f8c8f4 (patch)
tree98de946773fb0073b3afc1144c8d64fbedcfecc7 /pkgs/by-name/ba/back
parentfeat(hosts/server1): Configure back for the `nixos-server` repo (diff)
downloadnixos-server-4802f7a68d515d78ae25988410d62c5dc1f8c8f4.zip
feat(pkgs/back): Add a link to the source code
This is required by the AGPL license and should probably also be done, because we do not have a reason to hide or obfuscate the code.
Diffstat (limited to 'pkgs/by-name/ba/back')
-rw-r--r--pkgs/by-name/ba/back/Cargo.lock1
-rw-r--r--pkgs/by-name/ba/back/Cargo.toml1
-rw-r--r--pkgs/by-name/ba/back/src/issues/issue/mod.rs4
-rw-r--r--pkgs/by-name/ba/back/src/issues/mod.rs11
-rw-r--r--pkgs/by-name/ba/back/src/main.rs21
5 files changed, 35 insertions, 3 deletions
diff --git a/pkgs/by-name/ba/back/Cargo.lock b/pkgs/by-name/ba/back/Cargo.lock
index 4803593..ed7f120 100644
--- a/pkgs/by-name/ba/back/Cargo.lock
+++ b/pkgs/by-name/ba/back/Cargo.lock
@@ -146,6 +146,7 @@ dependencies = [
"rocket",
"serde",
"serde_json",
+ "url",
]
[[package]]
diff --git a/pkgs/by-name/ba/back/Cargo.toml b/pkgs/by-name/ba/back/Cargo.toml
index 3e81ec8..f697511 100644
--- a/pkgs/by-name/ba/back/Cargo.toml
+++ b/pkgs/by-name/ba/back/Cargo.toml
@@ -28,6 +28,7 @@ markdown = "1.0.0-alpha.21"
rocket = "0.5.1"
serde = "1.0.216"
serde_json = "1.0.134"
+url = "2.5.4"
[profile.release]
lto = true
diff --git a/pkgs/by-name/ba/back/src/issues/issue/mod.rs b/pkgs/by-name/ba/back/src/issues/issue/mod.rs
index ada7593..b78f473 100644
--- a/pkgs/by-name/ba/back/src/issues/issue/mod.rs
+++ b/pkgs/by-name/ba/back/src/issues/issue/mod.rs
@@ -16,6 +16,8 @@ use gix::{bstr::ByteSlice, Commit, Id, ObjectId, Repository};
use raw::{Operation, RawIssue};
use rocket::response::content::RawHtml;
+use crate::SOURCE_CODE_REPOSITORY;
+
use super::format::{BackString, Markdown};
mod raw;
@@ -315,6 +317,7 @@ impl<'a> Issue<'a> {
<footer>
<nav>
<a href="/issues/open">Open Issues</a>
+ <a href="{}">Source code</a>
<a href="/issues/closed">Closed Issues</a>
</nav>
</footer>
@@ -322,6 +325,7 @@ impl<'a> Issue<'a> {
</body>
</html>
"#,
+ SOURCE_CODE_REPOSITORY.get().expect("This should be set")
))
}
}
diff --git a/pkgs/by-name/ba/back/src/issues/mod.rs b/pkgs/by-name/ba/back/src/issues/mod.rs
index df3e57e..744d5ba 100644
--- a/pkgs/by-name/ba/back/src/issues/mod.rs
+++ b/pkgs/by-name/ba/back/src/issues/mod.rs
@@ -11,7 +11,11 @@
use std::path::Path;
-use crate::issues::issue::{Issue, Status};
+use crate::{
+ issues::issue::{Issue, Status},
+ SOURCE_CODE_REPOSITORY,
+};
+use format::BackString;
use gix::{refs::Target, Repository};
use issue_show::BackPrefix;
use rocket::{
@@ -74,6 +78,7 @@ pub fn issue_list_boilerplate(wanted_status: Status, counter_status: Status) ->
<main>
<div class="issue-links">
<a href="/issues/{counter_status_lower}/">View {counter_status} issues</a>
+ <a href="{}">Source code</a>
<!--
<form class="issue-search" method="get">
<input name="search" title="Issue search query" type="search">
@@ -82,14 +87,14 @@ pub fn issue_list_boilerplate(wanted_status: Status, counter_status: Status) ->
-->
</div>
<ol class="issue-list">
- {}
+ {issue_list}
</ol>
</main>
</div>
</body>
</html>
"#,
- issue_list
+ SOURCE_CODE_REPOSITORY.get().expect("This should be set")
))
}
diff --git a/pkgs/by-name/ba/back/src/main.rs b/pkgs/by-name/ba/back/src/main.rs
index d0b0f81..86fe196 100644
--- a/pkgs/by-name/ba/back/src/main.rs
+++ b/pkgs/by-name/ba/back/src/main.rs
@@ -13,12 +13,14 @@ use std::{env::args, path::PathBuf, process, sync::OnceLock};
use gix::ThreadSafeRepository;
use rocket::{launch, routes};
+use url::Url;
use crate::issues::{closed, open, show_issue, styles};
mod issues;
static REPOSITORY: OnceLock<ThreadSafeRepository> = OnceLock::new();
+static SOURCE_CODE_REPOSITORY: OnceLock<Url> = OnceLock::new();
#[launch]
fn rocket() -> _ {
@@ -31,6 +33,25 @@ fn rocket() -> _ {
process::exit(1);
}
};
+ let source_code_url = {
+ match std::env::var("BACK_SOURCE_CODE_REPOSITORY_URL") {
+ Ok(value) => match Url::parse(&value) {
+ Ok(url) => url,
+ Err(err) => {
+ eprintln!("Can't parse `BACK_SOURCE_CODE_REPOSITORY_URL` value as url: {err}");
+ process::exit(1);
+ }
+ },
+ Err(err) => {
+ eprintln!("back needs you to specify a source code repositiory as `BACK_SOURCE_CODE_REPOSITORY_URL`: {err}");
+ process::exit(1);
+ }
+ }
+ };
+
+ SOURCE_CODE_REPOSITORY
+ .set(source_code_url)
+ .expect("This should be unset by this stage");
REPOSITORY
.set(