Skip to content

ci: add offline nppPluginList submission lint + zip-root guard#20

Merged
chtaylo3 merged 1 commit into
mainfrom
ci/npppluginlist-validation
Jun 19, 2026
Merged

ci: add offline nppPluginList submission lint + zip-root guard#20
chtaylo3 merged 1 commit into
mainfrom
ci/npppluginlist-validation

Conversation

@chtaylo3

Copy link
Copy Markdown
Owner

What

Adds an offline pre-flight for the eventual nppPluginList submission, plus a packaging guard. No live upstream validator is run (it needs a published asset URL and validates the whole list); the authoritative validator still runs on the upstream PR.

Changes

  • packaging/npppluginlist/ — vendored pl.schema, ready-to-paste entry.x64.json / entry.x86.json, and a README with the per-release refresh steps.
  • scripts/validate-npppluginlist.py — stdlib-only checker (faithful Python regex engine, matching upstream). Validates each entry against the vendored schema and asserts folder-name == FixParser and the repository URL matches the entry's version/arch. Warns (does not fail) on the placeholder id or a version trailing the release manifest, so it never blocks a release PR.
  • ci.yml — new offline nppPluginList entry lint job (ubuntu, no build/network).
  • package.ps1Assert-RootDll fails the release if the root-layout zip ever loses FixParser.dll from its root (the layout Plugins Admin requires).
  • .gitignore — ignore Python __pycache__.

Notes

  • Branched fresh off main (0.1.3); the stale ci/auto-close-duplicate-release-pr branch's only commit already landed via ci: auto-close duplicate release PR + docs + Release-As 0.1.3 #18.
  • Verified locally: validator passes (2 expected placeholder warnings) and catches prerelease versions, missing fields, bad id, and invalid homepage.

🤖 Generated with Claude Code

Pre-flight the eventual nppPluginList submission so mistakes surface in our
CI instead of in the upstream PR, without running the live upstream validator
(which needs a published asset URL and validates the whole list).

- packaging/npppluginlist/: vendored pl.schema + ready-to-paste x64/Win32
  entry objects + README documenting the per-release refresh steps.
- scripts/validate-npppluginlist.py: stdlib-only checker that validates each
  entry against the vendored schema (faithful Python regex engine) and asserts
  folder-name == DLL base name and the repository URL matches the entry's
  version/arch. Warns (does not fail) on placeholder id / version trailing the
  release manifest.
- ci.yml: new offline "nppPluginList entry lint" job (ubuntu, no build/network).
- package.ps1: Assert-RootDll fails the release if the root-layout zip ever
  loses FixParser.dll from its root (the layout Plugins Admin requires).
- .gitignore: ignore Python __pycache__.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@chtaylo3 chtaylo3 merged commit 777e34d into main Jun 19, 2026
8 checks passed
@chtaylo3 chtaylo3 deleted the ci/npppluginlist-validation branch June 19, 2026 20:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant