summary refs log tree commit diff stats
path: root/pkgs/by-name/ba/back/src
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/src
parentfeat(hosts/server1): Configure back for the `nixos-server` repo (diff)
downloadnixos-server-4802f7a68d515d78ae25988410d62c5dc1f8c8f4.tar.gz
nixos-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 '')
-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
3 files changed, 33 insertions, 3 deletions
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(