startgit

Static page generator for git repositories
git clone git://git.dimitrijedobrota.com/startgit.git
Log | Files | Refs | README | LICENSE | HACKING | CONTRIBUTING | CODE_OF_CONDUCT | BUILDING

commit b39d2a61821c9e1ed1c43098e35bc2a2a0535925
parent 3f7199f62c7b1543834c6ceec28dfd02d63338d1
author Dimitrije Dobrota <mail@dimitrijedobrota.com>
date Thu, 9 Jan 2025 19:01:13 +0100

Small improvements and nitpicks

Diffstat:
M CMakeLists.txt | ++ --
M source/main.cpp | ++++++++++++++++ ------------------
M source/repository.hpp | +

3 files changed, 19 insertions(+), 20 deletions(-)


diff --git a/ CMakeLists.txt b/ CMakeLists.txt

@@ -4,7 +4,7 @@ include(cmake/prelude.cmake) project( startgit
VERSION 0.1.7
VERSION 0.1.8
DESCRIPTION "Static page generator for git repositories" HOMEPAGE_URL "https://git.dimitrijedobrota.com/stargit.git" LANGUAGES CXX

@@ -16,7 +16,7 @@ include(cmake/variables.cmake) # ---- Declare dependencies ---- find_package(git2wrap CONFIG REQUIRED)
find_package(hemplate 0.1 CONFIG REQUIRED)
find_package(hemplate 0.2 CONFIG REQUIRED)
find_package(poafloc 1 CONFIG REQUIRED) # ---- Declare library ----

diff --git a/ source/main.cpp b/ source/main.cpp

@@ -137,19 +137,21 @@ void write_title(std::ostream& ost, .add(html::h1(repo.get_name())) .add(html::span(repo.get_description()))); ost << html::tr().add(
html::td().add(html::span("git clone ")).add(html::a(repo.get_name())));
html::td()
.add(html::text("git clone "))
.add(html::a(repo.get_url()).set("href", repo.get_url())));
ost << html::tr().add( html::td() .add(html::a("Log").set("href", branch_name + "_log.html"))
.add(html::span(" | "))
.add(html::text(" | "))
.add(html::a("Files").set("href", branch_name + "_files.html"))
.add(html::span(" | "))
.add(html::text(" | "))
.add(html::a("Refs").set("href", branch_name + "_refs.html"))
.add(html::span(" | "))
.add(html::text(" | "))
.add(html::a("README").set("href", "./"))
.add(html::span(" | "))
.add(html::text(" | "))
.add(html::a("LICENCE").set("href", "./"))
.add(html::span(" | "))
.add(html::text(" | "))
.add(dropdown)); ost << html::table(); }

@@ -223,14 +225,10 @@ void write_files_table(std::ostream& ost, const git2wrap::tree& tree) std::function<void( std::ostream&, const git2wrap::tree&, const std::string& path)>
traverse;
traverse = [&](std::ostream& ost,
const git2wrap::tree& tree,
const std::string& path)
traverse = [&traverse](auto& l_ost, const auto& l_tree, const auto& path)
{
for (size_t i = 0; i < tree.get_entrycount(); i++) {
const auto entry = tree.get_entry(i);
for (size_t i = 0; i < l_tree.get_entrycount(); i++) {
const auto entry = l_tree.get_entry(i);
const auto full_path = (!path.empty() ? path + "/" : "") + entry.get_name();

@@ -238,16 +236,16 @@ void write_files_table(std::ostream& ost, const git2wrap::tree& tree) case GIT_OBJ_BLOB: break; case GIT_OBJ_TREE:
traverse(ost, entry.to_tree(), full_path);
traverse(l_ost, entry.to_tree(), full_path);
continue; default: continue; }
ost << html::tr()
.add(html::td(filemode((entry.get_filemode()))))
.add(html::td().add(html::a(full_path).set("href", "./")))
.add(html::td("0"));
l_ost << html::tr()
.add(html::td(filemode((entry.get_filemode()))))
.add(html::td().add(html::a(full_path).set("href", "./")))
.add(html::td("0"));
} }; traverse(ost, tree, "");

diff --git a/ source/repository.hpp b/ source/repository.hpp

@@ -18,6 +18,7 @@ public: const git2wrap::repository& get() const { return m_repo; }
const std::string& get_url() const { return m_url; }
const std::string& get_name() const { return m_name; } const std::string& get_owner() const { return m_owner; } const std::string& get_description() const { return m_description; }