$self, "{{BASE_URL}}" => handbookBaseUrl(), "{{PAGE_COUNT}}" => (string) count(handbookPages()), "{{TOTAL_SIZE}}" => handbookFormatBytes($total), ]); // ---- Recipes: the shortlist per job ------------------------------------ $out[] = "## Wofür welche Seiten\n"; foreach (handbookRecipes() as $recipe) { $lines = ["### " . $recipe["title"], "", $recipe["note"], ""]; foreach ($recipe["pages"] as [$kind, $key]) { $page = handbookPage($kind, $key); if ($page === null) { continue; } $lines[] = "- " . handbookRawUrl($page) . " – " . $page["title"]; } $out[] = implode("\n", $lines) . "\n"; } // ---- Every page -------------------------------------------------------- $out[] = handbookRenderList( "## Dokumentation", "Kapitel in empfohlener Lesereihenfolge.", $docs, ); $out[] = "## Schnittstelle\n\n" . "- " . $self . "/openapi.php – OpenAPI 3.1 der vier Endpunkte des Manage-Servers, " . "als JSON. Für einen eigenen Client zusammen mit dem Kapitel *Protokoll v1* lesen.\n" . "- " . $self . "/api.php – dieselbe Beschreibung in Swagger UI. Eine Seite für " . "Menschen, für ein Programm ohne Nutzen.\n"; $out[] = handbookRenderList( "## Quellcode", "Das vollständige Client-Paket, jede Datei einzeln abrufbar. Für eine Einbindung " . "wird der Ordner `manage-client/` gebraucht; `examples/`, `docs/` und `scripts/` " . "gehören nicht dazu.", $code, ); $vendored = handbookVendoredFiles(); if ($vendored !== []) { $lines = ["## Nicht abgedruckt", "", "Fremdbibliotheken, die zum Paket gehören, aber " . "hier nicht als Seite stehen:", ""]; foreach ($vendored as $relative => $bytes) { $lines[] = "- `client-package/" . $relative . "` (" . handbookFormatBytes($bytes) . ")"; } $out[] = implode("\n", $lines) . "\n"; } return implode("\n", $out); } /** @param array $pages */ function handbookRenderList(string $heading, string $intro, array $pages): string { $lines = [$heading, "", $intro, ""]; foreach ($pages as $page) { $lines[] = "- " . handbookRawUrl($page) . " (" . handbookFormatBytes($page["bytes"]) . ")" . " – **" . $page["title"] . "**" . ($page["summary"] !== "" ? ". " . $page["summary"] : ""); } return implode("\n", $lines) . "\n"; }