aboutsummaryrefslogtreecommitdiff
path: root/website/src/pages/index.astro
blob: 26a048d4919dc915f9ae3ac156c2f63544d7f8bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
---
import { readFile } from 'node:fs/promises';
import { agentCount, fmt, releaseVersion, siteStats } from '../site-data';

/* The numbers in the nav and hero strip are baked here at build time from the
   snapshots and latest.json, so the page ships with real values, renders
   correctly without JS, and can never be more than one deploy stale. A small
   script on the page refreshes the counts live afterwards. */
const homepage = await readFile(new URL('../../index.html', import.meta.url), 'utf8');

const { starCount, installCount, pluginCount } = await siteStats();
const version = await releaseVersion();
const facts = version ? `v${version} · Apache 2.0` : 'Apache 2.0';

/* the line drops out entirely rather than showing a placeholder if the
   manifests can't be read — a missing sentence beats a wrong number */
const agents = await agentCount();
const agentsNote = agents ? `${agents} agents detected out of the box` : '';
/* the strip carried a hardcoded 19; same source as row 04 now */
const agentsCount = agents ? String(agents) : '—';

/* replaceAll, not replace: the star count appears in the nav as well as the
   strip, and replace() would fill only the first of them. */
const page = homepage
  .replaceAll('<!--N_STARS-->', fmt(starCount))
  .replaceAll('<!--N_INSTALLS-->', fmt(installCount))
  .replaceAll('<!--N_PLUGINS-->', fmt(pluginCount))
  .replaceAll('<!--FACTS-->', facts)
  .replaceAll('<!--AGENTS_NOTE-->', agentsNote)
  .replaceAll('<!--N_AGENTS-->', agentsCount);
---

<Fragment set:html={page} />