82 lines
2.0 KiB
Typst
82 lines
2.0 KiB
Typst
#let toVersions(commits: (("2025-11-19", "u80864958", "msg"),), persons: dictionary, final: false) = {
|
|
let versions = ()
|
|
for commit in commits.rev() {
|
|
let v = version(0, 0, 0)
|
|
let message = str(commit.at(2))
|
|
if versions.len() > 0 {
|
|
// versions.at(-1).v
|
|
v = versions.at(-1).v
|
|
if message.starts-with("fix") or message.starts-with("chore") {
|
|
v = version(v.at(0), v.at(1), v.at(2) + 1)
|
|
} else if message.starts-with("feat") {
|
|
v = version(v.at(0), v.at(1) + 1, 0)
|
|
}
|
|
}
|
|
if message.contains(":") {
|
|
message = commit.at(2).split(":").slice(1).flatten().at(0).trim()
|
|
}
|
|
versions.push(
|
|
(
|
|
date: toml(bytes("date = " + commit.at(0))).date,
|
|
v: v,
|
|
author: persons.at(default: persons.at(persons.keys().at(0)), commit.at(1)),
|
|
topic: message,
|
|
),
|
|
)
|
|
}
|
|
if final {
|
|
versions.push(
|
|
(
|
|
date: datetime.today(),
|
|
v: version(1, 0, 0),
|
|
author: persons.at(persons.keys().at(0)),
|
|
topic: "Finalisierung",
|
|
),
|
|
)
|
|
}
|
|
return versions
|
|
}
|
|
|
|
#let parseCurrentVersion(
|
|
commits: (("2025-11-19", "u80864958", "init"),),
|
|
persons: (
|
|
"u80864958": "Niklas Breitenstein",
|
|
"u80864987": "Johar Naamneh",
|
|
),
|
|
final: false,
|
|
) = {
|
|
return toVersions(commits: commits, persons: persons, final: final).at(-1).v
|
|
}
|
|
|
|
|
|
#let versionhistoryTable(
|
|
commits: (("2025-11-19", "u80864958", "init"),),
|
|
persons: (
|
|
"u80864958": "Niklas Breitenstein",
|
|
"u80864987": "Johar Naamneh",
|
|
),
|
|
final: false,
|
|
) = {
|
|
let versions = toVersions(commits: commits, persons: persons, final: final)
|
|
set heading(numbering: none)
|
|
[= Änderungsverzeichnis]
|
|
set par(justify: false)
|
|
|
|
figure(
|
|
table(
|
|
columns: (6em, 6em, 2fr, 2.7fr),
|
|
table.header([Version], [Datum], [Name], [Themen]),
|
|
|
|
..versions
|
|
.map(v => (
|
|
[v#v.v],
|
|
v.date.display("[day].[month].[year]"),
|
|
v.author,
|
|
v.topic,
|
|
))
|
|
.flatten(),
|
|
),
|
|
caption: [Änderungsverzeichnis],
|
|
)
|
|
}
|