diff options
author | Kaiden Fey <kookie@spacekookie.de> | 2020-10-25 02:40:33 +0100 |
---|---|---|
committer | Kaiden Fey <kookie@spacekookie.de> | 2020-10-25 02:40:33 +0100 |
commit | 392444d21101ce7b637f2e5a385490605f93ccf1 (patch) | |
tree | 75247f7a3b49a17c70a31106b04e09f72848f98a /src | |
parent | a0dca8186bdef76e09e9c388d7f85839e85ce8db (diff) |
Big project update
Diffstat (limited to 'src')
-rw-r--r-- | src/main.rs | 8 | ||||
-rw-r--r-- | src/pages/mod.rs | 32 | ||||
-rw-r--r-- | src/pages/repo/details.rs | 11 | ||||
-rw-r--r-- | src/project/mod.rs | 8 |
4 files changed, 48 insertions, 11 deletions
diff --git a/src/main.rs b/src/main.rs index a0d6dce..92e1bc7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,6 +3,8 @@ mod pages; mod repo; mod templ_data; +mod project; + use actix_files as fs; use actix_web::{web, App, HttpRequest, HttpResponse, HttpServer}; use std::io; @@ -20,11 +22,7 @@ async fn main() -> io::Result<()> { // This is a bit of a hack so that people don't get the // 404 on the root page. Especially as long as octopus // doesn't have the account overview yet! - .service(web::resource("/").route(web::get().to(|_: HttpRequest| { - HttpResponse::PermanentRedirect() - .header("Location", "octopus") - .finish() - }))) + .service(web::resource("/").route(web::get().to(pages::index))) .service(web::resource("/{repo}").route(web::get().to(pages::repo::about))) .service(web::resource("/{repo}/details").route(web::get().to(pages::repo::details))) .default_service(web::resource("").route(web::get().to(pages::p404))) diff --git a/src/pages/mod.rs b/src/pages/mod.rs index f838eee..5689af7 100644 --- a/src/pages/mod.rs +++ b/src/pages/mod.rs @@ -7,3 +7,35 @@ pub mod repo; mod p404; pub use p404::render as p404; + +use actix_web::{web, HttpRequest, HttpResponse, Result}; +use askama::Template; + +pub(crate) struct BaseData { + sitename: String, + has_wiki: bool, +} + +#[derive(Template)] +#[template(path = "index.html", escape = "none")] +pub(crate) struct Index { + base: BaseData, + readme: String, +} + +pub async fn index(req: HttpRequest) -> Result<HttpResponse> { + + let readme: String = markdown::to_html(include_str!("../../fake-readme.md").into()); + + let index = Index { + base: BaseData { + sitename: "dev.spacekookie.de".into(), + has_wiki: true, + }, + readme + + } + .render() + .unwrap(); + Ok(HttpResponse::Ok().content_type("text/html").body(index)) +} diff --git a/src/pages/repo/details.rs b/src/pages/repo/details.rs index d5822d6..7298e15 100644 --- a/src/pages/repo/details.rs +++ b/src/pages/repo/details.rs @@ -9,16 +9,15 @@ pub async fn render(req: HttpRequest, path: web::Path<String>) -> Result<HttpRes message: "Updating just like... a bunch of shit".into(), author: "Katharina Fey".into(), date: "Today".into(), - diff: (125, 55) + diff: (125, 55), }; - + let repo = pages::Details { - branches: vec![ BranchData { + branches: vec![BranchData { name: "develop".into(), last_commit: last_commit.clone(), - } - ], - commits: vec![ last_commit ], + }], + commits: vec![last_commit], repo: RepoData { owner: "spacekookie".into(), name: "octopus".into(), diff --git a/src/project/mod.rs b/src/project/mod.rs new file mode 100644 index 0000000..cf81fd4 --- /dev/null +++ b/src/project/mod.rs @@ -0,0 +1,8 @@ +//! Octopus project + +use std::{fs::File, path::PathBuf}; + +/// Check if a directory is a valid project +pub(crate) fn is_valid(p: PathBuf) -> bool { + p.join(".octopus").exists() +} |