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 |

commitb39d2a61821c9e1ed1c43098e35bc2a2a0535925
parent3f7199f62c7b1543834c6ceec28dfd02d63338d1
authorDimitrije Dobrota <mail@dimitrijedobrota.com>
dateThu, 9 Jan 2025 19:01:13 +0100

Small improvements and nitpicks

Diffstat:
MCMakeLists.txt|++--
Msource/main.cpp|++++++++++++++++------------------
Msource/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; }