diff options
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/by-name/ba/back/Cargo.lock | 1 | ||||
-rw-r--r-- | pkgs/by-name/ba/back/Cargo.toml | 1 | ||||
-rw-r--r-- | pkgs/by-name/ba/back/src/issues/issue/mod.rs | 4 | ||||
-rw-r--r-- | pkgs/by-name/ba/back/src/issues/mod.rs | 11 | ||||
-rw-r--r-- | pkgs/by-name/ba/back/src/main.rs | 21 |
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( |