holger.rs's front page — the whole public door, as one pure function.
holger-server is a hand-rolled hyper dispatcher with no router, no
template engine and no static-asset tree; until now GET / answered 404 Unknown repository. So this crate is not a framework and does not try to
be one: it is [route], a function from a method and a path to a
[Reply], and mounting it in server/lib/src/exposed/http.rs is four
lines next to the /-/search arm.
That shape is the point. Everything the page is — the bytes, the JSON, the cache headers, the refusals — is decided here, where it can be tested in a crate that builds in seconds, rather than inside a request handler that needs the whole server to compile.
The two doors
| path | what it answers |
|---|---|
GET / |
the page (one self-contained HTML file) |
GET /holger.webp |
the picture on its left half |
GET /-/front |
who this server is, and whether it has a browser login |
GET /-/releases |
the catalogue: the public repositories, and the latest version of each package |
★ The one rule about version numbers
This crate never decides which version is newest. [latest_by] groups
and folds, but the comparison is a function the caller passes in, and the
caller is server/lib, which passes retention::cmp_version — the
comparator holger already uses to decide which artifact a retention sweep
must not delete.
That is not indirection for its own sake. A front page that ranked versions
with its own comparator would be a SECOND source of truth for "the latest
release", and the first time somebody published 1.10.0 beside 1.9.0 the
page and holger retention would name different artifacts as the newest —
with no way to tell which of them was wrong.