added commit information to repository page
This commit is contained in:
@@ -1,62 +0,0 @@
|
||||
use std::error::Error;
|
||||
|
||||
use gix::{ Repository, traverse::tree::Recorder, prelude::* };
|
||||
use serde::Serialize;
|
||||
use tera::Context;
|
||||
|
||||
#[derive(Serialize)]
|
||||
struct Entry {
|
||||
mode: String,
|
||||
hash: String,
|
||||
path: String,
|
||||
}
|
||||
|
||||
pub fn repo_to_context(r: Repository) -> Result<Context, Box<dyn Error>> {
|
||||
let mut entries = Vec::new();
|
||||
|
||||
let branches = r.clone().branch_names()
|
||||
.iter()
|
||||
.map(|x| x.to_owned().to_owned())
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let mut rec = Recorder::default();
|
||||
|
||||
let tree = r.rev_parse_single("@")?.object()?.peel_to_tree()?;
|
||||
|
||||
/* replace with configurable branch name when we have a database */
|
||||
let current_branch = r.head()?.referent_name().unwrap().to_string();
|
||||
|
||||
tree.traverse().breadthfirst(&mut rec)?;
|
||||
|
||||
for e in rec.records.iter() {
|
||||
entries.push(Entry {
|
||||
mode: e.mode.value().to_string(),
|
||||
hash: e.oid.to_string(),
|
||||
path: e.filepath.to_string(),
|
||||
});
|
||||
}
|
||||
|
||||
let dir = r.git_dir();
|
||||
let name = dir.file_name().unwrap().to_str().unwrap();
|
||||
let directory = dir.as_os_str().to_str().unwrap();
|
||||
|
||||
let mut ctx = Context::new();
|
||||
|
||||
/* stubs til we have a real database */
|
||||
ctx.insert("user", "anon");
|
||||
ctx.insert("site", "TiB.");
|
||||
ctx.insert("notif_count", "");
|
||||
ctx.insert("ticket_count", "(47)");
|
||||
|
||||
ctx.insert("readme_content", "test readme");
|
||||
|
||||
ctx.insert("branches", &branches);
|
||||
ctx.insert("entries", &entries);
|
||||
ctx.insert("owner", "anon");
|
||||
ctx.insert("branch", ¤t_branch);
|
||||
ctx.insert("repo", name);
|
||||
ctx.insert("directory", directory);
|
||||
ctx.insert("entries", &entries);
|
||||
|
||||
Ok(ctx)
|
||||
}
|
||||
Reference in New Issue
Block a user