From fcff0d1b55dc5c6ac4843382ef154582f7b8916a Mon Sep 17 00:00:00 2001 From: Alex Bikeyev Date: Sun, 15 Nov 2026 17:23:13 +1300 Subject: [PATCH] ci: accept vsce-normalised filenames in VSIX inspection vsce emits readme.md/LICENSE.txt/changelog.md regardless of the source file case, so the exact-name check would reject every package. Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- .github/workflows/publish-vscode.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/.github/workflows/publish-vscode.yml b/.github/workflows/publish-vscode.yml index 00862bc..c860ae3 100644 --- a/.github/workflows/publish-vscode.yml +++ b/.github/workflows/publish-vscode.yml @@ -74,16 +74,20 @@ jobs: python3 - <<'PY' import zipfile with zipfile.ZipFile("om-tools.vsix") as archive: - names = set(archive.namelist()) + # vsce normalises doc filenames (README.md -> readme.md, + # LICENSE -> LICENSE.txt), so compare case-insensitively. + names = {n.lower() for n in archive.namelist()} required = { "extension/package.json", "extension/dist/extension.js", "extension/dist/webview.js", "extension/dist/index.html", - "extension/README.md", - "extension/LICENSE", } missing = required - names + if not any(n.startswith("extension/readme") for n in names): + missing.add("extension/README.md (any case)") + if not any(n.startswith("extension/license") for n in names): + missing.add("extension/LICENSE (any name/case)") if missing: raise SystemExit(f"Missing VSIX files: {sorted(missing)}") forbidden = [n for n in names if n.startswith((