Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 4659a54b185f56e5742749099c8751d74e1a6df8
parent 30fdeae2d87bf6173f1aafe98c31b61be1b6c5bc
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Tue,  6 Oct 2026 08:56:39 -0400

doctor: YTDLP_AUTO_UPDATE is read with the entrypoint's exact-match rule (1, true, yes, on as written); RUNNING_IN_DOCKER says so

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
MRUNNING_IN_DOCKER.md | 4+++-
Mcommon/bin/doctor.test.ts | 5+++++
Mcommon/bin/doctor.ts | 4+++-
3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/RUNNING_IN_DOCKER.md b/RUNNING_IN_DOCKER.md @@ -308,7 +308,9 @@ For the Vulkan image it names a parakeet GGUF instead — see An image pins yt-dlp at build time, and a stale yt-dlp is the most common reason downloads suddenly start failing. Set `YTDLP_AUTO_UPDATE=1` in `.env` and each -boot self-updates it. Or, once: +boot self-updates it. Exactly `1`, `true`, `yes` or `on` turns it on, as written +— `TRUE` or `Yes` does not (the entrypoint and `archilyzer doctor` read it the +same way). Or, once: ```sh docker compose exec editor yt-dlp -U diff --git a/common/bin/doctor.test.ts b/common/bin/doctor.test.ts @@ -671,6 +671,11 @@ test("downloader: a host's yt-dlp is a note; the image's is ok; an override says assert.equal(find(r, "downloader", "yt-dlp")?.status, "warn"); assert.match(find(r, "downloader", "yt-dlp")!.detail, /YTDLP_AUTO_UPDATE is set, and the entrypoint never self-updates an override/); assert.equal(r.ok, true, "a warning, never a failure"); + // The entrypoint's exact-match rule: `TRUE` (or ` 1`) is off there, so here. + for (const off of ["TRUE", " 1", "0", ""]) { + r = await run(c, { ARCHILYZER_IMAGE_YTDLP: image, YTDLP_AUTO_UPDATE: off }); + assert.equal(find(r, "downloader", "yt-dlp")?.status, "ok", JSON.stringify(off)); + } // An override that does not run. (c.paths as { ytdlpBin: string }).ytdlpBin = broken; r = await run(c, { ARCHILYZER_IMAGE_YTDLP: image }); diff --git a/common/bin/doctor.ts b/common/bin/doctor.ts @@ -391,7 +391,9 @@ export async function collectDoctorReport(deps: DoctorDeps): Promise<DoctorRepor const imageYtdlp = env.ARCHILYZER_IMAGE_YTDLP?.trim() || null; const resolved = onPath(paths.ytdlpBin, env.PATH) ?? paths.ytdlpBin; const origin = imageYtdlp === null ? "host" : sameFile(resolved, imageYtdlp) ? "image" : "override"; - const autoUpdate = /^(1|true|yes|on)$/i.test(env.YTDLP_AUTO_UPDATE?.trim() ?? ""); + // The entrypoint's rule exactly (a shell `case`: 1, true, yes or on, as + // written — `TRUE` is off there, so it is off here). + const autoUpdate = ["1", "true", "yes", "on"].includes(env.YTDLP_AUTO_UPDATE ?? ""); // The shared probe counts any output as presence (an odd version flag is // still a binary); "does it RUN" is asked here by exit status — the // from-source wrapper with no checkout mounted prints a sentence and exits