diff options
author | metamuffin <metamuffin@disroot.org> | 2023-09-25 20:00:56 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-09-25 20:00:56 +0200 |
commit | 01bd18c75fd3652ce0b9eb76e23e967b0cba064b (patch) | |
tree | 3ed7e4145344681ed26d0a5945517c9de6964d32 /src/projects/mod.rs | |
parent | c68f2769ae13d1e4b250bd670d1d875014f5c05a (diff) | |
download | metamuffin-website-01bd18c75fd3652ce0b9eb76e23e967b0cba064b.tar metamuffin-website-01bd18c75fd3652ce0b9eb76e23e967b0cba064b.tar.bz2 metamuffin-website-01bd18c75fd3652ce0b9eb76e23e967b0cba064b.tar.zst |
new project overview
Diffstat (limited to 'src/projects/mod.rs')
-rw-r--r-- | src/projects/mod.rs | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/projects/mod.rs b/src/projects/mod.rs new file mode 100644 index 0000000..f399984 --- /dev/null +++ b/src/projects/mod.rs @@ -0,0 +1,71 @@ +use self::data::PROJECTS; +use crate::layout::{DynScaffold, Scaffold}; +use markup::Render; +use rocket::get; + +pub mod data; + +#[get("/projects")] +pub fn r_projects() -> DynScaffold<'static> { + Scaffold { + title: "projects".to_string(), + content: markup::new! { + p { "I am starting a lot of projects - this page lists some of them." } + p { + "Starting so many means, that most of then are not maintained or not even properly developed." + "Here is a quick reference to what I define the status of a project to be:" + } + ol { + li { @Status::Planned.render() ": No code has been written yet." } + li { @Status::Developing.render() ": Project is under active development." } + li { @Status::Maintained.render() ": Project is in a working state and receives regular updates." } + li { @Status::Stale.render() ": Project has been discontinued for an unspecified amount of time, but might be resumed if i feel like it." } + li { @Status::Abandoned.render() ": Project has been discontinued and will likely not be continued forever." } + li { @Status::Unknown.render() ": I have not bothered to write down the status" } + } + ul { + @for p in PROJECTS { + li { @p } + } + } + }, + } +} + +#[derive(Debug, Clone, Copy)] +pub enum Status { + Unknown, + Planned, + Developing, + Stale, + Maintained, + Abandoned, +} + +markup::define! { Project( + name: &'static str, + status: Status, + description: &'static str, + link: Option<&'static str>, + repo_link: Option<&'static str> +) { + b { @name } + @status.render() + ": " @description + " (" + @if let Some(link) = link { + a[href=link] "Project page" + ", " + } + @let fallback = format!("https://codeberg.org/metamuffin/{name}"); + a[href=repo_link.unwrap_or(&fallback)] "Source code" + ")" +}} + +impl Status { + pub fn render(self) -> impl Render { + markup::new! { + div[class=format!("status status-{self:?}")] { @format!("{self:?}") } + } + } +} |