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 5763fd26d4dc88a59299f79871da4be7f637a4a4
parent 4e37c9157d11068141cfc6fe976e70998de535ae
author Dimitrije Dobrota <mail@dimitrijedobrota.com>
date Thu, 23 Jan 2025 21:45:36 +0100

Skip everthing if no new commit * Small style nitpicks

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

2 files changed, 21 insertions(+), 11 deletions(-)


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

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

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

@@ -90,7 +90,7 @@ void write_header(std::ostream& ost, bool has_feed = true) { write_header(ost,
std::format("{}({}) - {}",
std::format("{} ({}) - {}",
repo.get_name(), branch.get_name(), repo.get_description()),

@@ -358,9 +358,11 @@ void write_file_changes(std::ostream& ost, const startgit::diff& diff) html::a(delta->new_file.path).set("href", link))) .add(html::td("|")) .add(html::td()
.add(html::span(" " + std::string(add, '+'))
.add(html::span()
.add(html::text(std::string(add, '+')))
.set("class", "add"))
.add(html::span(" " + std::string(del, '-'))
.add(html::span()
.add(html::text(std::string(del, '-')))
.set("class", "del"))); }

@@ -585,14 +587,16 @@ void write_refs(const std::filesystem::path& base, write_footer(ofs); }
void write_commits(const std::filesystem::path& base,
bool write_commits(const std::filesystem::path& base,
const startgit::repository& repo, const startgit::branch& branch) {
bool changed = false;
for (const auto& commit : branch.get_commits()) { const std::string file = base / (commit.get_id() + ".html"); if (!startgit::args.force && std::filesystem::exists(file)) {
continue;
break;
} std::ofstream ofs(file);

@@ -600,7 +604,10 @@ void write_commits(const std::filesystem::path& base, write_title(ofs, repo, branch, "../"); write_commit_diff(ofs, commit); write_footer(ofs);
changed = true;
}
return changed;
} void write_files(const std::filesystem::path& base,

@@ -805,16 +812,19 @@ int main(int argc, char* argv[]) const std::filesystem::path base_branch = base / branch.get_name(); std::filesystem::create_directory(base_branch);
const std::filesystem::path commit = base_branch / "commit";
std::filesystem::create_directory(commit);
const bool changed = write_commits(commit, repo, branch);
if (!startgit::args.force && !changed) {
continue;
};
write_log(base_branch, repo, branch); write_file(base_branch, repo, branch); write_refs(base_branch, repo, branch); write_readme_licence(base_branch, repo, branch);
const std::filesystem::path commit = base_branch / "commit";
std::filesystem::create_directory(commit);
write_commits(commit, repo, branch);
const std::filesystem::path file = base_branch / "file"; std::filesystem::create_directory(file);