diff options
| author | Joe Mou <dev@mou.fo> | 2026-08-11 08:37:25 -0400 |
|---|---|---|
| committer | Joe Mou <dev@mou.fo> | 2026-08-11 08:38:30 -0400 |
| commit | d76a46b37b12823b5b3976d129c2d4b672a99693 (patch) | |
| tree | 5640077c30a71ac8eccdc66925a82e112aa45963 /src | |
| parent | de557ad66466261ae578ea9342f32d78a139fbc9 (diff) | |
Show the build's commit in the page footer
Workers can't shell out at request time, so the commit has to be baked
in before wrangler bundles the sources. compile-views.ts grows a second
job and becomes scripts/build.ts: alongside the precompiled views it
writes src/commit.generated.ts with `git describe --tags --always
--dirty`, which yields a bare short hash until the repo is tagged and
marks builds made from an unclean working copy.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/app.ts | 3 | ||||
| -rw-r--r-- | src/worker.ts | 2 |
2 files changed, 3 insertions, 2 deletions
@@ -1,6 +1,7 @@ import type { Eta } from "eta"; import { type Context, Hono } from "hono"; import type { StatusCode } from "hono/utils/http-status"; +import { commit } from "./commit.generated.ts"; import { getGitHubBlob, getGitHubCommits, @@ -47,7 +48,7 @@ export function createApp(eta: Eta) { // Our URLs mirror GitHub's, so the page we scraped is the same path there. const { pathname, search } = new URL(c.req.url); const githubUrl = `https://github.com${pathname}${search}`; - return c.html(eta.render(template, { ...data, githubUrl })); + return c.html(eta.render(template, { ...data, githubUrl, commit })); } // For fragments fetched asynchronously by client-side JS (see public/static/refs.js): diff --git a/src/worker.ts b/src/worker.ts index 024b01a..7bf9100 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -5,7 +5,7 @@ import { createApp } from "./app.ts"; import { views } from "./views.generated.ts"; // Workers disallow runtime code generation, so templates are precompiled by -// scripts/compile-views.ts and preloaded into Eta's cache here. With +// scripts/build.ts and preloaded into Eta's cache here. With // cache: true, Eta serves them from the cache and never compiles. const eta = new Eta({ cache: true }); |
