Paketbau: whisper-Archiv auch in den b-Veroeffentlichungen suchen, Manifest mitnehmen
Paket bauen und veroeffentlichen / paket (push) Successful in 43s
Paket bauen und veroeffentlichen / paket (push) Successful in 43s
whisper.cpp v1.9.5 ist als latest markiert, hat aber keine Archive; die Windows-Programme liegen in b5454. Daran ist der erste Lauf der Pipeline gescheitert. Dazu fehlte manifest.webmanifest im Paket. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
8be195d938
commit
5eaae9129f
1 file changed
+23
-5
@@ -72,15 +72,31 @@ const COMPONENTS: Component[] = [
|
||||
},
|
||||
];
|
||||
|
||||
/**
|
||||
* Das neueste Archiv, das zum Muster passt. Bewusst nicht nur `releases/latest`:
|
||||
* whisper.cpp legt seit 2026-09 die Programme in eine eigene Veroeffentlichung
|
||||
* `b<nummer>` am selben Tag wie die Version, und die Version selbst (z. B.
|
||||
* v1.9.5, "latest") hat gar keine Archive. Die `b`-Staende sind mal als
|
||||
* Vorabversion markiert, mal nicht - wer Vorabversionen ueberspringt, landet
|
||||
* bei einem Stand von vor zwei Versionen. Der erste Lauf der Pipeline ist
|
||||
* genau daran gescheitert.
|
||||
*/
|
||||
async function githubAsset(repoName: string, pattern: RegExp): Promise<string> {
|
||||
const res = await fetch(`https://api.github.com/repos/${repoName}/releases/latest`, {
|
||||
const res = await fetch(`https://api.github.com/repos/${repoName}/releases?per_page=30`, {
|
||||
headers: { 'user-agent': 'abdulive-build' },
|
||||
});
|
||||
if (!res.ok) throw new Error(`GitHub-API ${res.status} fuer ${repoName}`);
|
||||
const rel = await res.json() as { assets: Array<{ name: string; browser_download_url: string }> };
|
||||
const rels = await res.json() as Array<{
|
||||
tag_name: string; draft: boolean;
|
||||
assets: Array<{ name: string; browser_download_url: string }>;
|
||||
}>;
|
||||
// Die API liefert die neuesten zuerst.
|
||||
for (const rel of rels) {
|
||||
if (rel.draft) continue;
|
||||
const asset = rel.assets.find((a) => pattern.test(a.name));
|
||||
if (!asset) throw new Error(`Kein passendes Archiv in ${repoName} (${pattern})`);
|
||||
return asset.browser_download_url;
|
||||
if (asset) return asset.browser_download_url;
|
||||
}
|
||||
throw new Error(`Kein passendes Archiv in ${repoName} (${pattern})`);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------- Werkzeug
|
||||
@@ -159,7 +175,9 @@ async function main(): Promise<void> {
|
||||
// html/css/js gehoeren seit den Overlay-Seiten dazu: die liegen in
|
||||
// apps/overlay-web/public und werden zur Laufzeit von der Platte
|
||||
// gelesen. Fehlen sie im Paket, liefert der Server 404 statt Overlay.
|
||||
if (!/\.(ts|sql|json|html|css|js|svg|png|woff2)$/.test(rel)) continue;
|
||||
// Dieselben Endungen, die der Overlay-Server ausliefert (TYPES in
|
||||
// apps/overlay-server/src/server.ts) - sonst fehlt z. B. das Manifest des Pults.
|
||||
if (!/\.(ts|sql|json|html|css|js|svg|png|jpg|woff2|webmanifest)$/.test(rel)) continue;
|
||||
files.push({ name: `app/${dir}/${rel}`, data: await fs.readFile(path.join(repo, dir, rel)) });
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user